From 2c70c062a2f54052defaf37c59c90e8a50a5eaac Mon Sep 17 00:00:00 2001 From: Codewoc <947380458@qq.com> Date: Thu, 2 Apr 2026 09:13:19 +0800 Subject: [PATCH] =?UTF-8?q?fix(review-meeting):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E4=B8=93=E5=AE=B6=E6=90=9C=E7=B4=A2=E5=AF=BC=E8=87=B4=E5=B7=B2?= =?UTF-8?q?=E9=80=89=E9=A1=B9=E4=B8=A2=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../meeting/components/ExpertSelectTable.vue | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/views/review/meeting/components/ExpertSelectTable.vue b/src/views/review/meeting/components/ExpertSelectTable.vue index 3f52c4199..e10adcf55 100644 --- a/src/views/review/meeting/components/ExpertSelectTable.vue +++ b/src/views/review/meeting/components/ExpertSelectTable.vue @@ -42,12 +42,13 @@ v-if="!disabled" ref="tableRef" :data="filteredExperts" + row-key="id" border size="small" max-height="300" @selection-change="handleSelectionChange" > - + @@ -111,23 +112,22 @@ const selectedExperts = computed(() => props.experts.filter((e) => props.modelValue.includes(e.id)) ) -// 同步表格选中状态 -watch( - () => props.modelValue, - async () => { - await nextTick() - if (!tableRef.value) return - isUpdating.value = true - tableRef.value.clearSelection() - filteredExperts.value.forEach((row) => { - if (props.modelValue.includes(row.id)) { - tableRef.value.toggleRowSelection(row, true) - } - }) - isUpdating.value = false - }, - { immediate: true } -) +const syncTableSelection = async () => { + await nextTick() + if (!tableRef.value) return + isUpdating.value = true + tableRef.value.clearSelection() + filteredExperts.value.forEach((row) => { + if (props.modelValue.includes(row.id)) { + tableRef.value.toggleRowSelection(row, true) + } + }) + isUpdating.value = false +} + +// modelValue 或过滤结果变化都需要同步表格勾选,避免切换搜索时已选项被误清空 +watch(() => props.modelValue, syncTableSelection, { immediate: true }) +watch(filteredExperts, syncTableSelection) const handleSelectionChange = (selected: Expert[]) => { if (isUpdating.value) return