From fb3bffbb0ff21e8baaf20b25e81672edb8f11cfb Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期一, 23 九月 2024 14:46:22 +0800
Subject: [PATCH] 指标管理添加三个字段

---
 src/views/project/yw/systemManage/metricMgr/MetricMgr.vue |  258 ++++++++++++---------------------------------------
 1 files changed, 62 insertions(+), 196 deletions(-)

diff --git a/src/views/project/yw/systemManage/metricMgr/MetricMgr.vue b/src/views/project/yw/systemManage/metricMgr/MetricMgr.vue
index 2d8895b..624f8da 100644
--- a/src/views/project/yw/systemManage/metricMgr/MetricMgr.vue
+++ b/src/views/project/yw/systemManage/metricMgr/MetricMgr.vue
@@ -2,8 +2,8 @@
 	<HMContainer type="card">
 		<template #header>
 			<el-form ref="queryFormRef" :inline="true" :model="queryParams">
-				<el-form-item label="鏍囬" prop="title">
-					<el-input v-model="queryParams.title" style="width: 226.4px" placeholder="鏍囬" clearable />
+				<el-form-item label="鍚嶇О" prop="title">
+					<el-input v-model="queryParams.title" style="width: 226.4px" placeholder="鍚嶇О" clearable />
 				</el-form-item>
 
 				<el-form-item>
@@ -16,6 +16,7 @@
 		<template #main>
 			<div class="h-full" ref="chatDragContainerRef">
 				<el-table
+					:span-method="objectSpanMethod"
 					v-loading="tableLoading"
 					ref="draggableTableRef"
 					class="h100"
@@ -23,78 +24,22 @@
 					:row-class-name="isDragStatus ? 'cursor-move' : 'cursor-pointer'"
 					:data="displayTableData"
 					highlight-current-row
+					:headerCellStyle="{ backgroundColor: 'var(--el-table-header-bg-color)' }"
 				>
-					<el-table-column type="expand" fixed="left">
-						<template #default="scope">
-							<div class="ml-16">
-								<h3 >鎸囨爣椤甸潰</h3>
-								<div v-if="scope.row.supervisor">
-									<div class="py-3">椤甸潰鎻愮ず璇嶏細<span class="">{{scope.row.supervisor.prompt}}</span></div>
-									<el-table class="w-2/3 " :data="scope.row.supervisor.args" border>
-										<el-table-column prop="name" label="鍚嶇О" show-overflow-tooltip>
-											
-										</el-table-column>
-										<el-table-column prop="prompt" label="鍙傛暟鎻愮ず璇�" show-overflow-tooltip>
-											
-										</el-table-column>
-										<el-table-column prop="check" label="缂虹渷鍊�" show-overflow-tooltip>
-											
-										</el-table-column>
-										
-									</el-table>
-								</div>
-							</div>
-						</template>
-					</el-table-column>
-					-->
-					<el-table-column prop="title" label="鏍囬" width="300" fixed="left" show-overflow-tooltip> </el-table-column>
+					<el-table-column prop="title" label="鍚嶇О" width="120" fixed="left" show-overflow-tooltip> </el-table-column>
+					<el-table-column prop="full_name" label="鍏ㄧО" width="170" show-overflow-tooltip> </el-table-column>
+					<el-table-column prop="metric_define" label="瀹氫箟"  show-overflow-tooltip> </el-table-column>
+					<el-table-column prop="calcu_method" label="璁$畻鏂规硶" width="120" show-overflow-tooltip> </el-table-column>
 
-					<el-table-column label="鍒涘缓浜�" prop="creator" width="100" show-overflow-tooltip> </el-table-column>
-					<el-table-column label="鍒涘缓鏃堕棿" prop="create_time" width="105" show-overflow-tooltip> </el-table-column>
-
-					<el-table-column label="鍙戝竷鐘舵��" prop="published" width="85" show-overflow-tooltip>
-						<template #default="scope">
-							<el-tag :type="scope.row.published === SupervisorPublished.Y ? 'primary' : 'info'">{{
-								supervisorPublishedMap[scope.row.published]
-							}}</el-tag>
-						</template>
+					<el-table-column label="缁村害" prop="dimension" show-overflow-tooltip>
+						<el-table-column label="鍚嶇О" width="100" prop="dimension.title" show-overflow-tooltip> </el-table-column>
+						<el-table-column label="绫诲瀷" width="95" prop="dimension.type" show-overflow-tooltip> </el-table-column>
 					</el-table-column>
 
-					<el-table-column label="澶囨敞" prop="note" show-overflow-tooltip> </el-table-column>
 					<el-table-column label="鎿嶄綔" width="200" fixed="right" show-overflow-tooltip>
 						<template #default="scope">
 							<div class="space-x-3 items-center flex">
-								<el-tooltip effect="dark" content="鏌ョ湅鎻愮ず璇�" placement="top">
-									<i class="ywifont ywicon-tishici !text-[21px] text-blue-400 cursor-pointer" @click="openCopyPrompt(scope.row)"></i>
-								</el-tooltip>
-								<el-tooltip effect="dark" content="鏌ョ湅鎸囨爣鍚嶇О" placement="top">
-									<i class="ywifont ywicon-zhibiao !text-[17px] text-blue-400 cursor-pointer" @click="openMetricNameDlg(scope.row)"></i>
-								</el-tooltip>
-
-								<el-tooltip effect="dark" content="瀵硅瘽娴嬭瘯" placement="top">
-									<i class="ywifont ywicon-ceshi !text-[20px] text-blue-400 cursor-pointer" @click="openChatTest(scope.row)"></i>
-								</el-tooltip>
-
-								<!-- <el-tooltip
-									effect="dark"
-									:content="scope.row.published === SupervisorPublished.Y ? '鍙栨秷鍙戝竷' : '鍙戝竷'"
-									placement="top"
-								>
-									<i
-										class="ywifont !text-[20px] cursor-pointer"
-										:class="[
-											scope.row.published === SupervisorPublished.Y ? 'ywicon-quxiaofabu text-red-400' : 'ywicon-fabu text-blue-400',
-										]"
-										@click="
-											publishStatusChange(
-												scope.row.published === SupervisorPublished.Y ? SupervisorPublished.N : SupervisorPublished.Y,
-												scope.row.id,
-												scope.$index
-											)
-										"
-									></i>
-								</el-tooltip>
-								<el-tooltip effect="dark" content="缂栬緫" placement="top">
+								<!-- <el-tooltip effect="dark" content="缂栬緫" placement="top">
 									<i class="ywifont ywicon-bianji !text-[15px] text-blue-400 cursor-pointer" @click="openOptDlg(scope.row)"></i>
 								</el-tooltip>
 								<el-tooltip effect="dark" content="鍒犻櫎" placement="top">
@@ -114,70 +59,59 @@
 						</template>
 					</el-table-column>
 				</el-table>
-				<div
-					v-if="chatTestIsShow"
-					ref="draggableChatRef"
-					:style="style"
-					class="fixed z-50 w-[700px] h-[800px] flex flex-col bg-[rgb(239,244,253)] right-0 bottom-0 rounded-lg"
-				>
-					<div ref="chatDragHandlerRef" class="flex-0">
-						<div class="flex items-center justify-between py-2 px-4">
-							<div class="font-bold cursor-move">
-								WI姘村姟鏅鸿兘绠″鈥斺�斻�恵{ chatTestMapRow?.title }}銆戞祴璇�
-								<!-- <img src="/static/images/logo/logo-mini.svg" width="10" height="10" /> -->
-							</div>
-							<i class="ywifont ywicon-guanbi font-[10px] font-bold cursor-pointer" @click="closeChatTest"></i>
-						</div>
-					</div>
-					<Chat ref="chatRef" class="flex-auto px-2" :questionApi="questionAi"> </Chat>
-				</div>
 			</div>
 		</template>
 
 		<!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :groupId="currentListID"></OptDlg> -->
-		<MetricPrompt v-model="infoDlgIsShow" :metricItem="infoDlgMapRow"></MetricPrompt>
-		<MetricName v-model="metricNameIsShow" :metricItem="metricNameMapRow"></MetricName>
+		<!-- <MetricPrompt v-model="infoDlgIsShow" :metricItem="infoDlgMapRow"></MetricPrompt>
+		<MetricName v-model="metricNameIsShow" :metricItem="metricNameMapRow"></MetricName> -->
 	</HMContainer>
 </template>
 
 <script setup lang="ts">
-import { useDraggable } from '@vueuse/core';
-import { deleteCurrentRow } from '/@/utils/util';
-
 import { onMounted, ref } from 'vue';
 import { usePageDisplay } from '/@/hooks/usePageDisplay';
 import { useQueryTable } from '/@/hooks/useQueryTable';
 // import { useTableSort } from '/@/hooks/useTableSort';
 // import { useValidateUniqueness } from '/@/hooks/useValidateUniqueness';
-import { ElMessage } from 'element-plus';
-import { nextTick } from 'vue';
-import OptDlg from './optDlg/OptDlg.vue';
 import * as metricApi from '/@/api/metric';
-import { checkSupervisorValidate, updatePublishStatus } from '/@/api/supervisorAdmin';
-import Chat from '/@/components/chat/Chat.vue';
-import { gotoRoute } from '/@/utils/route';
-import { useCompRef } from '/@/utils/types';
 
-import axios, { CancelTokenSource } from 'axios';
+import { SupervisorPublished } from '../../lowCode/sqlAmis/types';
 import HMContainer from '/@/components/layout/HMContainer.vue';
-import { useUpdateData } from '/@/hooks/useUpdateData';
-import { SupervisorPublished, supervisorPublishedMap } from '../../lowCode/sqlAmis/types';
-import MetricPrompt from './optDlg/MetricPrompt.vue';
-import MetricName from './optDlg/MetricName.vue';
+import _ from 'lodash';
 
+const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
+	if (columnIndex === 0) {
+		return {
+			rowspan: row.rowspan,
+			colspan: 1,
+		};
+	}
+};
+
+const parseData = (data: any[]) => {
+	const finalData = (data ?? []).reduce((pre, cur) => {
+		const dimensions = cur.dimensions;
+		pre.push(
+			...dimensions.map((item, index) => ({
+				..._.omit(cur, 'dimensions'),
+				id: cur.id + '_dimension_' + item.id,
+				dimension: item,
+				rowspan: index === 0 ? dimensions.length : undefined,
+			}))
+		);
+		return pre;
+	}, []);
+	return finalData;
+};
 //#region ====================== 琛ㄦ牸鏁版嵁锛宼able init ======================
 const tableLoading = ref(false);
 const tableData = ref([]);
 const isDragStatus = ref(false);
-const allTableData = ref(null);
 const getTableData = async () => {
-	const res = await metricApi.getMetricAgentListByPost();
-	allTableData.value = (res.values || []).map((item) => {
-		item.create_time = item.create_time?.slice(0, 10);
-		
-		return item;
-	});
-	tableData.value = res?.values ?? [];
+	const res = await metricApi.getMetricNameListByPost();
+
+	tableData.value = parseData(res?.values ?? []);
 };
 //#endregion
 
@@ -239,79 +173,27 @@
 	}
 };
 //#region ====================== 鏀瑰彉鍙戝竷鐘舵�� ======================
-const publishStatusChange = async (published: SupervisorPublished, id, index) => {
-	const res = await updatePublishStatus(
-		{
-			id: id,
-			publish: published,
-		},
-		{
-			loading: false,
-		}
-	);
-	const origin = published === SupervisorPublished.Y ? SupervisorPublished.N : SupervisorPublished.Y;
-	const final = res.publish ?? origin;
-	if (final === origin) {
-		ElMessage.warning('鎿嶄綔澶辫触' + (res.fail_msg ? `锛�${res.fail_msg}` : ''));
-		return;
-	}
+// const publishStatusChange = async (published: SupervisorPublished, id, index) => {
+// 	const res = await updatePublishStatus(
+// 		{
+// 			id: id,
+// 			publish: published,
+// 		},
+// 		{
+// 			loading: false,
+// 		}
+// 	);
+// 	const origin = published === SupervisorPublished.Y ? SupervisorPublished.N : SupervisorPublished.Y;
+// 	const final = res.publish ?? origin;
+// 	if (final === origin) {
+// 		ElMessage.warning('鎿嶄綔澶辫触' + (res.fail_msg ? `锛�${res.fail_msg}` : ''));
+// 		return;
+// 	}
 
-	tableData.value[index].published = final;
+// 	tableData.value[index].published = final;
 
-	published === SupervisorPublished.Y ? ElMessage.success('鍙戝竷鎴愬姛') : ElMessage.info('宸插彇娑堝彂甯�');
-};
-//#endregion
-
-//#region ====================== Chat 娴嬭瘯 ======================
-
-const chatRef = useCompRef(Chat);
-const chatTestMapRow = ref(null);
-const chatTestIsShow = ref(false);
-const openChatTest = (row) => {
-	chatTestMapRow.value = row;
-	chatTestIsShow.value = true;
-
-	nextTick(() => {
-		chatRef.value.clear();
-		setTimeout(() => {
-			chatRef.value.autoSend(row.metric_prompt);
-		}, 30);
-	});
-};
-
-const closeChatTest = () => {
-	chatTestMapRow.value = null;
-	chatTestIsShow.value = false;
-};
-
-const draggableChatRef = ref<HTMLElement | null>(null);
-const chatDragHandlerRef = ref<HTMLDivElement>(null);
-const chatDragContainerRef = ref<HTMLDivElement>(null);
-
-// `style` will be a helper computed for `left: ?px; top: ?px;`
-const { x, y, style } = useDraggable(draggableChatRef, {
-	handle: chatDragHandlerRef,
-	initialValue: {
-		x: document.body.clientWidth / 2 - 350,
-		y: document.body.clientHeight / 2 - 400,
-	},
-});
-
-const questionAi = async (text, sourceObj: { source: CancelTokenSource }) => {
-	const currentSource = axios.CancelToken.source();
-	sourceObj.source = currentSource;
-	const res = await metricApi.checkMetricAgentValidateByPost(
-		{
-			agent_id: chatTestMapRow.value.id,
-			question: text,
-		},
-		{
-			loading: false,
-			cancelToken: currentSource.token,
-		}
-	);
-	return res;
-};
+// 	published === SupervisorPublished.Y ? ElMessage.success('鍙戝竷鎴愬姛') : ElMessage.info('宸插彇娑堝彂甯�');
+// };
 //#endregion
 
 //#region ====================== 鏇存柊鍙戝竷鐘舵�� ======================
@@ -321,22 +203,6 @@
 // 		updatePublishedById(id, published);
 // 	},
 // });
-//#endregion
-//#region ====================== prompt鏌ョ湅 ======================
-const infoDlgIsShow = ref(false);
-const infoDlgMapRow = ref([]);
-const openCopyPrompt = (row) => {
-	infoDlgMapRow.value = row;
-	infoDlgIsShow.value = true;
-};
-//#endregion
-//#region ====================== 鎸囨爣鍚嶇О鍒楄〃鏌ョ湅 ======================
-const metricNameIsShow = ref(false);
-const metricNameMapRow = ref([]);
-const openMetricNameDlg = (row) => {
-	metricNameMapRow.value = row;
-	metricNameIsShow.value = true;
-};
 //#endregion
 onMounted(() => {
 	getTableData();

--
Gitblit v1.9.3