/** * 权限管理 API * * 角色管理、权限码查询、用户权限配置等接口封装 */ import { api } from '@/api/request'; /** 角色信息 */ export interface Role { id: number; name: string; description?: string; permission_codes: string[]; } /** 权限码信息 */ export interface PermissionItem { id: number; code: string; name: string; } /** 用户权限范围条目 */ export interface ScopeEntry { id?: number; /** 1组织 2项目 3设备 */ scope_type: number; /** 对应的组织/项目/设备ID */ scope_id: number; /** 1查看 2操作 */ permission_type: number; } /** 用户权限详情 */ export interface UserPermissionDetail { user_id: number; name: string; phone: string; role_level: number; organization_id: number | null; roles: Role[]; permission_codes: string[]; scopes: ScopeEntry[]; } // ── 角色管理 ── /** 获取所有角色列表 */ export async function fetchRoles(): Promise { const res = await api.get('/roles'); return res.data ?? []; } /** 创建角色 */ export async function createRole(name: string, description?: string) { return api.post('/roles', { name, description }); } /** 更新角色 */ export async function updateRole(id: number, name: string, description?: string) { return api.put(`/roles/${id}`, { name, description }); } /** 删除角色 */ export async function deleteRole(id: number) { return api.delete(`/roles/${id}`); } /** 设置角色权限(全量替换) */ export async function setRolePermissions(roleId: number, permissionCodes: string[]) { return api.put(`/roles/${roleId}/permissions`, { permission_codes: permissionCodes }); } // ── 权限码 ── /** 获取所有权限码列表 */ export async function fetchPermissions(): Promise { const res = await api.get('/permissions'); return res.data ?? []; } // ── 用户权限 ── /** 获取用户权限详情 */ export async function fetchUserPermissions(userId: number): Promise { const res = await api.get(`/users/${userId}/permissions`); return res.data; } /** 设置用户角色(全量替换) */ export async function setUserRoles(userId: number, roleIds: number[]) { return api.put(`/users/${userId}/roles`, { role_ids: roleIds }); } /** 设置用户权限范围(全量替换) */ export async function setUserScopes(userId: number, scopes: ScopeEntry[]) { return api.put(`/users/${userId}/scopes`, { scopes }); } /** 获取用户权限范围 */ export async function fetchUserScopes(userId: number): Promise { const res = await api.get(`/users/${userId}/scopes`); return res.data ?? []; }