角色管理
一句话:角色 = 一组权限的打包名字。用户能点哪些按钮、看哪些数据,不直接配在人身上,而是配在角色上、再把角色挂给人。本页建角色、看角色成员、并跳去给角色授权。
功能在哪
- 菜单路径:系统管理 → 组织权限 → 角色管理
- 地址栏路由:
/system/org-permission/role

界面认识
| 区域 | 作用 | 常用操作 |
|---|---|---|
| 查询区 | 按 角色名称 / 角色编码 / 状态 / 创建时间 过滤 | 「搜索」「重置」 |
| 工具条 | 整页级动作 | 「新增」建角色;「导出」下载 Excel;勾选行后「批量删除」 |
| 列表 | 一角色一行:序号 / 角色名称 / 角色类型 / 角色编码 / 显示顺序 / 备注 / 状态 / 创建时间 | 行内「编辑」「成员」「资源授权」「删除」;状态列开关直接启停 |
| 分页 | 右下角 | 改每页条数、翻页 |
「角色类型」列的彩色标签来自字典:内置(平台自带,如超级管理员)/ 自定义(租户自建)。标签颜色全站统一,见通用操作约定。

内置角色动不了
类型为「内置」的角色(如 super_admin)不能改不能删,报 不能操作类型为系统内置的角色。要调整超管能力请改代码级配置,不要在界面上试。
常用操作
新建角色
- 点「新增」;
- 填「角色名称」(显示名,如「销售专员」);
- 填「角色编码」(唯一标识,如
salesman,建议小写英文); - 填「显示顺序」,确认「状态」为开启,可填「备注」;
- 点「确定」。

结果:列表多出一行,类型为「自定义」。此时它还没有任何权限——下一步去「资源授权」。
给角色授权(最重要的一步)
行内点「资源授权」,跳转到独立的授权页(路由 /system/role/grant?roleId=…)。
结果:在授权页里给角色勾菜单/按钮/数据集并配置行级规则。完整讲法见角色资源授权。
建角色 → 授权 → 挂人,是固定三步
- 本页「新增」建壳子;
- 行内「资源授权」给能力;
- 行内「成员」或用户管理的「分配角色」把人挂进来。 顺序错了会出现「人有角色但角色没权限」的空壳状态。
成员配置:给角色加人减人
- 行内点「成员」,跳转到成员页(路由
/system/role/member?roleId=…,页签标题「成员配置」); - 点「添加成员」,在弹窗里勾用户确定;
- 要移除时行内点「移除」。

结果:被加进来的用户下次登录即拥有该角色权限;被移除的用户重登后失去。
两个入口是同一件事
本页「成员」加人,与用户管理行内「分配角色」勾角色,写的是同一张关系表,任选顺手的入口。
启用 / 停用角色
直接拨状态列开关。
结果:停用后,挂着该角色的用户重登即失去对应权限;登录本身不受影响。角色被禁用还会在授权链路报 名字为【{}】的角色已被禁用。
删除 / 批量删除
行内「删除」或勾选后「批量删除」,确认即可。
删除前先看成员数
角色下还挂着用户时删除,那些用户会立刻失去对应权限。先点「成员」确认或转移。
导出角色表
点「导出」,按当前查询条件生成 Excel,无弹窗直接下载。
字段说明
| 字段 | 必填 | 取值 / 校验 | 说明 |
|---|---|---|---|
| 角色名称 | 是 | 租户内唯一 | 重名报 已经存在名为【{}】的角色 |
| 角色编码 | 是 | 租户内唯一;super_admin 等保留码不可用 | 重码报 已经存在标识为【{}】的角色;占用保留码报 标识【{}】不能使用 |
| 显示顺序 | 是 | 整数 | 列表排序 |
| 状态 | 是 | 开启 / 关闭 | 关闭即停用该角色全部权限 |
| 备注 | 否 | 文本 | 记职责边界 |
视角对照
| 视角 | 看到什么 |
|---|---|
超管 admin | 全部角色,含内置 超级管理员 |
租户管理员 docadmin | 本租户角色(内置 + 自定义),可编辑自定义角色 |
普通员工 salesman01 | 无角色管理菜单:侧边栏无入口,直达路由 403 |
角色也是租户隔离的
test 租户看不到「启凌智搭」租户的角色,反之亦然;内置角色每家租户各有一份自己的实例。
进阶
常见问题
Q:报「已经存在名为【销售专员】的角色」? A:角色名称租户内唯一。改名,或编辑已有角色。
Q:报「标识【super_admin】不能使用」? A:保留编码禁止占用。换一个业务化编码,如 sales_lead。
Q:给角色加了成员,用户界面没变? A:权限在登录时加载,退出重登即生效。
Q:行内「资源授权」按钮是灰的 / 没有? A:当前账号缺少 system:grant:query 授权。让超管在角色资源授权里给你的角色补上。
Q:删角色报「角色不存在」? A:该角色刚被别的窗口删除。点「搜索」刷新列表再操作。
