From ec3711218f166f5e7927fd577b8a2db9776e66e9 Mon Sep 17 00:00:00 2001 From: yangyin <1850366751@qq.com> Date: 星期五, 15 十一月 2024 13:42:27 +0800 Subject: [PATCH] 部门管理父级不能选择自己 --- src/views/project/yw/systemManage/metricMgr/MetricDetail.vue | 74 ++++++++++++++++++++++++++++++++++-- 1 files changed, 69 insertions(+), 5 deletions(-) diff --git a/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue b/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue index 8cb0472..0996496 100644 --- a/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue +++ b/src/views/project/yw/systemManage/metricMgr/MetricDetail.vue @@ -86,6 +86,10 @@ </div> </div> </el-tab-pane> + <el-tab-pane label="鎸囨爣鍥捐氨" name="metricGraph" class="h-full"> + <div class="h-full"> + <TreeGraph v-if="graphData" :data="graphData" class="h-full" :maxCount="maxCount" /></div + ></el-tab-pane> </el-tabs> </div> <div class="list_btn" @click="handleExitFlow"> @@ -199,13 +203,15 @@ import TimeRange from '/@/components/chat/chatComponents/summaryCom/components/recordSet/components/TimeRange.vue'; import { formatTime, getDefaultPeriod } from '/@/utils/istation/common.js'; import { eMetrics_Ops } from '/@/views/types/metrics'; +import TreeGraph from '/@/components/graph/treeGraph/TreeGraph.vue'; import { FormRules } from 'element-plus/es/components/form/src/types'; +import _, { debounce } from 'lodash'; import { computed } from 'vue'; import SummaryCom from './components/SummaryCom.vue'; import { chatMetricsJsonByPost } from '/@/api/metrics'; -import _, { debounce } from 'lodash'; import { useCompRef } from '/@/utils/types'; +import { OrgTreeItem } from '../agentGraph/types'; const defaultTime = ref<[Date, Date]>([new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)]); const router = useRouter(); const route = useRoute(); @@ -216,7 +222,7 @@ name: '', id: '', } as any, - activeMetricName: 'indicatorExploration', + activeMetricName: 'basicInformation', metricBasicInfo: { descriptionQuotaItems: {}, } as any, @@ -274,7 +280,7 @@ }); }; //#endregion -//#region ====================== 鎸囨爣鎺㈢储鏌ヨ ====================== +//#region ====================== 鎸囨爣鍥捐氨鏌ヨ ====================== // 鏃堕棿闄愬埗 const disablesDate = (time) => { return time.getTime() > new Date().getTime(); @@ -409,10 +415,15 @@ }); } state.activeMetricName = val; + if (val === 'metricGraph') { + if (!graphData.value) { + getGraphTreeData(); + } + } }; //#endregion -//#region ====================== 鎸囨爣鎺㈢储 ====================== +//#region ====================== 鎸囨爣鍥捐氨 ====================== const filterDimList = computed( () => currentMetrics?.value?.dimensions ?? [].filter((item) => item.filter_type === 'str_eq' && item.type === '瀛楃涓�') @@ -428,7 +439,7 @@ groupDimList: [], }); -const currentMetricsId = computed(() => router.currentRoute.value.query.id); +const currentMetricsId = computed(() => router.currentRoute.value.query.id as string); const querySummaryData = ref([]); const queryLoading = ref(false); /** @@ -470,6 +481,59 @@ //#endregion +//#region ====================== 鎸囨爣鍥捐氨 ====================== + +const maxCount = ref(null); +const graphData = ref(null); +const convertOrgTreeToTreeNode = (orgTreeData: OrgTreeItem) => { + const treeData = { + id: orgTreeData.treeId, + label: orgTreeData.label, + data: orgTreeData, + children: orgTreeData.children?.length > 0 ? orgTreeData.children.map((item) => convertOrgTreeToTreeNode(item)) : [], + }; + return treeData; +}; +const getGraphTreeData = () => { + if (!currentMetricsId.value) return; + /** @description 缁村害鏁伴噺 */ + let dimensionCount = 0; + /** @description 鎸囨爣鏁伴噺 */ + let metricsCount = 1; + + const metricsTreeId = `metrics-${currentMetricsId.value}`; + const dimensionList = currentMetrics.value.dimensions ?? []; + dimensionCount = dimensionList.length; + let logicTree: OrgTreeItem = { + treeId: metricsTreeId, + logicId: currentMetricsId.value, + type: 'metrics', + + model: currentMetrics.value, + get label() { + return this.model.title; + }, + level: 0, + children: dimensionList.map((item) => { + const dimensionTreeId = `${metricsTreeId}-dimension-${item.id}`; + return { + treeId: dimensionTreeId, + logicId: item.id, + type: 'dimension', + model: item, + get label() { + return this.model.title; + }, + level: 1, + }; + }), + }; + const resData = logicTree; + maxCount.value = Math.max(dimensionCount, metricsCount); + graphData.value = convertOrgTreeToTreeNode(resData); +}; +//#endregion + onMounted(() => { const { id } = route.query; query(true); -- Gitblit v1.9.3