From 25cc01d51fa00f03691527e2a104c54a2acef8e7 Mon Sep 17 00:00:00 2001 From: teukkk Date: Wed, 11 Jun 2025 16:00:35 +0800 Subject: [PATCH] feat: role member --- ui/src/api/{user => system}/role.ts | 46 +++++++- ui/src/api/type/role.ts | 15 ++- ui/src/locales/lang/zh-CN/views/role.ts | 9 +- .../component/CreateOrUpdateRoleDialog.vue | 2 +- ui/src/views/role/component/Member.vue | 108 +++++++++++++++++- .../component/PermissionConfiguration.vue | 2 +- ui/src/views/role/index.vue | 11 +- 7 files changed, 181 insertions(+), 12 deletions(-) rename ui/src/api/{user => system}/role.ts (62%) diff --git a/ui/src/api/user/role.ts b/ui/src/api/system/role.ts similarity index 62% rename from ui/src/api/user/role.ts rename to ui/src/api/system/role.ts index e617b75c8..18621b5a0 100644 --- a/ui/src/api/user/role.ts +++ b/ui/src/api/system/role.ts @@ -1,8 +1,9 @@ import { get, post, del } from '@/request/index' import type { Ref } from 'vue' import { Result } from '@/request/Result' -import type { RoleItem, RolePermissionItem, CreateOrUpdateParams } from '@/api/type/role' +import type { RoleItem, RolePermissionItem, CreateOrUpdateParams, RoleMemberItem, CreateMemberParams } from '@/api/type/role' import { RoleTypeEnum } from '@/enums/system' +import type { pageRequest } from '@/api/type/common' const prefix = '/system/role' /** @@ -57,11 +58,52 @@ const saveRolePermission: ( return post(`${prefix}/${role_id}/permission`, data, undefined, loading) } +/** + * 获取角色成员列表 + */ +const getRoleMemberList: ( + role_id: string, + page: pageRequest, + param: any, + loading?: Ref, +) => Promise> = (role_id, page, param, loading) => { + return get( + `${prefix}/${role_id}/user_list/${page.current_page}/${page.page_size}`, + param, + loading, + ) +} + +/** + * 新建角色成员 + */ +const CreateMember: ( + role_id: string, + data: CreateMemberParams, + loading?: Ref, +) => Promise> = (role_id, data, loading) => { + return post(`${prefix}/${role_id}/add_member`, data, undefined, loading) +} + +/** + * 删除角色成员 + */ +const deleteRoleMember: (role_id: string, user_relation_id: string, loading?: Ref) => Promise> = ( + role_id, + user_relation_id, + loading, +) => { + return del(`${prefix}/${role_id}/remove_member/${user_relation_id}`, undefined, {}, loading) +} + export default { getRoleList, getRolePermissionList, getRoleTemplate, CreateOrUpdateRole, deleteRole, - saveRolePermission + saveRolePermission, + getRoleMemberList, + CreateMember, + deleteRoleMember } \ No newline at end of file diff --git a/ui/src/api/type/role.ts b/ui/src/api/type/role.ts index bc309e0b6..157ce1b17 100644 --- a/ui/src/api/type/role.ts +++ b/ui/src/api/type/role.ts @@ -40,4 +40,17 @@ interface CreateOrUpdateParams { role_type?: RoleTypeEnum, } -export type { RoleItem, RolePermissionItem, RoleTableDataItem, CreateOrUpdateParams, ChildrenPermissionItem } \ No newline at end of file +interface RoleMemberItem { + user_relation_id: string, + user_id: string, + username: string, + nick_name: string, + workspace_id: string, + workspace_name: string, +} + +interface CreateMemberParams { + members: { user_ids: string[], workspace_ids: string[] }[] +} + +export type { RoleItem, RolePermissionItem, RoleTableDataItem, CreateOrUpdateParams, ChildrenPermissionItem, RoleMemberItem, CreateMemberParams } \ No newline at end of file diff --git a/ui/src/locales/lang/zh-CN/views/role.ts b/ui/src/locales/lang/zh-CN/views/role.ts index 898e08d5d..a6baffced 100644 --- a/ui/src/locales/lang/zh-CN/views/role.ts +++ b/ui/src/locales/lang/zh-CN/views/role.ts @@ -17,6 +17,13 @@ export default { moduleName: '模块名称' }, member: { - title: '成员' + title: '成员', + add: '添加成员', + workspace: '工作空间', + role: '角色', + delete: { + button: '移除', + confirmTitle: '是否删除成员:', + } } } diff --git a/ui/src/views/role/component/CreateOrUpdateRoleDialog.vue b/ui/src/views/role/component/CreateOrUpdateRoleDialog.vue index 373ee8c0f..6c888c156 100644 --- a/ui/src/views/role/component/CreateOrUpdateRoleDialog.vue +++ b/ui/src/views/role/component/CreateOrUpdateRoleDialog.vue @@ -30,7 +30,7 @@ import type { FormInstance } from 'element-plus' import { MsgSuccess } from '@/utils/message' import { t } from '@/locales' import type { RoleItem, CreateOrUpdateParams } from '@/api/type/role' -import RoleApi from '@/api/user/role' +import RoleApi from '@/api/system/role' import { roleTypeMap } from '../index' const emit = defineEmits<{ diff --git a/ui/src/views/role/component/Member.vue b/ui/src/views/role/component/Member.vue index 5b5b2b1d1..94ea8ca55 100644 --- a/ui/src/views/role/component/Member.vue +++ b/ui/src/views/role/component/Member.vue @@ -1,5 +1,109 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/ui/src/views/role/component/PermissionConfiguration.vue b/ui/src/views/role/component/PermissionConfiguration.vue index 3e9fdbc14..2390f8c56 100644 --- a/ui/src/views/role/component/PermissionConfiguration.vue +++ b/ui/src/views/role/component/PermissionConfiguration.vue @@ -36,7 +36,7 @@