From a60dc30be50598fe2d1acb42f8171ec69e37b436 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期三, 28 五月 2025 17:29:05 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 laboratory/src/components/SelectMember/index.vue |   57 ++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 46 insertions(+), 11 deletions(-)

diff --git a/laboratory/src/components/SelectMember/index.vue b/laboratory/src/components/SelectMember/index.vue
index 39f24b7..fcde772 100644
--- a/laboratory/src/components/SelectMember/index.vue
+++ b/laboratory/src/components/SelectMember/index.vue
@@ -59,8 +59,14 @@
 </template>
 
 <script>
-import { getRoleList, getUserList } from './service'
+import { getRoleList, getUserList, listByRole } from './service'
 export default {
+    props: {
+        projectId: {
+            type: [String, Number],
+            default: null
+        }
+    },
     data() {
         return {
             visible: false,
@@ -76,18 +82,26 @@
         setSelection(selected) {
             this.selectData = selected
             this.$nextTick(() => {
-                // 设置新选中
-                this.tableData.forEach(row => {
-                    if (selected.some(i => i.userId === row.userId)) {
-                        this.$refs.memberTable.toggleRowSelection(row, true)
-                    }
-                })
+                // 确保 tableData 和 memberTable 都存在
+                if (this.tableData && this.$refs.memberTable) {
+                    this.tableData.forEach(row => {
+                        if (selected.some(i => i.userId === row.userId)) {
+                            this.$refs.memberTable.toggleRowSelection(row, true)
+                        }
+                    })
+                }
             })
         },
         openDialog() {
+            // 获取角色列表并根据项目组ID进行过滤
             getRoleList().then(res => {
-                this.roleList = res;
-            })
+                if (this.projectId) {
+                    // 过滤出实验员和化验师角色
+                    this.roleList = res.filter(item => item.roleId == 4 || item.roleId == 5);
+                } else {
+                    this.roleList = res;
+                }
+            });
             this.searchUserList(null);
         },
         handleSelectionChange(val) {
@@ -95,8 +109,29 @@
         },
         async searchUserList(roleId) {
             this.roleId = roleId
-            const res = await getUserList({ roleIds: roleId ? [roleId] : [], nickNameOrPhone: this.searchName, pageSize: 9999, pageNum: 1 })
-            this.tableData = res.records
+            // 根据是否有项目组ID来决定调用不同的接口
+            let params = {
+                roleIds: roleId ? [roleId] : [],
+                nickNameOrPhone: this.searchName,
+                pageSize: 9999,
+                pageNum: 1
+            };
+            
+            if (this.projectId) {
+                params={
+                    ...params,
+                    roleId: roleId?roleId:'',
+                    projectId: this.projectId
+                }
+                delete params.roleIds;
+                // TODO: 这里需要替换为新的接口调用
+                const res = await listByRole(params);
+                this.tableData = res;
+            } else {
+                const res = await getUserList(params);
+                this.tableData = res.records;
+            }
+            
             // 数据加载完成后重新应用选中状态
             this.setSelection(this.selectData)
         },

--
Gitblit v1.7.1