This commit is contained in:
ltx 2026-04-14 10:01:46 +08:00
commit 05473e38e3

View File

@ -184,8 +184,9 @@ const formatGroupDate = (item) => {
};
const addProject = () => {
timeProjects.value = [];
isShowDialog.value = true;
// 打开弹窗时,用当前已选项目初始化 timeProjects,以便确定后保留勾选
timeProjects.value = [...(localFormData.value.projects ?? [])];
};
const timeProjects = ref([])
const selectionChange = (list) => {
@ -218,6 +219,33 @@ const onSubmit = async () => {
const isShowDialog = ref(false);
const tableRef = ref(null);
// 弹窗打开后,每当 ProTable 加载完新数据,将已选项目回显为勾选状态
watch(isShowDialog, (visible) => {
if (!visible) return;
// 用 watchEffect 追踪 tableData 变化,数据每次刷新后重新回显
const stopWatch = watch(
() => tableRef.value?.tableData,
(tableData) => {
if (!tableData?.length) return;
nextTick(() => {
const elTable = tableRef.value?.element;
if (!elTable) return;
const alreadySelectedIds = new Set(
(localFormData.value.projects ?? []).map((p) => p.projectId ?? p.id)
);
tableData.forEach((row) => {
elTable.toggleRowSelection(row, alreadySelectedIds.has(row.id));
});
});
},
{ deep: true, immediate: true }
);
// 弹窗关闭时停止监听
const stopDialog = watch(isShowDialog, (v) => {
if (!v) { stopWatch(); stopDialog(); }
});
});
const columns = ref([
{