From 569d16d735209e02c167e82993258961218a61d7 Mon Sep 17 00:00:00 2001 From: teukkk Date: Wed, 11 Jun 2025 20:20:02 +0800 Subject: [PATCH] feat: role member --- ui/src/api/system/role.ts | 6 +- ui/src/api/type/role.ts | 27 ++++- ui/src/api/user/user.ts | 10 +- .../views/role/component/AddMemberDrawer.vue | 98 +++++++++++++++++++ ui/src/views/role/component/Member.vue | 15 +-- .../role/component/MemberFormContent.vue | 72 ++++++++++++++ ui/src/views/role/index.vue | 7 +- 7 files changed, 217 insertions(+), 18 deletions(-) create mode 100644 ui/src/views/role/component/AddMemberDrawer.vue create mode 100644 ui/src/views/role/component/MemberFormContent.vue diff --git a/ui/src/api/system/role.ts b/ui/src/api/system/role.ts index 18621b5a..b0014151 100644 --- a/ui/src/api/system/role.ts +++ b/ui/src/api/system/role.ts @@ -1,7 +1,7 @@ import { get, post, del } from '@/request/index' import type { Ref } from 'vue' import { Result } from '@/request/Result' -import type { RoleItem, RolePermissionItem, CreateOrUpdateParams, RoleMemberItem, CreateMemberParams } from '@/api/type/role' +import type { RoleItem, RolePermissionItem, CreateOrUpdateParams, PageList, RoleMemberItem, CreateMemberParamsItem } from '@/api/type/role' import { RoleTypeEnum } from '@/enums/system' import type { pageRequest } from '@/api/type/common' @@ -66,7 +66,7 @@ const getRoleMemberList: ( page: pageRequest, param: any, loading?: Ref, -) => Promise> = (role_id, page, param, loading) => { +) => Promise>> = (role_id, page, param, loading) => { return get( `${prefix}/${role_id}/user_list/${page.current_page}/${page.page_size}`, param, @@ -79,7 +79,7 @@ const getRoleMemberList: ( */ const CreateMember: ( role_id: string, - data: CreateMemberParams, + data: { members: CreateMemberParamsItem[] }, loading?: Ref, ) => Promise> = (role_id, data, loading) => { return post(`${prefix}/${role_id}/add_member`, data, undefined, loading) diff --git a/ui/src/api/type/role.ts b/ui/src/api/type/role.ts index 157ce1b1..ed31c080 100644 --- a/ui/src/api/type/role.ts +++ b/ui/src/api/type/role.ts @@ -1,5 +1,5 @@ import { RoleTypeEnum } from '@/enums/system' - +import type { FormItemRule } from 'element-plus' interface RoleItem { id: string, role_name: string, @@ -49,8 +49,27 @@ interface RoleMemberItem { workspace_name: string, } -interface CreateMemberParams { - members: { user_ids: string[], workspace_ids: string[] }[] +interface CreateMemberParamsItem { + user_ids: string[], + workspace_ids: string[] } -export type { RoleItem, RolePermissionItem, RoleTableDataItem, CreateOrUpdateParams, ChildrenPermissionItem, RoleMemberItem, CreateMemberParams } \ No newline at end of file +interface PageList { + current: number, + size: number, + total: number, + records: T +} + +type Arrayable = T | T[] +interface FormItemModel { + path: string + label?: string + rules?: Arrayable, + selectProps: { + options?: { label: string, value: string }[] + placeholder?: string + } +} + +export type { RoleItem, FormItemModel, RolePermissionItem, RoleTableDataItem, CreateOrUpdateParams, PageList, ChildrenPermissionItem, RoleMemberItem, CreateMemberParamsItem } \ No newline at end of file diff --git a/ui/src/api/user/user.ts b/ui/src/api/user/user.ts index e8a99739..a67a8492 100644 --- a/ui/src/api/user/user.ts +++ b/ui/src/api/user/user.ts @@ -26,7 +26,15 @@ const getProfile: (loading?: Ref) => Promise> = (loading) = // return get('/profile', undefined, loading) // } +/** + * 获取全部用户 + */ +const getUserList: (loading?: Ref) => Promise[]>> = (loading) => { + return get('/user/list', undefined, loading) +} + export default { getUserProfile, - getProfile + getProfile, + getUserList } diff --git a/ui/src/views/role/component/AddMemberDrawer.vue b/ui/src/views/role/component/AddMemberDrawer.vue new file mode 100644 index 00000000..749129a0 --- /dev/null +++ b/ui/src/views/role/component/AddMemberDrawer.vue @@ -0,0 +1,98 @@ + + + \ No newline at end of file diff --git a/ui/src/views/role/component/Member.vue b/ui/src/views/role/component/Member.vue index 94ea8ca5..e8e3a360 100644 --- a/ui/src/views/role/component/Member.vue +++ b/ui/src/views/role/component/Member.vue @@ -17,12 +17,10 @@ - - diff --git a/ui/src/views/role/index.vue b/ui/src/views/role/index.vue index 6e317b46..33bd106f 100644 --- a/ui/src/views/role/index.vue +++ b/ui/src/views/role/index.vue @@ -69,7 +69,7 @@ {{ $t('common.rename') }} {{ $t('common.delete') - }} + }} @@ -85,12 +85,13 @@ -
+
{{ currentRole?.role_name }} - ({{ roleTypeMap[currentRole?.type as + ({{ + roleTypeMap[currentRole?.type as RoleTypeEnum] }})