# RBAC权限管理前端设计方案 **Date:** 2026-03-21 **Status:** Approved **Type:** Frontend Design --- ## 整体架构:双层权限体系 | 层级 | 管理方式 | 说明 | |-----|--------|------| | **系统层** | 管理员手动配置 | 权限、角色、菜单分配 | | **业务层** | 自动分配 | 用户加入项目时自动赋予对应角色权限 | --- ## 一、系统管理员功能(配置权限和角色) ### 1. 权限管理 `/system/permissions` **功能清单:** - 权限列表(按类型筛选:菜单MENU/按钮BUTTON/API) - 新建权限(code, name, type, resource, method) - 编辑权限 - 删除权限 - 权限与角色关联查看 **数据结构:** ```typescript interface Permission { id: string; code: string; // 权限标识,如 user:create name: string; // 权限名称 type: 'MENU' | 'BUTTON' | 'API'; resource: string; // 资源路径 method: string; // HTTP方法 parentCode?: string; // 父级权限 sortOrder: number; } ``` ### 2. 角色管理 `/system/roles` **功能清单:** - 角色列表(按类型筛选:SYSTEM/PROJECT/DEPARTMENT) - 创建角色: - 角色代码(唯一) - 角色名称 - 角色类型 - 数据权限范围(ALL/PROJECT/SELF) - 关联权限(多选树) - 编辑角色 - 删除角色 **数据结构:** ```typescript interface Role { id: string; code: string; // 角色标识 name: string; // 角色名称 type: 'SYSTEM' | 'PROJECT' | 'DEPARTMENT'; dataScope: 'ALL' | 'PROJECT' | 'SELF'; permissions: Permission[]; status: 'ENABLED' | 'DISABLED'; } ``` ### 3. 用户角色分配 `/system/users` **功能清单:** - 用户列表(分页、搜索) - 查看用户角色 - 分配/移除用户角色 - 查看用户项目参与情况 ### 4. 操作审计日志 `/system/audit` **功能清单:** - 权限变更日志 - 角色分配日志 - 日志筛选(操作类型、时间范围、操作用户) --- ## 二、业务自动授权(基于项目角色) ### 项目成员管理 `项目详情页 → 成员tab` **功能清单:** - 成员列表(显示用户名、角色、项目角色) - 添加成员: - 选择用户 - 设置项目角色(leader/member/viewer) - 自动分配对应权限 - 移除成员(自动回收权限) - 修改成员角色 **项目角色权限对照:** | 项目角色 | 自动获得权限 | |---------|-------------| | leader | 项目全部操作权限 | | member | 项目基础功能权限 | | viewer | 项目只读权限 | --- ## 三、页面结构 ``` /system ├── /permissions # 权限管理 │ └── /:id/edit # 编辑权限 ├── /roles # 角色管理 │ ├── /:id/edit # 编辑角色 │ └── /new # 新建角色 ├── /users # 用户管理 │ └── /:id # 用户详情/角色分配 └── /audit # 审计日志 /projects └── /:id/members # 项目成员管理(在项目详情页) ``` --- ## 四、技术实现 **技术栈:** - Vue 3 + TypeScript - Vite - Ant Design Vue(复用现有组件库) - Pinia(状态管理) **API对接:** - GET `/api/permissions` - 权限列表 - POST/PUT/DELETE `/api/permissions` - GET `/api/roles` - 角色列表 - POST/PUT/DELETE `/api/roles` - GET `/api/users` - 用户列表 - GET `/api/users/{id}/roles` - 用户角色 - POST `/api/users/{id}/roles` - 分配角色 - GET `/api/users/{id}/projects` - 用户项目参与 - POST `/api/users/{id}/projects` - 添加到项目 - DELETE `/api/users/{id}/projects/{projectId}` - 从项目移除 --- ## 五、组件清单 | 组件 | 说明 | |-----|------| | PermissionTree | 权限树形选择器 | | RoleSelect | 角色下拉选择 | | DataScopeSelect | 数据权限范围选择 | | UserProjectList | 用户项目参与列表 | | AuditLogTable | 审计日志表格 |