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