import { http } from '@/api/http' export type DataScope = 'all' | 'dept' | 'dept_and_child' | 'self' | 'custom' export interface Role { id: string tenantCode: string code: string name: string dataScope: DataScope status: 'enabled' | 'disabled' remark: string | null createdAt: number } export interface RoleListQuery { page: number pageSize: number name?: string code?: string status?: string } export interface RoleListResult { list: Role[] total: number page: number pageSize: number } export function listRoles(query: RoleListQuery, signal?: AbortSignal): Promise { const params: Record = { page: query.page, pageSize: query.pageSize } if (query.name) params.name = query.name if (query.code) params.code = query.code if (query.status) params.status = query.status return http.get('/roles', { params, signal }) } export function createRole(data: { code: string; name: string; dataScope?: DataScope; remark?: string }): Promise { return http.post('/roles', data) } export function updateRole( id: string, data: { name?: string; dataScope?: DataScope; status?: string; remark?: string }, ): Promise { return http.patch(`/roles/${id}`, data) } export function deleteRole(id: string): Promise { return http.delete(`/roles/${id}`) } /** 角色已分配的资源 code 列表(注意:URL 的 :id 是 roleCode 而非 UUID)。 */ export function listAssignedResources(roleCode: string, signal?: AbortSignal): Promise { return http.get(`/roles/${roleCode}/resources`, { signal }) } /** 分配资源(注意:URL 的 :id 是 roleCode 而非 UUID)。 */ export function assignResources(roleCode: string, resourceCodes: string[]): Promise { return http.put(`/roles/${roleCode}/resources`, { resourceCodes }) } /** 角色已分配的数据权限部门 code 列表(data_scope=custom)。 */ export function listAssignedOrgs(roleCode: string, signal?: AbortSignal): Promise { return http.get(`/roles/${roleCode}/orgs`, { signal }) } /** 分配数据权限部门。 */ export function assignOrgs(roleCode: string, orgCodes: string[]): Promise { return http.put(`/roles/${roleCode}/orgs`, { orgCodes }) }