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