|
@@ -212,27 +212,25 @@ const pager = ref({ page: 1, pageSize: 10, total: 0 });
|
|
|
let titleDebounceTimer: any = null;
|
|
let titleDebounceTimer: any = null;
|
|
|
|
|
|
|
|
// 已导入场景集合与辅助判断
|
|
// 已导入场景集合与辅助判断
|
|
|
-const importedKeySet = computed(() => {
|
|
|
|
|
- return scenes.value.length ? scenes.value.map(s => `${Number(s?.sceneType)}__${String(s?.num)}`) : [];
|
|
|
|
|
|
|
+const importedKeySet = computed(() =>
|
|
|
|
|
+{
|
|
|
|
|
+ const set = new Set<string>();
|
|
|
|
|
+ console.log(scenes.value, 'importedKeySet');
|
|
|
|
|
+ (scenes.value || []).forEach((s: any) => {
|
|
|
|
|
+ set.add(`${Number(s?.sceneType??s?.type)}__${String(s?.num)}`);
|
|
|
|
|
+ });
|
|
|
|
|
+ console.log(scenes.value, 'importedKeySet', set);
|
|
|
|
|
+ return scenes.value.length ? set : new Set<string>();
|
|
|
});
|
|
});
|
|
|
-// {
|
|
|
|
|
-// const set = new Set<string>();
|
|
|
|
|
-// console.log(scenes.value, 'importedKeySet');
|
|
|
|
|
-// (scenes.value || []).forEach((s: any) => {
|
|
|
|
|
-// set.add(`${Number(s?.sceneType)}__${String(s?.num)}`);
|
|
|
|
|
-// });
|
|
|
|
|
-// console.log(scenes.value, 'importedKeySet', set);
|
|
|
|
|
-// return set;
|
|
|
|
|
-// });
|
|
|
|
|
const selectedKeySet = computed(() => {
|
|
const selectedKeySet = computed(() => {
|
|
|
const set = new Set<string>();
|
|
const set = new Set<string>();
|
|
|
(selectedRows.value || []).forEach((r: any) => {
|
|
(selectedRows.value || []).forEach((r: any) => {
|
|
|
- set.add(`${Number(r?.type)}__${String(r?.num)}`);
|
|
|
|
|
|
|
+ set.add(`${Number(r?.sceneType??r?.type)}__${String(r?.num)}`);
|
|
|
});
|
|
});
|
|
|
return set;
|
|
return set;
|
|
|
});
|
|
});
|
|
|
const rowKey = (row: any) => `${Number(row?.type)}__${String(row?.num)}`;
|
|
const rowKey = (row: any) => `${Number(row?.type)}__${String(row?.num)}`;
|
|
|
-const isRowImported = (row: any) => importedKeySet.value.includes(rowKey(row));
|
|
|
|
|
|
|
+const isRowImported = (row: any) => importedKeySet.value.has(rowKey(row));
|
|
|
const isRowSelectable = (row: any) => row.status != 2 ? false : !isRowImported(row);
|
|
const isRowSelectable = (row: any) => row.status != 2 ? false : !isRowImported(row);
|
|
|
const rowClassName = ({ row }: { row: any }) => (isRowImported(row) ? 'is-imported-row' : '');
|
|
const rowClassName = ({ row }: { row: any }) => (isRowImported(row) ? 'is-imported-row' : '');
|
|
|
const preselectRows = () => {
|
|
const preselectRows = () => {
|
|
@@ -242,8 +240,8 @@ const preselectRows = () => {
|
|
|
tableRef.value?.clearSelection?.();
|
|
tableRef.value?.clearSelection?.();
|
|
|
(tableData.value || []).forEach((r: any) => {
|
|
(tableData.value || []).forEach((r: any) => {
|
|
|
const key = rowKey(r);
|
|
const key = rowKey(r);
|
|
|
- console.log(key, importedKeySet.value, selectedKeySet.value,scenes.value, 'toggleRowSelection');
|
|
|
|
|
- if (importedKeySet.value.includes(key) || selectedKeySet.value.has(key)) {
|
|
|
|
|
|
|
+ console.log(selectedRows.value, importedKeySet.value, selectedKeySet.value,scenes.value, 'toggleRowSelection');
|
|
|
|
|
+ if (importedKeySet.value.has(key) || selectedKeySet.value.has(key)) {
|
|
|
tableRef.value?.toggleRowSelection?.(r, true);
|
|
tableRef.value?.toggleRowSelection?.(r, true);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -359,6 +357,7 @@ const ItemChange = (selection, row) => {
|
|
|
let item = selection.find(ele => ele.num === row.num)
|
|
let item = selection.find(ele => ele.num === row.num)
|
|
|
if(!item){//判断为取消
|
|
if(!item){//判断为取消
|
|
|
selectedRows.value = selectedRows.value.filter(ele => !(ele.isObj == row.isObj && ele.num == row.num))
|
|
selectedRows.value = selectedRows.value.filter(ele => !(ele.isObj == row.isObj && ele.num == row.num))
|
|
|
|
|
+ console.log(selectedRows.value, 'rows3')
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
const listChange = (selection) => {
|
|
const listChange = (selection) => {
|
|
@@ -372,16 +371,18 @@ const listChange = (selection) => {
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
+ console.log(selectedRows.value, 'rows2')
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
const onSelectionChange = (rows: Scene[]) => {
|
|
const onSelectionChange = (rows: Scene[]) => {
|
|
|
- console.log(rows, 'rows')
|
|
|
|
|
// 保证“已导入”的行始终在选中集合中,并与跨页选中合并
|
|
// 保证“已导入”的行始终在选中集合中,并与跨页选中合并
|
|
|
const map = new Map<string, any>();
|
|
const map = new Map<string, any>();
|
|
|
// 先放入全局已选中的集合(跨页保持)
|
|
// 先放入全局已选中的集合(跨页保持)
|
|
|
(selectedRows.value || []).forEach((r: any) => map.set(rowKey(r), r));
|
|
(selectedRows.value || []).forEach((r: any) => map.set(rowKey(r), r));
|
|
|
// 当前页导入的行强制选中
|
|
// 当前页导入的行强制选中
|
|
|
|
|
+ console.log(selectedRows.value, 'rows4', importedKeySet.value)
|
|
|
(tableData.value || []).forEach((r: any) => {
|
|
(tableData.value || []).forEach((r: any) => {
|
|
|
|
|
+ console.log(isRowImported(r), 'rows2', importedKeySet.value)
|
|
|
if (isRowImported(r)) {
|
|
if (isRowImported(r)) {
|
|
|
map.set(rowKey(r), r);
|
|
map.set(rowKey(r), r);
|
|
|
}
|
|
}
|
|
@@ -391,7 +392,7 @@ const onSelectionChange = (rows: Scene[]) => {
|
|
|
map.set(rowKey(r), r);
|
|
map.set(rowKey(r), r);
|
|
|
});
|
|
});
|
|
|
selectedRows.value = Array.from(map.values());
|
|
selectedRows.value = Array.from(map.values());
|
|
|
- console.log(selectedRows.value, 'selectedRows', rows)
|
|
|
|
|
|
|
+ console.log(selectedRows.value, 'rows4', importedKeySet.value)
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 合并当前案件已有场景与新选择的场景,避免重复
|
|
// 合并当前案件已有场景与新选择的场景,避免重复
|
|
@@ -414,14 +415,14 @@ const onConfirmEdit = async () => {
|
|
|
const mergedList = mergeScenesWithSelection();
|
|
const mergedList = mergeScenesWithSelection();
|
|
|
const numList = mergedList.map((s: any) => s.num);
|
|
const numList = mergedList.map((s: any) => s.num);
|
|
|
const oldScene = scenes.value.filter(ele => !numList.includes(ele.num)).map(element => { return { ...element, num: element.num, type: element.sceneType } });
|
|
const oldScene = scenes.value.filter(ele => !numList.includes(ele.num)).map(element => { return { ...element, num: element.num, type: element.sceneType } });
|
|
|
- console.log(oldScene, 'oldScene',numList, 'numList', scenes.value, 'scenes')
|
|
|
|
|
const payload = getCaseScenes([...mergedList, ...oldScene] as any[]);
|
|
const payload = getCaseScenes([...mergedList, ...oldScene] as any[]);
|
|
|
await replaceCaseScenes(caseId.value, payload);
|
|
await replaceCaseScenes(caseId.value, payload);
|
|
|
// 刷新案件场景列表
|
|
// 刷新案件场景列表
|
|
|
|
|
+ selectedRows.value = [];
|
|
|
scenes.value = (await getFusionAndSceneList({ caseId: caseId.value, type: 'scene' })) as unknown as Scene[];
|
|
scenes.value = (await getFusionAndSceneList({ caseId: caseId.value, type: 'scene' })) as unknown as Scene[];
|
|
|
activeId.value = scenes.value.length ? String(scenes.value[0]?.sceneNumId) : '';
|
|
activeId.value = scenes.value.length ? String(scenes.value[0]?.sceneNumId) : '';
|
|
|
editVisible.value = false;
|
|
editVisible.value = false;
|
|
|
- selectedRows.value = [];
|
|
|
|
|
|
|
+ console.log(selectedRows.value, 'selectedRows.value')
|
|
|
} catch (e) {
|
|
} catch (e) {
|
|
|
console.error('替换案件场景失败', e);
|
|
console.error('替换案件场景失败', e);
|
|
|
}
|
|
}
|