From 9dcad0c65f2564fc2fe43e21b23f9faf4a073d30 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期二, 28 四月 2026 13:49:47 +0800
Subject: [PATCH] fix: 修复多个页面样式、交互及路由问题

---
 laboratory/src/components/chooseProject/index.vue |   54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 47 insertions(+), 7 deletions(-)

diff --git a/laboratory/src/components/chooseProject/index.vue b/laboratory/src/components/chooseProject/index.vue
index a55ad7c..ff467ce 100644
--- a/laboratory/src/components/chooseProject/index.vue
+++ b/laboratory/src/components/chooseProject/index.vue
@@ -24,8 +24,9 @@
 
                 <template #tableCustom>
                     <Table ref="memberTable" :height="null" :row-key="row => row.id" :data="tableData" :total="0"
-                        highlight-current-row @current-change="handleCurrentChange">
-                        <!-- <el-table-column type="selection" width="55" /> -->
+                        highlight-current-row @row-click="handleRowClick" @select="handleSelect"
+                        @selection-change="handleSelectionChange">
+                        <el-table-column type="selection" width="55" />
                         <el-table-column prop="teamName" label="项目组名称"></el-table-column>
                         <el-table-column prop="personCharge" label="项目负责人"></el-table-column>
                         <el-table-column prop="staffName" label="项目组成员"></el-table-column>
@@ -66,12 +67,20 @@
                 endTime: '',
                 teamName: '',
             },
-            selectData: [],
+            selectData: null,
             tableData: [],
             total: 0
         }
     },
     methods: {
+        setSingleSelection(row) {
+            if (!row || !this.$refs.memberTable) {
+                return;
+            }
+            this.$refs.memberTable.clearSelection();
+            this.$refs.memberTable.toggleRowSelection(row, true);
+            this.selectData = row;
+        },
         open() {
             if(this.form.date && this.form.date.length === 2){
                 this.form.startTime=this.form.date[0]
@@ -85,9 +94,11 @@
                     this.$nextTick(() => {
                         const row = this.tableData.find(item => item.id === this.selectedData.id)
                         if (row) {
-                            this.$refs.memberTable.toggleRowSelection(row, true)
+                            this.setSingleSelection(row)
                         }
                     })
+                } else {
+                    this.selectData = null
                 }
             })
         },
@@ -110,11 +121,40 @@
         submitData(){
             this.$emit('submit',this.selectData)
         },
-        handleCurrentChange(val) {
-            this.selectData = val;
+        handleSelectionChange(selection) {
+            if (!selection || selection.length === 0) {
+                this.selectData = null;
+            }
+        },
+        handleSelect(selection, row) {
+            if (!row) {
+                return;
+            }
+            const selectedRow = selection.find((item) => item.id === row.id);
+            if (selectedRow) {
+                this.setSingleSelection(row);
+            } else {
+                this.selectData = null;
+            }
+        },
+        handleRowClick(row) {
+            if (!row) {
+                return;
+            }
+            if (this.selectData && this.selectData.id === row.id) {
+                this.$refs.memberTable.clearSelection();
+                this.selectData = null;
+                return;
+            }
+            this.setSingleSelection(row);
         },
     }
 }
 </script>
 
-<style lang="less" scoped></style>
\ No newline at end of file
+<style lang="less" scoped>
+::v-deep .el-table__row.current-row > td,
+::v-deep .el-table__row.selection-row > td {
+    background: #ebffff !important;
+}
+</style>

--
Gitblit v1.7.1