diff --git a/ui/src/api/admin/system/role.ts b/ui/src/api/admin/system/role.ts index 314c65a1d14..815e084a449 100644 --- a/ui/src/api/admin/system/role.ts +++ b/ui/src/api/admin/system/role.ts @@ -50,4 +50,9 @@ const deleteRoleMember = (roleId: string, userRelationId: string) => { return del(`${prefix}/${roleId}/remove_member/${userRelationId}`) } -export default { deleteRole, deleteRoleMember, getRoleList, getRoleMemberList, getRolePermissionList, postRole, postRoleMembers, postRolePermissions } +/** 从指定角色批量移除成员。 */ +const deleteRoleMembers = (roleId: string, userRelationIds: string[]) => { + return del<{ member_ids: string[] }, boolean>(`${prefix}/${roleId}/remove_member/batch`, undefined, { member_ids: userRelationIds }) +} + +export default { deleteRole, deleteRoleMember, deleteRoleMembers, getRoleList, getRoleMemberList, getRolePermissionList, postRole, postRoleMembers, postRolePermissions } diff --git a/ui/src/views/system/identity/roles/components/RoleMemberList.vue b/ui/src/views/system/identity/roles/components/RoleMemberList.vue index 95dca40e399..8f054e18e0e 100644 --- a/ui/src/views/system/identity/roles/components/RoleMemberList.vue +++ b/ui/src/views/system/identity/roles/components/RoleMemberList.vue @@ -66,7 +66,12 @@ const batchSelectedMembers = ref([]) function handleBatchDelete() { MsgConfirm(`是否删除选中的 ${batchSelectedMembers.value.length} 个成员?`, '') .then(() => { - // TODO: 批量删除 + loading.value = true + const memberIds = batchSelectedMembers.value.map((member) => member.user_relation_id) + return RoleApi.deleteRoleMembers(props.currentRole.id, memberIds).then(() => { + MsgSuccess('批量移除成功') + return loadMembers() + }) }) .catch(() => {}) .finally(() => { @@ -102,6 +107,7 @@ watch( @current-change="loadMembers()" @size-change="loadMembers()" :max-table-height="290" + rowKey="user_relation_id" @selection-change="handleBatchSelectionChange" >