import { get, post, del } from '@/request/index' import type { Ref } from 'vue' import { Result } from '@/request/Result' import type { RoleItem, RolePermissionItem, CreateOrUpdateParams, RoleMemberItem, CreateMemberParamsItem } from '@/api/type/role' import { RoleTypeEnum } from '@/enums/system' import type { pageRequest, PageList } from '@/api/type/common' const prefix = '/system/role' /** * 获取角色列表 */ const getRoleList: (loading?: Ref) => Promise> = (loading) => { return get(`${prefix}`, undefined, loading) } /** * 根据类型获取角色权限模版列表 */ const getRoleTemplate: (role_type: RoleTypeEnum, loading?: Ref) => Promise> = (role_type, loading) => { return get(`${prefix}/template/${role_type}`, undefined, loading) } /** * 获取角色权限选中 */ const getRolePermissionList: (role_id: string, loading?: Ref) => Promise> = (role_id, loading) => { return get(`${prefix}/${role_id}/permission`, undefined, loading) } /** * 新建或更新角色 */ const CreateOrUpdateRole: ( data: CreateOrUpdateParams, loading?: Ref, ) => Promise> = (data, loading) => { return post(`${prefix}`, data, undefined, loading) } /** * 删除角色 */ const deleteRole: (role_id: string, loading?: Ref) => Promise> = ( role_id, loading, ) => { return del(`${prefix}/${role_id}`, undefined, {}, loading) } /** * 保存角色权限 */ const saveRolePermission: ( role_id: string, data: { id: string, enable: boolean }[], loading?: Ref, ) => Promise> = (role_id, data, loading) => { 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: { members: CreateMemberParamsItem[] }, 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, getRoleMemberList, CreateMember, deleteRoleMember }