diff --git a/nezha-fronted/src/components/charts/line-chart-block.vue b/nezha-fronted/src/components/charts/line-chart-block.vue index 4aea1faf6..befb66efc 100644 --- a/nezha-fronted/src/components/charts/line-chart-block.vue +++ b/nezha-fronted/src/components/charts/line-chart-block.vue @@ -945,7 +945,7 @@ export default { delete option.yAxis.maxInterval } if (this.fromTopo) { - option.minInterval = 20 * 60 * 1000 + option.xAxis.minInterval = 20 * 60 * 1000 } // params.series = dataArg; if (chartSite === 'local') { // 本地显示 diff --git a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue index f6c6d9ddc..55cbe021c 100644 --- a/nezha-fronted/src/components/common/ChartDiagram/diagram.vue +++ b/nezha-fronted/src/components/common/ChartDiagram/diagram.vue @@ -349,6 +349,7 @@ const canvasOptions = { disableEmptyLine: true, autoExpandDistance: 0, minScale: 0.01 + // scaleKey: -1 } export default { name: 'diagram', @@ -1811,11 +1812,26 @@ export default { this.$axios .get(url) .then((res) => { - return { + const imageInfo = { data: ('data:image/jpeg;base64,' + res.data), - width: res.headers.width === -1 ? 100 : (res.headers.width > 900 ? 900 : res.headers.width), - height: res.headers.height === -1 ? 100 : (res.headers.height > 900 ? 900 : res.headers.height) + // width: res.headers.width === -1 ? 100 : (res.headers.width > 900 ? 900 : res.headers.width), + // height: res.headers.height === -1 ? 100 : (res.headers.height > 900 ? 900 : res.headers.height) + width: res.headers.width === -1 ? 100 : Number(res.headers.width), + height: res.headers.height === -1 ? 100 : Number(res.headers.height) } + if (imageInfo.width > 900 || imageInfo.height > 900) { + if (imageInfo.height > imageInfo.width) { + imageInfo.width = imageInfo.width * 900 / imageInfo.height + imageInfo.height = 900 + } else if (imageInfo.height < imageInfo.width) { + imageInfo.height = imageInfo.height * 900 / imageInfo.width + imageInfo.width = 900 + } else { + imageInfo.height = 900 + imageInfo.width = 900 + } + } + return imageInfo }) .then(data => { resolve(data) diff --git a/nezha-fronted/src/components/common/bottomBox/bottomBox.vue b/nezha-fronted/src/components/common/bottomBox/bottomBox.vue index 8d03f2662..2adf33b9c 100644 --- a/nezha-fronted/src/components/common/bottomBox/bottomBox.vue +++ b/nezha-fronted/src/components/common/bottomBox/bottomBox.vue @@ -40,6 +40,7 @@ + @@ -63,6 +64,7 @@ import cabinetTab from './tabs/cabinetTab' import alertMessageTab from './tabs/alertMessageTab' import alertMessageTabNew from './tabs/alertMessageTabNew' +import assetSubTab from './tabs/assetSubTab' import endpointQuery from './tabs/endpointQuery' import endpointTab from './tabs/endpointTab' import endpointTabNew from './tabs/endpointTabNew' @@ -90,7 +92,8 @@ export default { alertMessageTabNew, endpointQuery, panelTabNew, - assetTab + assetTab, + assetSubTab }, props: { isFullScreen: Boolean, // 是否全屏 @@ -98,7 +101,23 @@ export default { obj: Object, // 关联的实体对象 from: String, // 来自哪个页面 tabList: Array, // 动态页签列表 - targetTab: String, // 展示哪个页签 + targetTab: String // 展示哪个页签 + }, + watch: { + obj: { + immediate: true, + handler (n) { + console.log(n) + if ((this.from === fromRoute.asset) && n) { + if (n.childrenNum) { + const assetSub = { prop: 'assetSubTab', name: this.$t('overall.assetSubTab'), active: false } + this.tabs.asset.panel.push(assetSub) + this.tabs.asset.alertMessage.push(assetSub) + this.tabs.asset.endpoint.push(assetSub) + } + } + } + } }, data () { return { @@ -137,12 +156,18 @@ export default { alertMessage: [ { prop: 'panelTab', name: this.$t('overall.detail'), active: false }, { prop: 'alertMessageTab', name: this.$t('overall.alert'), active: true }, - { prop: 'endpointTab', name: 'Endpoint', active: false } + { prop: 'endpointTab', name: 'Endpoint', active: false }, ], endpoint: [ { prop: 'panelTab', name: this.$t('overall.detail'), active: false }, { prop: 'alertMessageTab', name: this.$t('overall.alert'), active: false }, - { prop: 'endpointTab', name: 'Endpoint', active: true } + { prop: 'endpointTab', name: 'Endpoint', active: true }, + ], + alertMessageSub: [ + { prop: 'panelTab', name: this.$t('overall.detail'), active: false }, + { prop: 'alertMessageTab', name: this.$t('overall.alert'), active: false }, + { prop: 'endpointTab', name: 'Endpoint', active: false }, + { prop: 'assetSubTab', name: this.$t('overall.assetSubTab'), active: true } ] }, module: { diff --git a/nezha-fronted/src/components/common/bottomBox/tabs/assetSubTab.vue b/nezha-fronted/src/components/common/bottomBox/tabs/assetSubTab.vue new file mode 100644 index 000000000..4d3ba25ae --- /dev/null +++ b/nezha-fronted/src/components/common/bottomBox/tabs/assetSubTab.vue @@ -0,0 +1,258 @@ + + + diff --git a/nezha-fronted/src/components/common/bottomBox/tabs/assetTab.vue b/nezha-fronted/src/components/common/bottomBox/tabs/assetTab.vue index f7dbb82e8..ad30687f6 100644 --- a/nezha-fronted/src/components/common/bottomBox/tabs/assetTab.vue +++ b/nezha-fronted/src/components/common/bottomBox/tabs/assetTab.vue @@ -238,6 +238,10 @@ export default { delete this.searchLabel.dcIds this.searchLabel.modelIds = n.id } + if (this.from === fromRoute.asset) { + delete this.searchLabel.dcIds + this.searchLabel.pids = n.id + } this.getTableData() } } diff --git a/nezha-fronted/src/components/common/language/cn.js b/nezha-fronted/src/components/common/language/cn.js index 75390a592..825f8e60a 100644 --- a/nezha-fronted/src/components/common/language/cn.js +++ b/nezha-fronted/src/components/common/language/cn.js @@ -124,6 +124,8 @@ const cn = { SyncSave: '保存同时更新 Assets', copySuccess: '复制成功', parent: '父级', + children: '子级', + assetSubTab: '子级 asset', moreOption: '更多选项', copy: '复制', silence: '静默', diff --git a/nezha-fronted/src/components/common/language/en.js b/nezha-fronted/src/components/common/language/en.js index 016a6f5a2..1fd574b55 100644 --- a/nezha-fronted/src/components/common/language/en.js +++ b/nezha-fronted/src/components/common/language/en.js @@ -128,6 +128,8 @@ const en = { SyncSave: 'Save&Sync', copySuccess: 'Copy success', parent: 'Parent', + children: 'Sub asset', + assetSubTab: 'Sub asset', dc: 'Data center', labels: 'Label', moreOption: 'More option', diff --git a/nezha-fronted/src/components/common/project/L5/services/canvas.js b/nezha-fronted/src/components/common/project/L5/services/canvas.js index 03addf18b..aeb478a96 100644 --- a/nezha-fronted/src/components/common/project/L5/services/canvas.js +++ b/nezha-fronted/src/components/common/project/L5/services/canvas.js @@ -208,7 +208,7 @@ export const imageTemp2 = { width: 100, height: 100 }, - imageRatio: true, + imageRatio: false, lineWidth: 0, rotate: 0, offsetRotate: 0, @@ -280,13 +280,12 @@ export function myIconRect2 (node) { node.fullIconRect = node.rect } export function myTextRect2 (node) { - // node.textRect = new Rect( - // node.rect.x + node.paddingLeft, - // node.rect.y + node.rect.height + 10, - // node.rect.width - (node.paddingLeft + node.paddingRight), - // 20 - // ) - node.textRect = {} + node.textRect = new Rect( + node.rect.x + node.paddingLeft, + node.rect.y + node.rect.height + 10, + node.rect.width - (node.paddingLeft + node.paddingRight), + 20 + ) node.fullTextRect = node.rect } /* 自定义图片组件 */ diff --git a/nezha-fronted/src/components/common/project/topologyL5.vue b/nezha-fronted/src/components/common/project/topologyL5.vue index 6becd93eb..52e098bab 100644 --- a/nezha-fronted/src/components/common/project/topologyL5.vue +++ b/nezha-fronted/src/components/common/project/topologyL5.vue @@ -363,7 +363,8 @@ const canvasOptions = { translateKey: 'None', disableEmptyLine: true, autoExpandDistance: 0, - minScale: 0.01 + minScale: 0.01, + scaleKey: -1 } export default { name: 'topologyL5', diff --git a/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue b/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue index 9abb951d2..16693da68 100644 --- a/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue +++ b/nezha-fronted/src/components/common/rightBox/asset/assetBox.vue @@ -369,7 +369,7 @@ export default { immediate: true, handler (n) { if (n.id) { - this.vmLock = n.vm === 1 // vm == 1 时,锁定model和location + // this.vmLock = n.vm === 1 // vm == 1 时,锁定model和location if (this.editAsset.id) { // 有id表示是修改asset,需要注意不要覆盖掉原有的port const oldPort = this.obj.authProtocolPort // 原有的port const oldAuthProtocol = this.obj.type.authProtocol // 原有的协议 diff --git a/nezha-fronted/src/components/common/table/asset/assetTable.vue b/nezha-fronted/src/components/common/table/asset/assetTable.vue index ea43c1ccb..80ac40087 100644 --- a/nezha-fronted/src/components/common/table/asset/assetTable.vue +++ b/nezha-fronted/src/components/common/table/asset/assetTable.vue @@ -58,6 +58,10 @@ +