From 8ded5e9fa4fd737252b75120e499c2577ecfd649 Mon Sep 17 00:00:00 2001 From: Zhou Date: Tue, 23 Jun 2026 10:41:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=88=A0=E9=99=A4=E6=88=90=E5=91=98=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除成员时传入需要保留的用户,而不是删除的用户 - 添加成员时合并现有用户和新用户 - 使用正确的接口格式:roleId + userOrDept数组 --- .../custom-page/roleMemberManagement.vue | 52 ++++++++++++------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/src/custom/apaas-custom-mydemo/custom-page/roleMemberManagement.vue b/src/custom/apaas-custom-mydemo/custom-page/roleMemberManagement.vue index 9f5b18f..0cde9cf 100644 --- a/src/custom/apaas-custom-mydemo/custom-page/roleMemberManagement.vue +++ b/src/custom/apaas-custom-mydemo/custom-page/roleMemberManagement.vue @@ -172,6 +172,7 @@ export default { department: '' }, tableData: [], + allMembers: [], selectedMembers: [], pagination: { currentPage: 1, @@ -261,24 +262,18 @@ export default { const respData = resp.data const personArray = respData['人员'] || respData.person || [] - // 解析人员数组 - // 格式:["周杰-ID:100771324098969075712-userNumber:yc90117846-department:"] const members = [] personArray.forEach((personStr) => { if (typeof personStr === 'string') { - // 提取用户名(第一个 - 之前) const nameMatch = personStr.match(/^([^-]+)/) const username = nameMatch ? nameMatch[1] : '' - // 提取ID const idMatch = personStr.match(/ID:([^-]+)/) const userId = idMatch ? idMatch[1] : '' - // 提取userNumber(成员编码) const userNumberMatch = personStr.match(/userNumber:([^-]+)/) const userNumber = userNumberMatch ? userNumberMatch[1] : '' - // 提取department(部门) const deptMatch = personStr.match(/department:(.+)$/) const department = deptMatch ? deptMatch[1] : '' @@ -286,14 +281,15 @@ export default { members.push({ userId: userId, username: username, - userNumber: userNumber, // 成员编码(用户工号) - department: department // 部门 + userNumber: userNumber, + department: department }) } } }) - // 应用搜索过滤 + this.allMembers = members + let filteredMembers = members if (this.searchForm.memberName) { filteredMembers = filteredMembers.filter(m => @@ -311,12 +307,12 @@ export default { ) } - // 分页处理 this.pagination.total = filteredMembers.length const startIndex = (this.pagination.currentPage - 1) * this.pagination.pageSize const endIndex = startIndex + this.pagination.pageSize this.tableData = filteredMembers.slice(startIndex, endIndex) } else { + this.allMembers = [] this.tableData = [] this.pagination.total = 0 } @@ -324,6 +320,7 @@ export default { .asyncErrorCatch((err) => { console.error('加载成员列表失败:', err) this.$message.error('加载成员列表失败,请稍后重试') + this.allMembers = [] this.tableData = [] this.pagination.total = 0 }) @@ -378,12 +375,22 @@ export default { } this.addMemberSubmitting = true - // 使用现有接口绑定角色和用户 + + const existingUserIds = this.allMembers.map((m) => m.userId) + const newUserIds = this.addMemberFormData.selectedUsers.filter((id) => !existingUserIds.includes(id)) + + const allUserIds = [...existingUserIds, ...newUserIds] + + const userOrDept = allUserIds.map((userId) => ({ + userOrDeptId: userId, + isDept: 0 + })) + const request = { ...api.GET_ROLE_PERMISSION_BING, data: { - roleID: this.roleId, - userIDs: this.addMemberFormData.selectedUsers + roleId: this.roleId, + userOrDept: userOrDept } } @@ -401,19 +408,26 @@ export default { }) }, deleteMembers() { - const userIds = this.selectedMembers.map((member) => member.userId) - // 使用现有接口删除角色用户绑定 + const deleteUserIds = this.selectedMembers.map((member) => member.userId) + const retainUsers = this.allMembers.filter((member) => !deleteUserIds.includes(member.userId)) + + const userOrDept = retainUsers.map((user) => ({ + userOrDeptId: user.userId, + isDept: 0 + })) + const request = { - ...api.DELETE_ROLE_PERMISSION, - params: { - roleID: this.roleId, - userIDs: userIds.join(',') + ...api.GET_ROLE_PERMISSION_BING, + data: { + roleId: this.roleId, + userOrDept: userOrDept } } this.$request(request) .asyncThen((resp) => { this.$message.success('删除成员成功') + this.selectedMembers = [] this.loadMemberList() }) .asyncErrorCatch((err) => {