权限管理
模块编码: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 |
业务规则
- 四级权限粒度:功能菜单→页面→功能点→动作,7种动作类型(view/create/update/delete/approve/export/assign)(来源:01 §8.1 / 06 §4.2)
- 权限自动同步:新模块通过IModulePlugin.getPermissionDefinitions()自动注册,权限管理页面自动渲染新可勾选项(来源:01 §8.2 / 05 §4.2)
- 权限实时生效:权限变更后通过Redis Pub/Sub毫秒级生效,无需重新登录(来源:01 §8.3 / 03-超级管理员 §6 / 06 §3.1)
- 权限审计日志:记录操作人、时间、类型、变更前后对比(来源:01 §8.5 / 03-超级管理员 §8.2)
- 角色删除条件:仅关联账号数为0时才可删除(来源:02-超级管理员 SA-P-03)
- 预设模板使用:创建角色时选择模板→系统自动填充权限→管理员微调后保存(来源:01 §8.4)
- 权限配置表只读:权限配置注册页数据来源于IModulePlugin自动注册,超管只可查看不可手动编辑(来源:03-超级管理员 §5)