角色管理
1. 功能定位
角色管理用于维护权限集合,并将权限授予账号。
角色直接绑定账号,不直接绑定人员、部门或岗位。
2. 页面布局
角色管理保持现有展示形式,使用「角色表格 + 独立配置抽屉 / 弹窗」,不改为左右分栏或四页签布局。
页面主体保留:
- 角色搜索与现有筛选。
- 角色表格。
- 列配置。
- 分页。
- 新增角色。
通用界面规则:
- 角色管理内需要滚动的内容区域统一使用
GrowScrollbar。 - 图标按钮使用固定方形点击区域,图标水平、垂直居中。
角色操作保留:
- 新增 / 编辑角色:Dialog。
- 绑定账号:右侧抽屉;账号选择使用 Dialog。
- 菜单与功能权限:右侧抽屉。
- 数据权限:右侧抽屉。
- 角色详情:现有只读抽屉。
- 删除角色:确认 Dialog。
绑定账号、菜单与功能权限、数据权限抽屉存在未保存修改时,关闭不需要二次确认。
3. 角色字段
| 字段 | 是否必填 | 控件 | 说明 |
|---|---|---|---|
| 角色名称 | 是 | 输入框 | 角色展示名称 |
| 角色编码 | 是 | 输入框 | 唯一编码,新增和编辑时均可填写 |
| 角色描述 | 否 | 多行文本 | 沿用现有 remark 字段,只调整界面文案 |
| 排序号 | 否 | 数字输入 | 展示排序 |
| 状态 | 是 | 列表开关 | 启用 / 停用;新增角色默认启用 |
3.1 角色编码
- 角色编码必须唯一。
- 编辑角色时允许修改角色编码。
- 修改编码不需要二次确认。
- 保存时校验新编码唯一。
- 角色关联使用稳定 ID 维持;修改编码不改变账号绑定、菜单权限、功能权限和数据权限关联。
- 修改成功后,被引用位置展示新的角色编码。
- 引用同步属于后端逻辑;当前前端和 Mock 只表达接口契约与交互结果。
3.2 内置角色
保留现有 builtIn 属性和保护规则:
- 内置超级管理员角色不能停用。
- 内置超级管理员角色不能删除。
- 内置超级管理员角色的账号绑定仅读,不可新增或解绑账号,防止通过角色管理新增超级管理员。
- 其他现有操作能力保持不变。
4. 新增与编辑角色
新增入口:点击「新增」。
编辑入口:角色行操作「编辑」。
打开方式:新增和编辑共用一个 Dialog。
规则:
- 新增角色只保存基础信息。
- 新增角色默认启用。
- 新增后通过角色行操作继续配置账号和权限。
- 状态不在新增 / 编辑 Dialog 中维护,继续使用角色列表中的状态开关。
- 编辑时允许修改角色编码,并按 3.1 节处理关联。
5. 绑定账号
入口:角色行操作「绑定账号」。
打开方式:右侧抽屉。
角色列表中的账号数量入口继续打开现有只读账号列表。
5.1 已绑定账号
已绑定账号列表展示:
- 使用信息列表展示,不使用表格。
- 账号名称。
- 绑定人员。
- 主部门。
- 状态。
- 绑定时间。
- 解绑操作。
5.2 选择账号
选择账号使用 Dialog,支持:
- 按账号名称筛选。
- 按人员筛选。
- 按部门筛选。
- 批量勾选账号。
- 停用账号正常展示并允许选择。
5.3 保存规则
- 账号选择 Dialog 点击「确定」只更新绑定账号抽屉中的草稿,不立即调用保存接口。
- 解绑操作也只更新抽屉中的草稿。
- 在绑定账号抽屉底部点击「确定」时,统一提交新增绑定和解绑。
- 新增账号角色关系时记录绑定时间。
- 解绑后重新绑定时重新记录绑定时间。
- 停用账号可绑定角色,但账号停用期间无法登录使用权限。
- 保存成功后更新绑定账号列表和角色表格中的账号数量。
- 抽屉关闭时不需要未保存修改确认。
6. 菜单与功能权限
入口:角色行操作「菜单和功能」。
打开方式:右侧抽屉。
页面结构:
text
左侧:菜单树
右侧:当前菜单的功能权限列表
底部:保存按钮6.1 菜单权限
- 菜单树只展示目录和菜单,功能权限不再作为菜单树叶子展示。
- 点击菜单后,右侧展示该菜单的功能权限。
- 菜单即使包含子菜单,仍按菜单处理,可独立授权并展示自身功能;子菜单也独立授权。
- 勾选目录时,级联勾选其下可授权的目录和菜单。
- 取消目录时,级联取消其下菜单及相关功能授权。
- 勾选菜单不会自动勾选该菜单下的功能权限。
- 取消菜单授权时,自动清除该菜单下的功能授权。
- 未授权菜单下的功能权限不可单独授权。
- 右侧已选功能使用轻量背景表示,不使用深色边框。
6.2 停用数据
- 停用菜单和停用功能不可新增授权。
- 已授权后停用的菜单或功能保持勾选并禁用,保存时继续保留历史授权。
- 从未授权的停用菜单或功能保持未勾选并禁用。
- 停用目录下的全部后代不可新增授权。
6.3 保存
点击抽屉底部「确定」后一次性保存:
- 角色菜单权限。
- 角色功能权限。
抽屉关闭时不需要未保存修改确认。
7. 数据权限
入口:角色行操作「数据权限」。
打开方式:右侧抽屉。
数据权限继续按菜单配置,保留现有数据模型和交互,不调整为按表保存行权限。
交互流程:
- 选择已授权菜单。
- 配置该菜单的行权限。
- 按菜单下的表配置列权限。
- 保存。
规则:
- 只有已授权菜单可以配置数据权限。
- 行权限按菜单保存。
- 表只用于组织和区分菜单下的列权限。
- 抽屉关闭时不需要未保存修改确认。
7.1 列权限
列权限基于菜单表定义。
展示字段:
- 字段名称。
- 字段标识。
- 字段类型。
- 是否可见。
- 是否可编辑。
规则:
- 仅展示参与列权限的字段。
columnPermission=false的字段不展示。- 可见字段使用
columnIds保存,可编辑字段使用editableColumnIds保存。 - 可编辑字段必须同时可见,
editableColumnIds必须是columnIds的子集。 - 字段编辑权限完全由角色配置,不依赖菜单字段的
formFill配置。 - 勾选「可编辑」时自动勾选「可见」,并禁用该字段的「可见」复选框。
- 取消「可编辑」后保留「可见」并恢复其操作;取消「可见」时同步移除可编辑授权。
- 「全部全选」和表级「全选」同时授予可见与可编辑;清空同时移除两类权限。
- 首次配置时,所有列默认不可见、不可编辑。
- 已有可见字段迁移后默认只读,不自动获得可编辑权限。
- 参与列权限但已停用且存在历史授权的字段继续展示为已选禁用。
- 当前页面只配置当前角色权限。
- 多角色分别合并可见字段和可编辑字段;任一启用角色授权即可生效,停用角色不参与合并。
- 新增表单中的字段可编辑性由新增功能权限和字段可编辑权限共同决定。
- 编辑表单中的字段可编辑性由编辑功能权限、当前记录行权限和字段可编辑权限共同决定。
- 只有可见权限、没有可编辑权限时,字段只读展示。
7.2 行权限
完全保留现有行权限范围、条件结构和交互:
- 所有记录。
- 本部门。
- 本部门及下级。
- 自定义部门。
- 与成员自己相关的记录。
- 指定记录。
- 其它记录权限。
- 成员相关字段和指定筛选条件。
行权限需要组织身份时,由后端根据账号当前绑定人员的实时组织关系计算;账号不保存任职关系继承配置。
未绑定人员账号涉及本人、本部门、本部门及下级等组织条件时,最终权限计算由后端按通用规则处理。
8. 角色停用
入口:角色列表状态开关。
内置超级管理员角色不能停用。
停用前二次确认,提示文案:
text
角色停用后,绑定账号将立即失去该角色下的权限。确认后:
- 角色状态变更为停用。
- 停用角色的权限立即失效。
- 角色与账号绑定关系保留。
- 角色重新启用后,权限重新生效。
9. 角色删除
保留现有删除限制:
- 内置角色不可删除。
- 启用角色不可删除,必须先停用。
- 已停用且已绑定账号的角色允许删除。
- 删除必须展示影响范围并二次确认。
删除前展示:
- 绑定账号数量。
- 菜单权限数量。
- 功能权限数量。
- 数据权限数量。
确认后:
- 删除角色。
- 删除账号角色绑定关系。
- 删除该角色下菜单权限。
- 删除该角色下功能权限。
- 删除该角色下数据权限。
10. 多角色权限合并
当账号拥有多个角色时:
| 权限类型 | 合并规则 |
|---|---|
| 菜单权限 | 并集 |
| 功能权限 | 并集 |
| 行权限 | 并集 |
| 列权限 | 并集 |
| 列权限冲突 | 可见优先 |
| 字段编辑权限 | 并集 |
| 字段编辑权限冲突 | 可编辑优先 |
示例:
- 角色 A 可见字段「手机号」。
- 角色 B 不可见字段「手机号」。
- 账号同时拥有角色 A 和角色 B。
- 最终字段「手机号」可见。
字段编辑示例:
- 角色 A 对字段「手机号」仅可见。
- 角色 B 对字段「手机号」可编辑。
- 账号同时拥有启用中的角色 A 和角色 B。
- 最终字段「手机号」可见且可编辑。
权限合并、角色停用后的权限失效和组织条件计算属于后端逻辑,前端不自行计算。
11. 当前实施边界
- 当前没有正式后台接口,允许扩展前端 API 类型和 Mock 接口。
- 前端负责字段结构、校验、影响范围展示、二次确认和交互。
- 权限计算、状态联动、编码引用同步和多角色合并以后端结果为准。
- 保持现有角色管理页面展示形式和已有属性,不引入四页签布局。
12. 当前代码实现(截至 2026-09-01)
角色列表:
- 支持名称/编码关键字、启用状态和行权限范围筛选,并提供列显隐和分页。
- 默认展示名称、编码、数据权限、账号数、菜单数、功能数、排序、启用状态、更新时间和操作。
- 新增和编辑使用 Dialog;角色编码可编辑,名称、编码、排序和角色描述均已接入表单校验。
- 内置超级管理员角色带“内置”标识,不能停用或删除;账号绑定入口为只读查看。
账号绑定:
- 使用右侧抽屉展示已绑定账号和可选账号,不使用表格作为主要绑定展示。
- 普通角色可批量勾选账号,点击抽屉底部确定后统一提交;绑定时间随成员数据展示。
- 点击列表中的账号数量时以只读模式查看成员。
菜单、功能和数据权限:
- 菜单与功能使用左右布局抽屉:左侧为菜单树,右侧为当前菜单功能;目录和菜单使用不同图标识别,功能必须在菜单已授权后选择。
- 数据权限只针对已授权菜单配置;左侧为已授权菜单树,右侧为当前菜单的行权限和字段权限。
- 行权限支持全部、本部门、本部门及下级、自定义部门、本人相关和指定条件;非“全部”时可继续配置其它记录查看范围。
- 字段权限按菜单下的表分组,每个字段分别维护“可见”和“可编辑”。勾选可编辑会自动勾选可见,并禁用对应可见取消操作。
- “全部全选”和表级“全选”同时勾选可见与可编辑;清空同时取消两类授权。
- 权限配置均在抽屉底部点击确定后统一提交。
状态与删除:
- 角色停用需要二次确认,停用后绑定账号立即失去该角色权限。
- 只有已停用且非内置角色可删除;删除 Dialog 展示账号、菜单、功能和数据权限影响数量。
- 已定义角色详情、成员、菜单功能权限、数据权限、启停、删除影响和删除接口,并提供 Mock 行为。
Grow Admin