身份与权限
身份与权限按「当前用户有没有某权限 / 某角色」,控制表单里字段的显隐、必填、禁用,以及公式分支。配置人员在条件与公式里勾选权限点;权限树和当前用户授权由环境准备。
以「商品维护」为例:导出按钮、折扣率、审批意见分别用权限或角色控制。设计态画布仍会画出全部字段,方便点选配置;预览才会按当前授权隐藏或禁用。

在哪里找
业务侧身份与权限没有单独的功能栏入口,而是写在组件的高级配置里:
选中要控制的字段或按钮 → 右侧 组件配置 → 高级配置 → 按需求点 设置隐藏条件 / 设置必填条件 / 设置禁用条件,或在计算公式里使用 HAS_PERMISSION / HAS_ROLE。
条件类型里能看到 权限、角色,说明环境已预置权限树 / 角色树;否则这两项不会出现。

若环境提供设计器配置面板(常见为页面右侧齿轮),可用 权限模拟、角色模拟 勾选当前用户授权,便于预览验收。这与同面板里的 组件操作权限(设计器里能不能删字段、改事件)不是一回事。

和「设计器操作权限」的区别
| 身份与权限(本文) | 设计器组件操作权限 | |
|---|---|---|
| 作用对象 | 填写 / 预览时的业务表单 | 设计器里能否删字段、改事件等 |
| 典型问题 | 无导出权限则隐藏导出按钮 | 实施账号不能删某系统字段 |
| 配置方式 | 权限树 + 当前用户授权 + 条件/公式 | 环境对设计器的组件权限配置 |
| 配置面板位置(若有) | 权限模拟 / 角色模拟 | 组件操作权限 |
二者互不影响,可同时存在。本文只讲业务侧身份与权限。
整体流程
1. 环境预置「权限树」「角色树」(设计时可勾选的清单)
2. 运行 / 预览时写入「当前用户拥有的权限、角色」
3. 在隐藏 / 必填 / 禁用 / 联动 / 事件条件,或公式中判断
4. 预览切换不同身份数据,验收显隐与禁用未预置树时,条件面板里通常不会出现「权限」「角色」类型。
只预置树、未写入当前用户授权时,判断结果会一直不匹配,表现像「谁都没权限」。
环境准备(管理员侧)
若配置人员看不到「权限 / 角色」类型,请将本节交给管理员完成。
1. 预置权限树与角色树
由环境提供两棵树(结构相同):
| 项 | 含义 |
|---|---|
| 标识 | 唯一编码,条件与公式都用它判断,建议稳定,如 goods:info:export |
| 名称 | 显示名称,如「导出商品」 |
| 子级 | 可选,形成树形分组 |
示例树(商品维护场景):
权限树(节选):
商品管理
└ 商品信息
├ 商品列表 goods:info:list
└ 导出商品 goods:info:export角色树(节选):
平台端
└ 平台管理员
└ 审核管理员 platform:admin:audit
商户端
└ 门店角色
├ 店长 merchant:store:manager
└ 收银员 merchant:store:cashier说明:
- 空配置或不配 → 条件里不出现对应类型。
- 树只是「可选清单」,不等于当前用户已拥有这些权限。
- 标识需与登录态 / 后端发放的编码一致。
2. 写入当前用户拥有的权限与角色
预览与正式运行时,需要把当前用户实际拥有的标识列表写入全局数据(名称以环境约定为准,常见为):
| 数据名 | 含义 | 内容形态 |
|---|---|---|
$permissions | 当前用户权限标识列表 | 如「导出商品」对应的编码数组 |
$roles | 当前用户角色标识列表 | 如「店长」对应的编码数组 |
有设计器配置面板时:打开 权限模拟 / 角色模拟 → 勾选节点,即写入上述列表。正式环境常见写入时机:登录成功、进入表单页、表单加载完成时按接口结果更新。
权限或角色变更后需重新写入;已打开的表单才会按新授权计算。
设计预览与正式环境一致
建议预览所用的授权数据与线上同一套写入方式,避免「设计器里看着对、上线后不对」。
配置人员如何使用
若条件类型里已能看到「权限」「角色」:
- 按业务描述规则(例如「无导出权限则隐藏导出按钮」)。
- 落到隐藏 / 必填 / 禁用 / 公式。
- 用权限模拟切换身份预览,或请管理员用测试账号验收。
- 权限点改名只改显示名称;改标识必须同步改条件、公式与后端发放。
在逻辑条件中使用
适用于:隐藏条件、必填条件、禁用条件、数据联动、事件流条件等。条件写法见使用逻辑条件。
界面比较方式是 包含 / 不包含(对应编码 on / notOn)。判断的是:当前用户列表里是否包含所选节点的标识。
选中目标组件 → 设置隐藏条件(或必填 / 禁用)→ 条件类型选 权限 或 角色 → 比较方式选 包含 / 不包含 → 从树中勾选目标权限点或角色 → 确认 条件成立后组件状态(隐藏 / 显示,或禁用 / 启用)→ 保存后用不同授权预览。

场景示例
入门:无导出权限则隐藏导出按钮
背景:商品维护表给运营填写资料,只有具备「导出商品」权限的人才能看到导出按钮,避免无权限账号误点。
选中 导出商品 按钮(点按钮外层的拖拽框;若点到「行内布局」容器,再点一次更小的按钮框)→ 高级配置 → 设置隐藏条件 → 类型 权限,比较 不包含,值选 导出商品 → 条件成立后组件状态 选 隐藏。

预期:当前用户授权不含「导出商品」时,预览里没有该按钮;勾选该权限后再预览,按钮出现。
入门:非店长禁用折扣率
背景:收银员可以看价格,但不能改折扣;店长才能改。
选中 折扣率 → 设置禁用条件:类型 角色,比较 不包含,值选 店长 → 条件成立后状态选 禁用。

预期:未授予店长角色时,预览里折扣率灰显不可改;授予店长后可改。
常用:有审核角色才显示审批区
背景:一线运营填商品信息;「审批意见」只给审核管理员看。
把隐藏条件挂在 审批意见 上:角色 不包含 审核管理员 → 成立后隐藏。隐藏条件也可挂在容器上,用大纲检查结构。三处授权点总览见文首图。
常用:权限 + 业务字段组合
显示「特批说明」当:
(权限包含 special:approve)
AND
(申请金额 大于 10000)用条件组表达。
常用:收银员只读、店长可改
同一「折扣率」字段:角色不包含店长 → 禁用;店长可编辑。比维护两套表单更简便。
预览对照:无权 vs 有权
用设计器配置里的 权限模拟 / 角色模拟(若环境提供)切换当前用户授权后点预览:
先清空勾选:预览中导出按钮消失、折扣率禁用、审批意见隐藏。

再勾选 导出商品、店长、审核管理员:

再次预览:按钮出现、折扣可改、审批意见可见。

预期:同一张表随授权变化显隐 / 禁用,不必改表结构。
在计算公式中使用
隐藏 / 必填 / 禁用弹窗也可切到 计算公式。内置高阶函数(需环境已注入当前用户授权):
| 函数 | 含义 | 示例含义 |
|---|---|---|
HAS_PERMISSION("编码") | 是否拥有该权限 | 有导出权则为真 |
HAS_ROLE("编码") | 是否拥有该角色 | 是店长则为真 |
在左侧函数树展开 高级函数,点 HAS_PERMISSION / HAS_ROLE 插入。编码必须与树节点标识完全一致。
计算公式页没有「条件成立后组件状态」开关:由公式结果决定(结果为真则触发隐藏 / 禁用 / 必填,具体以当前弹窗标题为准)。例如隐藏条件里写 NOT(HAS_PERMISSION(...)),表示「没有该权限时结果为真 → 隐藏」。
可与 IF、NOT 等组合。更多函数见使用计算公式。
示例:用公式隐藏导出按钮
背景:与「逻辑条件」里「无导出权限则隐藏」相同,改用公式书写,便于和其它运算组合。
步骤:
- 选中 导出商品 按钮。

- 高级配置 → 设置隐藏条件。

- 弹窗顶部切到 计算公式。

- 左侧 函数公式 → 展开 高级函数。

- 点 HAS_PERMISSION 插入函数(也可手写)。

- 在编辑器写成无权则隐藏,例如:
NOT(HAS_PERMISSION("goods:info:export"))
- 点 确定 保存;用权限模拟切换授权后预览验收。
预期:当前用户没有 goods:info:export 时预览不显示导出按钮;勾选该权限后再预览,按钮出现。
示例:用公式禁用折扣率
背景:非店长不能改折扣,用 HAS_ROLE 写禁用条件。
步骤:
- 选中 折扣率。

- 点 设置禁用条件。

- 切到 计算公式。

- 在高级函数中点 HAS_ROLE(或手写)。

- 写成「不是店长则禁用」:
NOT(HAS_ROLE("merchant:store:manager"))
- 点 确定;用角色模拟去掉 / 勾选 店长 后预览。
预期:未授予店长时折扣率灰显;授予店长后可改。
示例:IF 组合角色判断
背景:「审批意见」只给审核管理员看;用 IF + HAS_ROLE 表达「有角色不隐藏,否则隐藏」(返回 1 表示成立 / 隐藏,0 表示不成立)。
步骤:
- 选中 审批意见。

- 设置隐藏条件 → 计算公式,写入:
IF(HAS_ROLE("platform:admin:audit"), 0, 1)也可用更短的等价写法:
NOT(HAS_ROLE("platform:admin:audit"))
- 点 确定 后预览:无审核管理员角色时隐藏;勾选该角色后显示。
预期:与逻辑条件「角色不包含审核管理员 → 隐藏」效果一致,公式便于再嵌套其它字段判断。
验收清单
| 检查项 | 预期 |
|---|---|
| 树已配置 | 条件可选权限 / 角色 |
| 注入有值 | 有权账号看见按钮,无权账号隐藏 / 禁用 |
| 标识一致 | 树节点、注入列表、公式参数同一编码 |
| 预览与正式 | 同一套注入逻辑 |
| 与忽略隐藏字段 | 隐藏后提交策略符合表单配置 |
注意点
- 前端权限只改善体验与误操作,不能替代服务端鉴权。
- 不要把权限树当成「当前用户权限」;必须单独写入当前用户授权列表。
- 角色与权限选一种主模型即可,避免同一按钮两套互相冲突的条件。
- 公式里的字符串编码需与树节点标识完全一致(含冒号、大小写)。
- 画布设计态通常仍显示被隐藏的组件,便于配置;以预览结果为准。
- 若用变量控制禁用,见数据绑定;标准权限判断优先本文条件 / 公式。


