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