Skip to content

身份与权限 ​

身份与权限按「当前用户有没有某权限 / 某角色」,控制表单里字段的显隐、必填、禁用,以及公式分支。配置人员在条件与公式里勾选权限点;权限树和当前用户授权由环境准备。

以「商品维护」为例:导出按钮、折扣率、审批意见分别用权限或角色控制。设计态画布仍会画出全部字段,方便点选配置;预览才会按当前授权隐藏或禁用。

商品维护中的三处授权点

在哪里找 ​

业务侧身份与权限没有单独的功能栏入口,而是写在组件的高级配置里:

选中要控制的字段或按钮 → 右侧 组件配置 → 高级配置 → 按需求点 设置隐藏条件 / 设置必填条件 / 设置禁用条件,或在计算公式里使用 HAS_PERMISSION / HAS_ROLE。

条件类型里能看到 权限、角色,说明环境已预置权限树 / 角色树;否则这两项不会出现。

设置隐藏条件入口

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

设计器配置:权限模拟与角色模拟

和「设计器操作权限」的区别 ​

身份与权限(本文)设计器组件操作权限
作用对象填写 / 预览时的业务表单设计器里能否删字段、改事件等
典型问题无导出权限则隐藏导出按钮实施账号不能删某系统字段
配置方式权限树 + 当前用户授权 + 条件/公式环境对设计器的组件权限配置
配置面板位置(若有)权限模拟 / 角色模拟组件操作权限

二者互不影响,可同时存在。本文只讲业务侧身份与权限。

整体流程 ​

text
1. 环境预置「权限树」「角色树」(设计时可勾选的清单)
2. 运行 / 预览时写入「当前用户拥有的权限、角色」
3. 在隐藏 / 必填 / 禁用 / 联动 / 事件条件,或公式中判断
4. 预览切换不同身份数据,验收显隐与禁用

未预置树时,条件面板里通常不会出现「权限」「角色」类型。
只预置树、未写入当前用户授权时,判断结果会一直不匹配,表现像「谁都没权限」。

环境准备(管理员侧) ​

若配置人员看不到「权限 / 角色」类型,请将本节交给管理员完成。

1. 预置权限树与角色树 ​

由环境提供两棵树(结构相同):

项含义
标识唯一编码,条件与公式都用它判断,建议稳定,如 goods:info:export
名称显示名称,如「导出商品」
子级可选,形成树形分组

示例树(商品维护场景):

权限树(节选):

text
商品管理
  └ 商品信息
       ├ 商品列表        goods:info:list
       └ 导出商品        goods:info:export

角色树(节选):

text
平台端
  └ 平台管理员
       └ 审核管理员      platform:admin:audit
商户端
  └ 门店角色
       ├ 店长            merchant:store:manager
       └ 收银员          merchant:store:cashier

说明:

  • 空配置或不配 → 条件里不出现对应类型。
  • 树只是「可选清单」,不等于当前用户已拥有这些权限。
  • 标识需与登录态 / 后端发放的编码一致。

2. 写入当前用户拥有的权限与角色 ​

预览与正式运行时,需要把当前用户实际拥有的标识列表写入全局数据(名称以环境约定为准,常见为):

数据名含义内容形态
$permissions当前用户权限标识列表如「导出商品」对应的编码数组
$roles当前用户角色标识列表如「店长」对应的编码数组

有设计器配置面板时:打开 权限模拟 / 角色模拟 → 勾选节点,即写入上述列表。正式环境常见写入时机:登录成功、进入表单页、表单加载完成时按接口结果更新。

权限或角色变更后需重新写入;已打开的表单才会按新授权计算。

设计预览与正式环境一致

建议预览所用的授权数据与线上同一套写入方式,避免「设计器里看着对、上线后不对」。

配置人员如何使用 ​

若条件类型里已能看到「权限」「角色」:

  1. 按业务描述规则(例如「无导出权限则隐藏导出按钮」)。
  2. 落到隐藏 / 必填 / 禁用 / 公式。
  3. 用权限模拟切换身份预览,或请管理员用测试账号验收。
  4. 权限点改名只改显示名称;改标识必须同步改条件、公式与后端发放。

在逻辑条件中使用 ​

适用于:隐藏条件、必填条件、禁用条件、数据联动、事件流条件等。条件写法见使用逻辑条件。

界面比较方式是 包含 / 不包含(对应编码 on / notOn)。判断的是:当前用户列表里是否包含所选节点的标识。

选中目标组件 → 设置隐藏条件(或必填 / 禁用)→ 条件类型选 权限 或 角色 → 比较方式选 包含 / 不包含 → 从树中勾选目标权限点或角色 → 确认 条件成立后组件状态(隐藏 / 显示,或禁用 / 启用)→ 保存后用不同授权预览。

隐藏条件弹窗

场景示例 ​

入门:无导出权限则隐藏导出按钮 ​

背景:商品维护表给运营填写资料,只有具备「导出商品」权限的人才能看到导出按钮,避免无权限账号误点。

选中 导出商品 按钮(点按钮外层的拖拽框;若点到「行内布局」容器,再点一次更小的按钮框)→ 高级配置 → 设置隐藏条件 → 类型 权限,比较 不包含,值选 导出商品 → 条件成立后组件状态 选 隐藏。

隐藏条件配置完成

预期:当前用户授权不含「导出商品」时,预览里没有该按钮;勾选该权限后再预览,按钮出现。

入门:非店长禁用折扣率 ​

背景:收银员可以看价格,但不能改折扣;店长才能改。

选中 折扣率 → 设置禁用条件:类型 角色,比较 不包含,值选 店长 → 条件成立后状态选 禁用。

禁用条件:角色不包含店长

预期:未授予店长角色时,预览里折扣率灰显不可改;授予店长后可改。

常用:有审核角色才显示审批区 ​

背景:一线运营填商品信息;「审批意见」只给审核管理员看。

把隐藏条件挂在 审批意见 上:角色 不包含 审核管理员 → 成立后隐藏。隐藏条件也可挂在容器上,用大纲检查结构。三处授权点总览见文首图。

常用:权限 + 业务字段组合 ​

text
显示「特批说明」当:
  (权限包含 special:approve)
  AND
  (申请金额 大于 10000)

用条件组表达。

常用:收银员只读、店长可改 ​

同一「折扣率」字段:角色不包含店长 → 禁用;店长可编辑。比维护两套表单更简便。

预览对照:无权 vs 有权 ​

用设计器配置里的 权限模拟 / 角色模拟(若环境提供)切换当前用户授权后点预览:

先清空勾选:预览中导出按钮消失、折扣率禁用、审批意见隐藏。

预览:当前用户无对应授权

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

勾选导出权限、店长、审核管理员

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

预览:已勾选后的效果

预期:同一张表随授权变化显隐 / 禁用,不必改表结构。

在计算公式中使用 ​

隐藏 / 必填 / 禁用弹窗也可切到 计算公式。内置高阶函数(需环境已注入当前用户授权):

函数含义示例含义
HAS_PERMISSION("编码")是否拥有该权限有导出权则为真
HAS_ROLE("编码")是否拥有该角色是店长则为真

在左侧函数树展开 高级函数,点 HAS_PERMISSION / HAS_ROLE 插入。编码必须与树节点标识完全一致。

计算公式页没有「条件成立后组件状态」开关:由公式结果决定(结果为真则触发隐藏 / 禁用 / 必填,具体以当前弹窗标题为准)。例如隐藏条件里写 NOT(HAS_PERMISSION(...)),表示「没有该权限时结果为真 → 隐藏」。

可与 IF、NOT 等组合。更多函数见使用计算公式。

示例:用公式隐藏导出按钮 ​

背景:与「逻辑条件」里「无导出权限则隐藏」相同,改用公式书写,便于和其它运算组合。

步骤:

  1. 选中 导出商品 按钮。

选中导出商品

  1. 高级配置 → 设置隐藏条件。

设置隐藏条件

  1. 弹窗顶部切到 计算公式。

切到计算公式

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

展开高级函数

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

点 HAS_PERMISSION

  1. 在编辑器写成无权则隐藏,例如:
text
NOT(HAS_PERMISSION("goods:info:export"))

填写隐藏公式

  1. 点 确定 保存;用权限模拟切换授权后预览验收。

预期:当前用户没有 goods:info:export 时预览不显示导出按钮;勾选该权限后再预览,按钮出现。

示例:用公式禁用折扣率 ​

背景:非店长不能改折扣,用 HAS_ROLE 写禁用条件。

步骤:

  1. 选中 折扣率。

选中折扣率

  1. 点 设置禁用条件。

设置禁用条件

  1. 切到 计算公式。

禁用条件切到计算公式

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

点 HAS_ROLE

  1. 写成「不是店长则禁用」:
text
NOT(HAS_ROLE("merchant:store:manager"))

填写禁用公式

  1. 点 确定;用角色模拟去掉 / 勾选 店长 后预览。

预期:未授予店长时折扣率灰显;授予店长后可改。

示例:IF 组合角色判断 ​

背景:「审批意见」只给审核管理员看;用 IF + HAS_ROLE 表达「有角色不隐藏,否则隐藏」(返回 1 表示成立 / 隐藏,0 表示不成立)。

步骤:

  1. 选中 审批意见。

选中审批意见

  1. 设置隐藏条件 → 计算公式,写入:
text
IF(HAS_ROLE("platform:admin:audit"), 0, 1)

也可用更短的等价写法:

text
NOT(HAS_ROLE("platform:admin:audit"))

IF 组合角色判断

  1. 点 确定 后预览:无审核管理员角色时隐藏;勾选该角色后显示。

预期:与逻辑条件「角色不包含审核管理员 → 隐藏」效果一致,公式便于再嵌套其它字段判断。

验收清单 ​

检查项预期
树已配置条件可选权限 / 角色
注入有值有权账号看见按钮,无权账号隐藏 / 禁用
标识一致树节点、注入列表、公式参数同一编码
预览与正式同一套注入逻辑
与忽略隐藏字段隐藏后提交策略符合表单配置

注意点 ​

  • 前端权限只改善体验与误操作,不能替代服务端鉴权。
  • 不要把权限树当成「当前用户权限」;必须单独写入当前用户授权列表。
  • 角色与权限选一种主模型即可,避免同一按钮两套互相冲突的条件。
  • 公式里的字符串编码需与树节点标识完全一致(含冒号、大小写)。
  • 画布设计态通常仍显示被隐藏的组件,便于配置;以预览结果为准。
  • 若用变量控制禁用,见数据绑定;标准权限判断优先本文条件 / 公式。

相关阅读 ​

相关技术文档 ​