文档修改

This commit is contained in:
Shen Wei
2026-04-29 15:43:49 +08:00
parent c3f9de5f9f
commit b2aadf771a
28 changed files with 7502 additions and 109 deletions

View File

@@ -0,0 +1,223 @@
# 权限管理 UI 设计文档
> **任务编号**08P0-C
> **覆盖范围**`US-PERMISSION-001 ~ US-PERMISSION-005`
> **输出文件**`UI_DESIGN/权限管理_UI.html`
> **设计基线**`UI_SYSTEM/UI_SYSTEM.md`后台壳层、筛选区、表格、分页、Modal/Drawer
> **需求依据**
> - `PRD/TASK.md`US-PERMISSION-001~005
> - `PRD/权限管理/权限管理模块PRD.md`
> - `DATA_MODEL/DATA_MODEL_PERMISSION.md`
> - `PRD/权限管理/首页.md`
> - `PRD/权限管理/客源.md`
> - `PRD/权限管理/房源-二手租赁.md`
> **竞品截图参考**
> - `screenshots/权限管理/权限管理-人员列表.png`
> - `screenshots/权限管理/权限管理-批量设置角色.png`
> - `screenshots/权限管理/权限管理-人员编辑特定权限.png`
> - `screenshots/权限管理/权限管理-修改个人权限-客源.png`
> - `screenshots/权限管理/角色管理-角色列表.png`
> - `screenshots/权限管理/角色管理-添加角色1.png`
> - `screenshots/权限管理/角色管理-修改角色.png`
---
## 1. 目标与范围
### 1.1 页面目标
本页用于完成权限管理模块 MVP 主链路:
1. **角色配置US-PERMISSION-001**
- 角色列表(预设 + 自定义)
- 新增自定义角色
- 预设角色不可删
- 可进入角色权限配置抽屉
2. **人员权限列表管理US-PERMISSION-002**
- 按姓名/工号、部门、角色、职务检索
- 列表展示角色、管理范围、不一致标记
3. **批量设置角色US-PERMISSION-003**
- 勾选员工后批量赋角色
- 覆盖个人权限提醒
4. **功能权限控制US-PERMISSION-004**
- 人员权限编辑页支持模块级开关 + 权限项配置
- 模块关闭时视为菜单隐藏
5. **数据权限控制US-PERMISSION-005**
- 范围型权限(本人/本组/本门店/本区域/本大区/全公司)
- 管理范围详情弹窗
### 1.2 任务边界
- ✅ 包含:权限管理 Tab、角色管理 Tab、批量角色弹窗、个人权限抽屉、权限项详情抽屉、角色新增弹窗、角色配置抽屉、范围详情弹窗、分页/空态/Toast
- ✅ 包含:必填校验、角色唯一性校验、预设角色删除限制、批量按钮禁用态
- ⛔ 不包含:真实权限后端、真实 Redis 失效、真实 403 路由拦截、真实日志系统
---
## 2. 信息架构
### 2.1 页面骨架
- **Top Bar**:系统一级导航(人事主入口高亮)
- **Sidebar**:组织人事二级菜单(权限管理高亮)
- **Main Content**
1. 面包屑:`人事OA / 组织人事 / 权限管理`
2. 主 Tab`权限管理`(人员维度)/ `角色管理`(角色维度)
### 2.2 权限管理 Tab人员维度
1. 筛选区
- 姓名/工号
- 员工部门
- 角色
- 职务名称
- 权限与角色权限不一致(快捷筛选)
2. 操作区
- 批量设置角色
- 导出
3. 人员表格
- 复选框、员工姓名、工号、部门、职务、角色、管理范围(详情)、操作
4. 行操作
- 修改权限
- 复制角色
- 扩充范围
- 范围
5. 分页区
### 2.3 角色管理 Tab角色维度
1. 筛选区
- 角色名称
- 角色类别
- 修改时间范围
2. 操作区
- 新增角色
- 批量删除角色
3. 角色表格
- 复选框、角色名称、角色类别、应用人数(查看)、引用角色、创建时间、修改时间、操作
4. 行操作
- 编辑(进入角色权限配置)
- 删除(预设角色禁删)
- 修改日志
### 2.4 关键弹层
- 批量设置角色 Modal
- 新增角色 Modal
- 人员权限编辑 Drawer
- 权限项详情 Drawer显示角色应用人数及名单
- 管理范围详情 Modal
- 角色权限配置 Drawer
---
## 3. 关键交互与校验
### 3.1 批量设置角色US-PERMISSION-003
- 未勾选员工时按钮禁用
- 打开弹窗后 `角色` 为必填
- 若选中员工存在个人覆盖权限,显示提示:
- `该操作将覆盖所选员工的个人自定义权限,请确认`
- 提交成功:
- 批量更新角色
- 清除个人不一致标记
- Toast 成功提示
### 3.2 新增角色US-PERMISSION-001
- 必填字段:
- 角色名称
- 角色类别
- 校验:
- 角色名称同租户唯一
- 成功后:
- 角色入列表
- 默认可进入权限配置抽屉
### 3.3 删除角色US-PERMISSION-001
- 预设角色 (`isBuiltin=true`) 禁止删除
- 应用人数 > 0 时禁止删除
- 删除成功后刷新列表并 Toast
### 3.4 人员权限编辑US-PERMISSION-004
- 左侧模块树切换,右侧权限项按分组展示
- 模块总开关关闭后,该模块权限项置灰(模拟菜单隐藏)
- 权限项支持三类控件:
- 开关型BOOLEAN
- 范围型SCOPE
- 数值型INTEGER
- 点击 `编辑` 打开单项详情抽屉
- 保存后:
- 标记该员工为“权限与角色不一致”
- 人员列表可被快捷筛出
### 3.5 数据范围与管理范围US-PERMISSION-005
- 人员列表 `管理范围` 列展示范围摘要
- 点击 `详情` 打开范围详情弹窗
- 范围项支持:`无 / 本人 / 本组 / 本门店 / 本区域 / 本大区 / 全公司`
---
## 4. 状态矩阵
| 状态 | 触发 | 页面反馈 |
|---|---|---|
| 默认态 | 页面初次进入 | 权限管理 Tab 默认选中 |
| 查询态 | 输入筛选后点击查询 | 列表按条件过滤 |
| 空结果 | 条件无匹配 | 表格空态文案“暂无匹配人员/角色” |
| 勾选态 | 勾选员工/角色 | 批量按钮启用 |
| 批量角色校验失败 | 角色未选 | 字段下错误文案 |
| 新增角色校验失败 | 名称/类别为空或重名 | 字段错误文案 |
| 删除受限 | 内置角色/有应用人数 | Toast 错误提示 |
| 权限保存成功 | 个人或角色权限保存 | 列表状态更新 + Toast |
| 主题策略 | 后台统一浅色体系 | 页面内不包含 Light/Dark/System 控件 |
---
## 5. 字段与数据模型映射DATA_MODEL_PERMISSION
| UI 字段 | 数据模型字段 |
|---|---|
| 角色名称 | `roles.name` |
| 角色类别 | `roles.category` |
| 角色来源模板 | `roles.template_role_id` |
| 是否内置角色 | `roles.is_system_builtin` |
| 员工角色关联 | `staff_roles.staff_id / role_id / is_primary` |
| 个人权限覆盖 | `staff_permission_overrides.*` |
| 权限定义 | `permission_defs.code / value_type / default_value` |
| 角色权限值 | `role_permissions.value` |
| 员工管理范围 | `staff_data_scopes.scope_type / org_unit_id` |
| 权限变更日志入口 | `permission_change_logs`(本页仅展示入口) |
---
## 6. 可访问性与实现规范
- 表格头部使用 `<th scope="col">`
- 弹窗可通过 `Esc` 关闭
- 必填错误使用明确文本,不仅依赖颜色
- 按钮禁用态提供 `disabled` + 视觉弱化
- 行内链接均保留可点击区域(>= 28px 高)
- 保持后台浅色设计,不加入主题切换组件
---
## 7. 验收清单任务08
- [x] 覆盖 US-PERMISSION-001角色列表 + 新增角色 + 预设角色不可删
- [x] 覆盖 US-PERMISSION-002人员权限列表筛选、分页、操作入口
- [x] 覆盖 US-PERMISSION-003批量设置角色弹窗 + 覆盖提醒
- [x] 覆盖 US-PERMISSION-004模块级开关 + 权限项编辑 + 保存
- [x] 覆盖 US-PERMISSION-005范围型权限 + 管理范围详情
- [ ] 控制台 0 报错(待本地预览验证)
---
## 8. 后续衔接
- 任务08评审后进入任务09系统配置
- 权限管理结果将与组织人事(员工/部门)及后续业务模块菜单展示联动