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 = {
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();
+ }
+
+};
+