# RBAC权限管理前端实施计划 > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development to implement this plan. **Goal:** 实现权限管理前端界面,包括权限管理、角色管理、用户角色分配、审计日志和项目成员管理 **Architecture:** Vue 3 + TypeScript + Ant Design Vue,在现有 ether-admin 项目基础上扩展。系统管理员功能(权限/角色/用户)与业务功能(项目成员管理)分离 **Tech Stack:** Vue 3, TypeScript, Ant Design Vue, Pinia, Vite --- ## Phase 1: API层 ### Task 1: 创建权限相关API **Files:** - Modify: `ether-admin/src/api/permission.ts` **Step 1: 添加权限API** ```typescript // ether-admin/src/api/permission.ts import request from '@/utils/request'; export interface Permission { id: string; code: string; name: string; type: 'MENU' | 'BUTTON' | 'API'; resource?: string; method?: string; parentCode?: string; sortOrder: number; } export const getPermissions = () => { return request.get('/api/permissions'); }; export const getPermission = (id: string) => { return request.get(`/api/permissions/${id}`); }; export const createPermission = (data: Partial) => { return request.post('/api/permissions', data); }; export const updatePermission = (id: string, data: Partial) => { return request.put(`/api/permissions/${id}`, data); }; export const deletePermission = (id: string) => { return request.delete(`/api/permissions/${id}`); }; ``` --- ### Task 2: 创建角色相关API **Files:** - Modify: `ether-admin/src/api/role.ts` **Step 1: 扩展角色API** ```typescript // 添加到现有role.ts export interface Role { id: string; code: string; name: string; type: 'SYSTEM' | 'PROJECT' | 'DEPARTMENT'; dataScope: 'ALL' | 'PROJECT' | 'SELF'; permissions: Permission[]; status: 'ENABLED' | 'DISABLED'; } export const getRoles = () => { return request.get('/api/roles'); }; export const getRole = (id: string) => { return request.get(`/api/roles/${id}`); }; export const createRole = (data: Partial) => { return request.post('/api/roles', data); }; export const updateRole = (id: string, data: Partial) => { return request.put(`/api/roles/${id}`, data); }; export const deleteRole = (id: string) => { return request.delete(`/api/roles/${id}`); }; export const assignRolePermissions = (roleId: string, permissionIds: string[]) => { return request.post(`/api/roles/${roleId}/permissions`, { permissionIds }); }; ``` --- ### Task 3: 创建用户-项目相关API **Files:** - Modify: `ether-admin/src/api/user.ts` **Step 1: 扩展用户API** ```typescript // 添加到现有user.ts export interface UserProject { id: string; userId: string; projectId: string; roleInProject: 'leader' | 'member' | 'viewer'; joinedAt: string; } export const getUserProjects = (userId: string) => { return request.get(`/api/users/${userId}/projects`); }; export const addUserToProject = (userId: string, projectId: string, roleInProject: string) => { return request.post(`/api/users/${userId}/projects`, { projectId, roleInProject }); }; export const removeUserFromProject = (userId: string, projectId: string) => { return request.delete(`/api/users/${userId}/projects/${projectId}`); }; ``` --- ## Phase 2: 页面组件 ### Task 4: 创建权限管理页面 **Files:** - Modify: `ether-admin/src/views/system/Permissions.vue` - Create: `ether-admin/src/components/PermissionTree/index.vue` **Step 1: 创建权限管理页面** ```vue ``` --- ### Task 5: 创建角色管理页面 **Files:** - Modify: `ether-admin/src/views/system/Roles.vue` **Step 1: 更新角色管理页面** ```vue ``` --- ### Task 6: 创建PermissionTree组件 **Files:** - Create: `ether-admin/src/components/PermissionTree/index.vue` **Step 1: 创建权限树组件** ```vue ``` --- ### Task 7: 创建用户详情页面(角色分配) **Files:** - Modify: `ether-admin/src/views/system/Users.vue` **Step 1: 添加用户角色分配功能** 在用户列表中添加操作列,点击跳转用户详情页,包含角色分配和项目参与标签页。 ```vue ``` --- ### Task 8: 创建审计日志页面 **Files:** - Create: `ether-admin/src/views/system/Audit.vue` **Step 1: 创建审计日志页面** ```vue ``` --- ## Phase 3: 路由配置 ### Task 9: 添加路由 **Files:** - Modify: `ether-admin/src/router/index.ts` **Step 1: 添加权限管理路由** ```typescript { path: '/system', component: Layout, children: [ // ... 现有路由 { path: 'permissions', component: () => import('@/views/system/Permissions.vue'), meta: { title: '权限管理' } }, { path: 'roles', component: () => import('@/views/system/Roles.vue'), meta: { title: '角色管理' } }, { path: 'audit', component: () => import('@/views/system/Audit.vue'), meta: { title: '审计日志' } }, ] } ``` --- ## Phase 4: 测试验证 ### Task 10: 功能测试 **Step 1: 测试权限CRUD** ```bash # 启动前端 cd ether-admin && npm run dev # 测试流程: # 1. 登录管理端 # 2. 进入权限管理页面,创建/编辑/删除权限 # 3. 进入角色管理页面,创建角色并分配权限 # 4. 进入用户管理,给用户分配角色 # 5. 测试项目成员管理(添加到项目) ``` **Step 2: 验证预期** - 权限创建成功后在列表显示 - 角色创建时可选择权限 - 用户可被分配多个角色 - 项目成员变更后自动更新权限 --- ## Verification Checklist - [ ] 权限管理页面可正常打开 - [ ] 权限CRUD功能正常 - [ ] 角色管理页面可正常打开 - [ ] 角色创建时可选择权限 - [ ] 用户角色分配功能正常 - [ ] 用户项目关联功能正常 - [ ] 审计日志页面可正常打开 - [ ] 路由导航正常