You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

383 lines
24 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 权限管理
> 模块编码permission
> 端侧Web专属仅超级管理员
> 关联文档01-模块划分 §8 / 02-功能清单-超级管理员 §2 / 03-业务流转逻辑-超级管理员 §4~6 / 05-接口规范 §4.2~4.3 / 06-项目技术要求 §4.2
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 权限管理 |
| 子菜单 | 角色管理、权限配置注册、权限审计日志 |
| 功能编号 | SA-P-01 ~ SA-P-10 |
| 权限编码前缀 | permission:role:* / permission:config:* |
---
## 页面1角色管理列表页
**页面编号**SA-P-01-P01
**端侧归属**Web专属
**页面路径**/permission/roles
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 权限管理 > 角色管理 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 角色名称[____] 适用范围[▼] 状态[▼] [查询] [重置] │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏] [新增角色] │
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号 | 角色名称 | 适用范围 | 预设模板 | 关联账号数 | 状态 | 操作 │
│ 1 | 医院查看 | 医院 | 是 | 5 | 启用 | 编辑 停用│
│ 2 | 巡检主管 | 物业下属| 否 | 8 | 启用 | 编辑 停用│
│ 3 | 维修员 | 物业下属| 是 | 23 | 启用 | 编辑 停用│
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共15条 每页[20▼] < 1 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 角色名称 | 文本输入 | 否 | — | 模糊匹配 |
| 适用范围 | 下拉单选 | 否 | 全部 | 医院账号/物业管理员/物业下属 |
| 状态 | 下拉单选 | 否 | 全部 | 启用/停用 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 序号 | 60px | — | 自增 |
| 2 | 角色名称 | 150px | 是 | — |
| 3 | 适用范围 | 120px | 否 | 医院账号/物业管理员/物业下属 |
| 4 | 预设模板 | 80px | 否 | 是/否标签 |
| 5 | 关联账号数 | 100px | 是 | 点击查看关联账号列表 |
| 6 | 状态 | 80px | 是 | 启用/停用 |
| 7 | 操作 | 220px | — | 编辑/权限预览/停用/删除 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 新增角色 | permission:role:create | 操作栏 | 始终 | 跳转新增页 |
| 编辑 | permission:role:update | 行操作 | 始终 | 跳转编辑页 |
| 权限预览 | permission:role:view | 行操作 | 始终 | 弹窗展示完整权限清单 |
| 停用 | permission:role:update | 行操作 | 状态=启用 | 二次确认 |
| 删除 | permission:role:delete | 行操作 | 关联账号数=0 | 二次确认 |
### 角色差异化视图
| 角色 | 可见按钮 | 数据范围 | 备注 |
|------|----------|----------|------|
| 超级管理员 | 全部按钮 | 全部角色 | — |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/roles | GET | 分页查询 |
| 停用角色 | /api/v1/roles/{id}/disable | PUT | — |
| 删除角色 | /api/v1/roles/{id} | DELETE | 仅无关联账号时可删 |
---
## 页面2角色新增/编辑页
**页面编号**SA-P-01-P02
**端侧归属**Web专属
**页面路径**/permission/roles/create 或 /permission/roles/:id/edit
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 权限管理 > 角色管理 > 新增角色 │
├──────────────────────────────────────────────────────────────────┤
│ ── 基本信息 ── │
│ 角色名称:[____________] │
│ 角色描述:[____________________________] │
│ 适用范围:[▼] (医院账号/物业管理员/物业下属) │
│ 选择预设模板:[▼可选] 选择后自动填充权限,可微调 │
├──────────────────────────────────────────────────────────────────┤
│ ── 权限分配(四级树形勾选)── │
│ ☑ 功能菜单:在线报修 │
│ ├── ☑ 页面:工单列表 │
│ │ ├── ☑ 功能点:工单管理 │
│ │ │ ├── ☑ 查看 ☑ 新增 ☑ 编辑 │
│ │ │ ├── ☐ 删除 ☐ 审批 ☑ 导出 ☑ 分配 │
│ │ └── ☑ 功能点:批量操作 │
│ │ ├── ☑ 查看 ☐ 新增 ☐ 编辑 │
│ │ └── ☐ 删除 ☐ 审批 ☐ 导出 ☐ 分配 │
│ ├── ☑ 页面:工单详情 │
│ │ ├── ☑ 功能点:延期审批 │
│ │ │ ├── ☑ 查看 ☐ 新增 ☐ 编辑 │
│ │ │ └── ☐ 删除 ☑ 审批 ☐ 导出 ☐ 分配 │
│ │ └── ☑ 功能点:工单验收 │
│ │ ├── ☑ 查看 ☐ 新增 ☐ 编辑 │
│ │ └── ☐ 删除 ☑ 审批 ☐ 导出 ☐ 分配 │
│ └── ☐ 页面:报修类型管理 │
│ ... │
│ ☐ 功能菜单:巡检管理 │
│ ... │
├──────────────────────────────────────────────────────────────────┤
│ [取消] [权限预览] [保存] │
└──────────────────────────────────────────────────────────────────┘
```
### 表单字段(基本信息)
| 字段名 | 控件类型 | 必填 | 默认值 | 数据来源 | 校验规则 |
|--------|----------|------|--------|----------|----------|
| 角色名称 | 文本输入 | 是 | — | 自填 | 最大30字全局唯一 |
| 角色描述 | 多行文本 | 否 | — | 自填 | 最大200字 |
| 适用范围 | 下拉单选 | 是 | — | 固定选项 | 医院账号/物业管理员/物业下属 |
| 预设模板 | 下拉单选 | 否 | — | 预设模板列表 | 选择后自动填充权限 |
### 预设模板选项
| 模板名称 | 适用对象 | 典型权限 | 文档来源 |
|----------|----------|----------|----------|
| 物业管理员模板 | 物业公司管理员 | 全部日常业务管理权限 | 01 §8.4 |
| 主管模板 | 主管 | 本班组管理+审批+查看+导出 | 01 §8.4 |
| 班组长模板 | 班组长 | 本班组查看+分配+导出 | 01 §8.4 |
| 维修员模板 | 维修人员 | 接单+完工+延期申请 | 01 §8.4 |
| 巡检员模板 | 巡检人员 | 巡检执行+打卡+异常上报 | 01 §8.4 |
| 保洁员模板 | 保洁人员 | 保洁执行+打卡确认 | 01 §8.4 |
| 医院查看模板 | 医院账号 | 全部日常数据查看+合同+招标 | 01 §8.4 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 权限预览 | permission:role:view | 底部操作栏 | 始终 | 弹窗展示已勾选的完整权限清单 |
| 保存 | permission:role:create/update | 底部操作栏 | 始终 | 保存后权限审计日志+实时生效 |
### 通知触发
| 触发操作 | 通知对象 | 通知方式 | 消息模板 | 文档来源 |
|----------|----------|----------|----------|----------|
| 权限变更 | 关联账号用户 | Redis Pub/Sub | 毫秒级刷新权限缓存,无需重新登录 | 03-超级管理员 §6 |
| 权限变更 | 关联账号用户 | 小程序 | 下次接口请求时返回新权限集 | 03-超级管理员 §6 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 新增角色 | /api/v1/roles | POST | — |
| 编辑角色 | /api/v1/roles/{id} | PUT | — |
| 获取权限树 | /api/v1/permissions/tree | GET | 四级权限树结构 |
| 权限预览 | /api/v1/roles/{id}/permissions | GET | 已分配的完整权限列表 |
---
## 页面3权限预览弹窗
**页面编号**SA-P-06-P01
**端侧归属**Web专属
**页面路径**:弹窗形式
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ 权限预览 — 巡检主管 [×] │
├──────────────────────────────────────────────────────────────────┤
│ ☑ 在线报修 │
│ ├─ ☑ 工单列表 │
│ │ ├─ ☑ 工单管理:查看 ✓ 新增 ✗ 编辑 ✓ 删除 ✗ 审批 ✓ 导出 ✓ 分配 ✗│
│ │ └─ ☐ 批量操作 │
│ ├─ ☑ 工单详情 │
│ │ ├─ ☑ 延期审批:查看 ✓ 审批 ✓ │
│ │ └─ ☑ 工单验收:查看 ✓ 审批 ✓ │
│ └─ ☐ 报修类型管理 │
│ ☑ 巡检管理 │
│ ├─ ☑ 巡检计划:查看 ✓ 新增 ✓ 编辑 ✓ │
│ ... │
├──────────────────────────────────────────────────────────────────┤
│ [关闭] │
└──────────────────────────────────────────────────────────────────┘
```
### 说明
- 展示角色当前已分配的完整权限清单
- 四级展开:功能菜单→页面→功能点→动作
- 每个动作用 ✓/✗ 标识是否有权限
- 支持搜索功能菜单/页面名称
---
## 页面4权限配置注册页
**页面编号**SA-P-10-P01
**端侧归属**Web专属
**页面路径**/permission/registry
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 权限管理 > 权限配置注册 │
├──────────────────────────────────────────────────────────────────┤
│ [说明] 此页面展示系统自动注册的权限配置来源IModulePlugin
│ 开发新增功能时自动同步,超级管理员可查看但不可手动编辑 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 模块名称[____] 页面名称[____] [查询] [重置] │
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 模块编码 | 模块名称 | 页面编码 | 页面名称 | 功能点 | 可用动作 │
│ repair | 在线报修 | repair_list| 工单列表 | 工单管理 | 查看,新增..│
│ repair | 在线报修 | repair_detail|工单详情| 延期审批| 查看,审批 │
│ ... │
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共120条 每页[20▼] < 1 2 3 ... 6 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 模块名称 | 文本输入 | 否 | — | 模糊匹配 |
| 页面名称 | 文本输入 | 否 | — | 模糊匹配 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 模块编码 | 100px | 否 | — |
| 2 | 模块名称 | 100px | 否 | — |
| 3 | 页面编码 | 130px | 否 | — |
| 4 | 页面名称 | 120px | 否 | — |
| 5 | 功能点编码 | 140px | 否 | — |
| 6 | 功能点名称 | 120px | 否 | — |
| 7 | 可用动作 | 200px | 否 | view,create,update,delete,approve,export,assign |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| — | — | — | — | 此页面只读数据由IModulePlugin自动注册 |
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/permissions/registry | GET | 查看已注册的权限配置 |
| 刷新 | /api/v1/permissions/registry/refresh | POST | 手动触发权限重新扫描 |
---
## 页面5权限审计日志页
**页面编号**SA-P-08-P01
**端侧归属**Web专属
**页面路径**/permission/audit-log
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 权限管理 > 权限审计日志 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 操作人[____] 操作类型[▼] 角色[____] 日期[起始]~[结束] [查询] [重置]│
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号 | 操作时间 | 操作人 | 操作类型 | 目标角色 | 变更详情 | 操作 │
│ 1 | 14:00 | admin | 权限修改 | 巡检主管 | [+2项][-1项]| 查看│
│ 2 | 11:30 | admin | 角色创建 | 保洁主管 | — | 查看│
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共80条 每页[20▼] < 1 2 3 4 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 操作人 | 文本输入 | 否 | — | 模糊匹配 |
| 操作类型 | 下拉单选 | 否 | 全部 | 角色创建/权限修改/角色分配/角色移除 |
| 角色 | 文本输入 | 否 | — | 模糊匹配角色名称 |
| 日期范围 | 日期范围 | 否 | — | 操作时间范围 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 序号 | 60px | — | 自增 |
| 2 | 操作时间 | 150px | 是 | 默认倒序 |
| 3 | 操作人 | 100px | 否 | — |
| 4 | 操作类型 | 100px | 否 | 标签样式 |
| 5 | 目标角色 | 120px | 否 | — |
| 6 | 变更详情 | 120px | 否 | [+N项][-M项],简洁展示 |
| 7 | 操作 | 80px | — | 查看详情 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 查看详情 | audit-log:permission:view | 行操作 | 始终 | 弹窗展示变更前后对比 |
### 审计日志详情弹窗
```
┌──────────────────────────────────────────────────────────────────┐
│ 权限变更详情 [×] │
├──────────────────────────────────────────────────────────────────┤
│ 角色:巡检主管 │
│ 操作人:超级管理员(admin) │
│ 操作时间2026-04-16 14:00:00 │
│ 操作类型:权限修改 │
├──────────────────────────────────────────────────────────────────┤
│ 变更对比: │
│ [+新增] 在线报修 → 工单详情 → 延期审批 → 审批 │
│ [+新增] 在线报修 → 工单列表 → 工单管理 → 导出 │
│ [-移除] 巡检管理 → 巡检计划 → 计划管理 → 删除 │
├──────────────────────────────────────────────────────────────────┤
│ [关闭] │
└──────────────────────────────────────────────────────────────────┘
```
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/audit-logs/permission | GET | 分页查询 |
| 详情查询 | /api/v1/audit-logs/permission/{id} | GET | 含变更前后对比 |
---
## 需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| SA-P-01 | 角色定义 | 02-超级管理员 §2 / 03-超级管理员 §4 | 创建角色→权限分配 | 账号管理(角色绑定) |
| SA-P-02 | 角色权限分配 | 02-超级管理员 §2 / 03-超级管理员 §4 / 01 §8.1 | 权限变更→审计日志+实时生效 | 权限审计日志 / 权限实时生效 |
| SA-P-03 | 角色管理 | 02-超级管理员 §2 | 停用→关联账号权限失效 | 账号管理(角色绑定) |
| SA-P-04 | 权限预设模板 | 02-超级管理员 §2 / 01 §8.4 | 选择模板→自动填充权限 | 角色新增页(模板选择) |
| SA-P-05 | 账号角色绑定 | 02-超级管理员 §2 / 03-超级管理员 §4 | 在账号管理中操作 | 账号管理 / 物业组织架构(下属角色分配) |
| SA-P-06 | 权限预览 | 02-超级管理员 §2 | 预览→确认权限分配 | 角色新增/编辑页 |
| SA-P-07 | 权限自动同步 | 02-超级管理员 §2 / 03-超级管理员 §5 / 01 §8.2 | IModulePlugin注册→权限树自动更新 | 权限配置注册页 |
| SA-P-08 | 权限审计日志 | 02-超级管理员 §2 / 03-超级管理员 §8.2 / 01 §8.5 | 权限变更→自动记录 | 操作日志 |
| SA-P-09 | 权限实时生效 | 02-超级管理员 §2 / 03-超级管理员 §6 / 01 §8.3 | Redis Pub/Sub毫秒级生效 | — |
| SA-P-10 | 权限配置注册 | 02-超级管理员 §2 / 03-超级管理员 §5 | 查看IModulePlugin注册的权限 | 05-接口规范 §4.2 |
## 业务规则
1. **四级权限粒度**功能菜单→页面→功能点→动作7种动作类型view/create/update/delete/approve/export/assign来源01 §8.1 / 06 §4.2
2. **权限自动同步**新模块通过IModulePlugin.getPermissionDefinitions()自动注册权限管理页面自动渲染新可勾选项来源01 §8.2 / 05 §4.2
3. **权限实时生效**权限变更后通过Redis Pub/Sub毫秒级生效无需重新登录来源01 §8.3 / 03-超级管理员 §6 / 06 §3.1
4. **权限审计日志**记录操作人、时间、类型、变更前后对比来源01 §8.5 / 03-超级管理员 §8.2
5. **角色删除条件**仅关联账号数为0时才可删除来源02-超级管理员 SA-P-03
6. **预设模板使用**创建角色时选择模板→系统自动填充权限→管理员微调后保存来源01 §8.4
7. **权限配置表只读**权限配置注册页数据来源于IModulePlugin自动注册超管只可查看不可手动编辑来源03-超级管理员 §5