From 0f01c4bbce19fa8489a4e835c83cb9415549f681 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期一, 17 二月 2025 17:54:22 +0800
Subject: [PATCH] 表单校验

---
 src/views/project/yw/lowCode/sqlAmis/SqlAmis.vue |   90 ++++++++++++++++++++++++++++++++++++--------
 1 files changed, 73 insertions(+), 17 deletions(-)

diff --git a/src/views/project/yw/lowCode/sqlAmis/SqlAmis.vue b/src/views/project/yw/lowCode/sqlAmis/SqlAmis.vue
index 3544210..9cdca4f 100644
--- a/src/views/project/yw/lowCode/sqlAmis/SqlAmis.vue
+++ b/src/views/project/yw/lowCode/sqlAmis/SqlAmis.vue
@@ -8,12 +8,13 @@
 				ref="leftTreeRef"
 				:defaultProps="{
 					id: 'group_id',
-					label: 'group_name',
+					label: 'label',
 					children: 'children',
 				}"
 				:treedata="listTreeData"
-				title-name="鍒嗙粍鍒楄〃"
+				title-name="鍦烘櫙鍒楄〃"
 				:show-more-operate="false"
+				defaultExpandAll
 				:show-add="false"
 				:current-node-key="currentListID"
 				:node-icon="() => 'ele-Document'"
@@ -24,11 +25,11 @@
 		<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-input v-model="queryParams.title" style="width: 226.4px" placeholder="鏍囬" clearable @input="debounceQueryTable" />
 				</el-form-item>
 
 				<el-form-item>
-					<el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 鏌ヨ </el-button>
+					<!-- <el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 鏌ヨ </el-button> -->
 					<el-button icon="ele-Refresh" @click="resetQuery">閲嶇疆 </el-button>
 					<el-button icon="ele-Plus" @click="openOptDlg()"> 娣诲姞 </el-button>
 				</el-form-item>
@@ -51,10 +52,12 @@
 					<template v-for="item in columnList" :key="item.prop">
 						<el-table-column
 							v-if="item.isShow ?? true"
+							:type="item.type"
 							:prop="item.prop"
 							:label="item.label"
 							:fixed="item.fixed"
 							:width="item.width"
+							:align="item.align"
 							showOverflowTooltip
 						>
 							<template #default="scope" v-if="item.prop === 'published'">
@@ -106,6 +109,7 @@
 													deleteCurrentRow(scope.row, '椤甸潰', supervisorAdminApi.deleteSupervisor, () => {
 														const foundIndex = tableData.findIndex((item) => item === scope.row);
 														foundIndex > -1 && tableData.splice(foundIndex, 1);
+														setCurrentLen(-1);
 													});
 												}
 											"
@@ -167,6 +171,7 @@
 							label: 'title',
 							children: 'children',
 						}"
+						defaultExpandAll
 						:data="parentSelectOptions"
 						node-key="id"
 						:clearable="true"
@@ -196,38 +201,40 @@
 
 <script setup lang="ts">
 import { useDraggable } from '@vueuse/core';
-import { deleteCurrentRow, travelTree } from '/@/utils/util';
+import { debounce, deleteCurrentRow, travelTree } from '/@/utils/util';
 
 import { computed, 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 type { CancelTokenSource } from 'axios';
+import axios from 'axios';
 import type { FormInstance, FormRules } from 'element-plus';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import { nextTick } from 'vue';
 import SqlAmisEdit from './edit/SqlAmisEdit.vue';
 import OptDlg from './optDlg/OptDlg.vue';
 import { SupervisorPublished, supervisorPublishedMap } from './types';
+import * as agentGroupApi from '/@/api/ai/agentGroup';
 import * as supervisorAdminApi from '/@/api/supervisorAdmin';
 import { checkSupervisorValidate, updatePublishStatus } from '/@/api/supervisorAdmin';
+import * as supervisorGroupApi from '/@/api/supervisorAdmin/supervisorGroup';
 import Chat from '/@/components/chat/Chat.vue';
+import AHMContainer from '/@/components/layout/AHMContainer.vue';
+import ColFilter from '/@/components/table/colFilter/ColFilter.vue';
+import type { TableCol } from '/@/components/table/colFilter/types';
+import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
+import { useUpdateData } from '/@/hooks/useUpdateData';
 import emitter from '/@/utils/mitt';
 import { deepClone } from '/@/utils/other';
 import { gotoRoute } from '/@/utils/route';
 import { useCompRef } from '/@/utils/types';
 import { convertListToTree } from '/@/utils/util';
-import * as agentGroupApi from '/@/api/ai/agentGroup';
-
-import axios, { CancelTokenSource } from 'axios';
-import * as supervisorGroupApi from '/@/api/supervisorAdmin/supervisorGroup';
-import AHMContainer from '/@/components/layout/AHMContainer.vue';
-import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
-import { useUpdateData } from '/@/hooks/useUpdateData';
-import ColFilter from '/@/components/table/colFilter/ColFilter.vue';
-import { TableCol } from '/@/components/table/colFilter/types';
+import { OptClassificationMap, classificationEnum } from '/@/views/types/metrics';
 
 const columnList = ref<TableCol[]>([
+	{ type: 'index', label: '搴忓彿', width: 55, fixed: 'left', align: 'center' },
 	{ prop: 'title', label: '鏍囬', width: 300, fixed: 'left' },
 	{ prop: 'published', label: '鍙戝竷鐘舵��', width: 85 },
 	{ prop: 'prompt', label: '鎻愮ず璇�', width: 300 },
@@ -238,6 +245,7 @@
 	{ prop: 'note', label: '澶囨敞' },
 	{ prop: 'operate', label: '鎿嶄綔', width: 200, fixed: 'right' },
 ]);
+
 //#region ====================== 宸︿晶鏍戞暟鎹紝tree init ======================
 const leftTreeRef = useCompRef(LeftTreeByMgr);
 const treeLoading = ref(false);
@@ -246,10 +254,19 @@
 const currentNode = ref(null);
 
 const listTreeData = computed(() => {
-	const result = convertListToTree(listData.value, {
+	const byParentData = convertListToTree(listData.value, {
 		ID: 'group_id',
 		ParentID: 'p_group_id',
 		Children: 'children',
+	});
+	const result = [];
+	byParentData.forEach((item) => {
+		if (
+			item.group_type != OptClassificationMap[classificationEnum.Office] &&
+			item.group_type != OptClassificationMap[classificationEnum.Knowledge]
+		) {
+			result.push(item);
+		}
 	});
 	return result;
 });
@@ -382,6 +399,38 @@
 //#endregion
 
 //#region ====================== 琛ㄦ牸鏁版嵁锛宼able init ======================
+
+const setCurrentLen = (offset: 1 | -1) => {
+	currentNode.value.label = `${currentNode.value.group_name} (${tableData.value.length})`;
+	const pId = currentNode.value.p_group_id;
+	if (pId) {
+		travelTree(listTreeData.value, (value) => {
+			if (value.group_id === pId) {
+				value.len += offset;
+				value.label = `${value.group_name} (${value.len})`;
+				return true;
+			}
+		});
+	}
+	// 淇敼鍚嶇О鍚庯紝涓嶇煡閬撲负浠�涔堜細澶卞幓 current 閫変腑
+	setTimeout(() => {
+		leftTreeRef.value?.treeRef.setCurrentKey(currentListID.value);
+	}, 0);
+};
+const setListLen = () => {
+	travelTree(listTreeData.value, (value, index, array, parent) => {
+		const id = value.group_id;
+		const len = allTableData.value.filter(
+			(item) => item.group_id === id || value.children?.some((treeItem) => treeItem.group_id === item.group_id)
+		).length;
+		value.len = len;
+		value.label = `${value.group_name} (${len})`;
+	});
+	// 淇敼鍚嶇О鍚庯紝涓嶇煡閬撲负浠�涔堜細澶卞幓 current 閫変腑
+	setTimeout(() => {
+		leftTreeRef.value?.treeRef.setCurrentKey(currentListID.value);
+	}, 0);
+};
 const tableLoading = ref(false);
 const tableData = ref([]);
 const isDragStatus = ref(false);
@@ -395,8 +444,12 @@
 
 			return item;
 		});
+		setListLen();
 	}
-	tableData.value = allTableData.value.filter((item) => item.group_id === currentListID.value);
+	tableData.value = allTableData.value.filter(
+		(item) =>
+			item.group_id === currentListID.value || currentNode.value.children?.some((treeItem) => treeItem.group_id === item.group_id)
+	);
 };
 //#endregion
 
@@ -408,7 +461,7 @@
 const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(tableData, queryParams, () => {
 	displayTableData.value = tableData.value;
 });
-
+const debounceQueryTable = debounce(handleQueryTable, 400);
 //#endregion
 
 //#region ====================== 鏌ヨ蹇嵎閿� ======================
@@ -465,6 +518,9 @@
 
 const insertOpt = (newData) => {
 	tableData.value.unshift({ ...newData, published: SupervisorPublished.N });
+	allTableData.value.unshift({ ...newData, published: SupervisorPublished.N });
+
+	setCurrentLen(1);
 };
 //#endregion
 

--
Gitblit v1.9.3