From 687de5e599aabf134badf8bebe4be6cffcbabbbc Mon Sep 17 00:00:00 2001 From: JiangSheng Date: Mon, 10 Nov 2025 10:21:03 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E5=B7=A5=E5=86=B5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../condition/components/addApproveUsers.vue | 4 + .../condition/components/taskPool.vue | 107 +++++++++++++++++- 2 files changed, 108 insertions(+), 3 deletions(-) diff --git a/src/views/competenceCenter/condition/components/addApproveUsers.vue b/src/views/competenceCenter/condition/components/addApproveUsers.vue index 1ebc6c3..e438c43 100644 --- a/src/views/competenceCenter/condition/components/addApproveUsers.vue +++ b/src/views/competenceCenter/condition/components/addApproveUsers.vue @@ -21,6 +21,7 @@ @@ -118,6 +119,9 @@ const onShowFun = () => { form.versionType = 0; }; }; +const onApproveChangeFun = (data:any) => { + form.approveTemplateName = data.label; +}; const resetFun = () => { if (!formRef.value) { return; diff --git a/src/views/competenceCenter/condition/components/taskPool.vue b/src/views/competenceCenter/condition/components/taskPool.vue index d732733..d147dc4 100644 --- a/src/views/competenceCenter/condition/components/taskPool.vue +++ b/src/views/competenceCenter/condition/components/taskPool.vue @@ -91,8 +91,25 @@ - - + + import { computed, nextTick, onMounted, ref, type Ref } from 'vue'; import { ElMessageBox, ElMessage } from 'element-plus'; -import { cloneDeep, groupBy } from 'lodash-es'; +import { cloneDeep, groupBy, isEqual } from 'lodash-es'; import { onBeforeRouteLeave, useRouter } from 'vue-router'; import loadcaseProTable from '@/components/loadCaseTable/commonTable/loadcaseProTable.vue'; import loadCaseTable from '@/components/common/treeCaseTable/loadCaseTable.vue'; @@ -341,6 +358,7 @@ const refreshData = async (callback?: any) => { }; const treeTableRef = ref(); +const listTableRef = ref(); const getVxeRef = () => { return treeTableRef?.value?.loadcaseTableRef?.TreeTableRef?.treeTableRef; }; @@ -407,6 +425,7 @@ const createTaskPoolFun = async (formData: any) => { nodes: pickedNodes, bApprove: formData.bApprove, approveTemplateId: formData.approveTemplateId, + approveTemplateName: formData.approveTemplateName, }; const res: any = await createTaskPoolApi(req); if (res.code === 200) { @@ -419,6 +438,7 @@ const updateTaskPoolFun = async (formData: any) => { const req = { bApprove: formData.bApprove, approveTemplateId: formData.approveTemplateId, + approveTemplateName: formData.approveTemplateName, bNewVersion: formData.bNewVersion, versionType: formData.versionType, poolBrief: { @@ -744,7 +764,12 @@ const queryTaskPoolFun = async () => { tableData.value = tree; isEmptyPool.value = false; extractTableData.value = extractLeafNodesWithParentTypes(res.data.nodes); + const vxeInstance = listTableRef?.value?.loadcaseTableRef?.TreeTableRef?.treeTableRef; + const mergeCells = calcMergeCellsFun(extractTableData.value); + console.log('extractTableData.value', extractTableData.value); + console.log('mergeCells', mergeCells); nextTick(() => { + vxeInstance.setMergeCells(mergeCells); // treeTableRef.value?.changeLevel('全部展开'); }); } else { @@ -753,6 +778,82 @@ const queryTaskPoolFun = async () => { } }; +const calcMergeCellsFun = (tableData: any) => { + const mergeCells: any[] = []; + if (!Array.isArray(tableData) || tableData.length === 0) return mergeCells; + + const excludeFields = ['performanceName', 'operation', '_X_ROW_KEY', '_X_ROW_CHILD']; + const isEmpty = (v: any) => v === null || v === undefined || v === ''; + + const vxeInstance = listTableRef?.value?.loadcaseTableRef?.TreeTableRef?.treeTableRef; + let columnOrder: string[] = []; + try { + if (vxeInstance && typeof vxeInstance.getColumns === 'function') { + const cols = vxeInstance.getColumns() || []; + columnOrder = cols + .map((c: any) => c.property || c.field || c.dataIndex || '') + .filter((f: string) => !!f); + } + } catch (e) { + console.error('e', e); + + } + + const compCols = + Array.isArray(tableColumns?.value) && tableColumns.value.length > 0 + ? tableColumns.value.map((c: any) => c.field || c.dataIndex || c.key).filter(Boolean) + : []; + const rowKeys = Object.keys(tableData[0] || {}); + const fullOrder = columnOrder.length > 0 ? columnOrder : compCols.length > 0 ? compCols : rowKeys; + + const fields = fullOrder.filter((f) => !!f && !excludeFields.includes(f)); + + const valuesEqual = (a: any, b: any) => { + if (isEmpty(a) || isEmpty(b)) return false; + if (typeof a === 'object' || typeof b === 'object') { + return isEqual(a, b); + } + return String(a).trim() === String(b).trim(); + }; + + const fieldToColIndex = new Map(); + fullOrder.forEach((f, idx) => { + if (!f) return; + if (!excludeFields.includes(f) && tableData[0] && Object.prototype.hasOwnProperty.call(tableData[0], f)) { + fieldToColIndex.set(f, idx); + } + }); + + fields.forEach((field) => { + const colIdxInFull = fieldToColIndex.has(field) ? fieldToColIndex.get(field)! : -1; + if (colIdxInFull === -1) return; + + let start = 0; + let startVal = tableData[0][field]; + + for (let i = 1; i <= tableData.length; i++) { + const curr = i < tableData.length ? tableData[i][field] : undefined; + const equal = i < tableData.length && valuesEqual(startVal, curr); + + if (!equal) { + const rowspan = i - start; + if (rowspan > 1 && !isEmpty(startVal)) { + mergeCells.push({ + row: start + 1, + col: colIdxInFull + 1, + rowspan, + colspan: 1, + }); + } + start = i; + startVal = curr; + } + } + }); + + return mergeCells; +}; + const queryTaskPoolPerformanceFun = async () => { performanceLoading.value = true; const req = { From e8403e71fb5d7f7ec36aadcf12242a9dee4ee5f2 Mon Sep 17 00:00:00 2001 From: zhouyang Date: Mon, 10 Nov 2025 10:22:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update:=E6=95=B0=E6=8D=AE=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=95=8C=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/documentManagement/index.vue | 15 + .../components/storageStatistics/index.vue | 393 ++++++++++++++++-- 2 files changed, 362 insertions(+), 46 deletions(-) diff --git a/src/views/data/storage/components/documentManagement/index.vue b/src/views/data/storage/components/documentManagement/index.vue index bf97526..39d275d 100644 --- a/src/views/data/storage/components/documentManagement/index.vue +++ b/src/views/data/storage/components/documentManagement/index.vue @@ -44,6 +44,10 @@ + + @@ -98,6 +102,17 @@ const deleteFileBatchFn = async () => { }; +const deleteFileFn = async (row:any) => { + const param = [row.id]; + + const res:any = await batchDeleteBigFileApi(param); + if (res && res.code === 200) { + ElMessage.success('删除成功'); + searchFn(); + } + +}; +