update:赛事编辑时已选择项目展示
This commit is contained in:
parent
02a2ad0902
commit
d0f17680eb
@ -169,8 +169,9 @@ const localFormData = ref({
|
||||
});
|
||||
const genderList = ref(['全部', '男', '女'])
|
||||
const addProject = () => {
|
||||
timeProjects.value = [];
|
||||
isShowDialog.value = true;
|
||||
// 打开弹窗时,用当前已选项目初始化 timeProjects,以便确定后保留勾选
|
||||
timeProjects.value = [...(localFormData.value.projects ?? [])];
|
||||
};
|
||||
const timeProjects = ref([])
|
||||
const selectionChange = (list) => {
|
||||
@ -203,6 +204,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([
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user