From 80027fbd46f4db0a23fcbcf6b13c52231f162b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=B4=AA=E6=B4=AA?= <2498601771@qq.com> Date: Thu, 4 Jan 2024 16:39:39 +0800 Subject: [PATCH] =?UTF-8?q?CN-1540=20fix:=20=E6=8F=90=E5=8F=96Tag=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=E9=80=BB=E8=BE=91=E5=85=AC=E5=85=B1=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/tools.js | 86 ++++++++++++++++++- .../entityDetail/EntityDetailBasicInfo.vue | 31 +------ .../charts/entityDetail/EntityDetailTabs.vue | 35 +------- .../tabs/InformationAggregation.vue | 38 +------- src/views/entityExplorer/entityGraph/node.js | 38 +------- src/views/entityExplorer/entityList/Row.vue | 31 +------ 6 files changed, 100 insertions(+), 159 deletions(-) diff --git a/src/utils/tools.js b/src/utils/tools.js index 8d9d96b8..fcad6ad6 100644 --- a/src/utils/tools.js +++ b/src/utils/tools.js @@ -1,7 +1,19 @@ import { ElMessageBox, ElMessage } from 'element-plus' import i18n from '@/i18n' import _ from 'lodash' -import { storageKey, iso36112, topDomain, echartsFontSize, dbGeoDataTableName, networkTable, dbDrilldownTableConfig, ZH, EN, securityLevel } from '@/utils/constants' +import { + storageKey, + iso36112, + topDomain, + echartsFontSize, + dbGeoDataTableName, + networkTable, + dbDrilldownTableConfig, + ZH, + EN, + securityLevel, + entityDetailTags, entityDefaultColor, tagValueLabelMapping +} from '@/utils/constants' import { getIso36112JsonData, getDictList } from '@/utils/api' import { format } from 'echarts' import router from '@/router' @@ -1481,3 +1493,75 @@ export const changeTimestampToTime = (timestamp) => { return '-' } } + +/** + * 规范实体的tag展示 + */ +export const formatTags = (data, type, list) => { + Object.keys(data).forEach(k => { + if (k !== 'userDefinedTags' && data[k]) { + if (_.isArray(data[k])) { + data[k].forEach(k3 => { + const find = entityDetailTags[type].find(t => t.name === k3.pluginName) + if (find) { + list.push({ key: 'pluginName', value: tagValueHandler(k3.pluginName), type: find.type }) + } else { + list.push({ key: 'pluginName', value: tagValueHandler(k3.pluginName), color: k3.knowledgeBase ? (k3.knowledgeBase.color || entityDefaultColor) : entityDefaultColor }) + } + }) + } else { + Object.keys(data[k]).forEach(k2 => { + const find = entityDetailTags[type].find(t => t.name === k2) + if (find) { + list.push({ key: k2, value: tagValueHandler(data[k][k2]), type: find.type }) + } + }) + } + } + }) +} + +/** + * 规范实体详情的tag展示 + */ +export const formatTagsOfDetails = (data, type, list) => { + data.forEach(r => { + Object.keys(r).forEach(k => { + const aggregation = { + createTime: r[k].createTime, + updateTime: r[k].updateTime, + status: r[k].isValid, + intelligenceContent: [] + } + if (k === 'userDefinedTag') { + aggregation.intelligenceContent.push({ key: k, value: r[k].tagValue, type: 'normal' }) + } else { + if (_.isArray(r[k])) { + r[k].forEach(k3 => { + const find = entityDetailTags[type].find(t => t.name === k3.pluginName) + if (find) { + aggregation.intelligenceContent.push({ key: 'pluginName', value: tagValueHandler(k3.pluginName), type: find.type }) + } else { + aggregation.intelligenceContent.push({ key: 'pluginName', value: tagValueHandler(k3.pluginName), color: k3.knowledgeBase ? (k3.knowledgeBase.color || entityDefaultColor) : entityDefaultColor }) + } + }) + } else { + Object.keys(r[k]).forEach(k2 => { + const find = entityDetailTags[type].find(t => t.name === k2) + if (find) { + aggregation.intelligenceContent.push({ key: k2, value: tagValueHandler(r[k][k2]), type: find.type }) + } + }) + } + } + if (aggregation.intelligenceContent.length > 0) { + list.push(aggregation) + } + }) + }) +} + +const tagValueHandler = (value) => { + const find = tagValueLabelMapping.find(t => t.value === value) + return find ? find.name : value +} diff --git a/src/views/charts2/charts/entityDetail/EntityDetailBasicInfo.vue b/src/views/charts2/charts/entityDetail/EntityDetailBasicInfo.vue index 2fc5b9c0..9346d3d4 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailBasicInfo.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailBasicInfo.vue @@ -65,13 +65,11 @@ import ChartError from '@/components/common/Error' import { drillDownPanelTypeMapping, entityType, - entityDetailTags, - tagValueLabelMapping, riskLevelMapping, entityDefaultColor, riskLevelColor1 } from '@/utils/constants' -import { selectElementText, copySelectionText, getTagColor } from '@/utils/tools' +import { selectElementText, copySelectionText, getTagColor, formatTags } from '@/utils/tools' import { ref } from 'vue' import i18n from '@/i18n' import { useRouter } from 'vue-router' @@ -127,10 +125,6 @@ export default { }, methods: { getTagColor, - tagValueHandler (value) { - const find = tagValueLabelMapping.find(t => t.value === value) - return find ? find.name : value - }, getData () { this.toggleLoading(true) this.showError = false @@ -151,28 +145,7 @@ export default { if (tagData) { const res = tagData.data if (tagData.status === 200) { - Object.keys(res.data).forEach(k => { - if (k !== 'userDefinedTags' && res.data[k]) { - // 此处是vpnLearningDomain/Ip/App的tag - if (_.isArray(res.data[k])) { - res.data[k].forEach(k3 => { - const find = entityDetailTags[this.entity.entityType].find(t => t.name === k3.pluginName) - if (find) { - this.levelTwoTags.push({ key: 'pluginName', value: this.tagValueHandler(k3.pluginName), type: find.type }) - } else { - this.levelTwoTags.push({ key: 'pluginName', value: this.tagValueHandler(k3.pluginName), color: k3.knowledgeBase ? (k3.knowledgeBase.color || entityDefaultColor) : entityDefaultColor }) - } - }) - } else { - Object.keys(res.data[k]).forEach(k2 => { - const find = entityDetailTags[this.entity.entityType].find(t => t.name === k2) - if (find) { - this.levelTwoTags.push({ key: k2, value: this.tagValueHandler(res.data[k][k2]), type: find.type }) - } - }) - } - } - }) + formatTags(res.data, this.entity.entityType, this.levelTwoTags) if (_.isArray(res.data.userDefinedTags)) { this.levelTwoTags = _.concat(this.levelTwoTags, res.data.userDefinedTags.map(tag => ({ value: tag.tagValue, color: tag.knowledgeBase ? tag.knowledgeBase.color : entityDefaultColor }))) } diff --git a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue index 0b123dde..d4163682 100644 --- a/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue +++ b/src/views/charts2/charts/entityDetail/EntityDetailTabs.vue @@ -30,8 +30,7 @@