# 表单状态控制

# 概述

本功能用于实现表单编辑时的字段级权限控制,可以控制用户在编辑表单时只能修改部分字段,而不能修改其他字段。例如员工档案中,不同部门只能编辑自己负责的栏目。

# 一、示例演示:员工档案表单状态控制

# 演示路径

  • 访问地址:应用中心
  • 模块名称:表单状态控制

# 业务处理效果

模块名称:员工档案

数据列表(共3条数据):

  • 史蒂夫的档案
  • 张三的档案
  • 李四的档案

编辑效果(编辑史蒂夫的档案):

  • 基本信息栏目:联系电话、家庭住址、出生日期可编辑(亮色)
  • HR信息栏目:所有字段不可编辑(灰色)
  • 财务信息栏目:所有字段不可编辑(灰色)

# 二、实现方法

# 第一步:创建表单状态

操作路径:集团流程库 → 表单设计 → 员工档案

配置步骤

  1. 打开表单设计界面
  2. 点击“高级” → 选择“表单状态”页签
  3. 点击“新建表单状态”,创建状态(如SelfEdit)
  4. 编辑表单状态,进入“数据控制”页签
  5. 为每个字段设置读、写权限:
    • 写权限:勾选允许修改的字段(联系电话、家庭住址、出生日期)
    • 读权限:保持默认勾选

配置说明

  • 表单状态名称:SelfEdit
  • 可编辑字段:联系电话、家庭住址、出生日期
  • 只读字段:HR信息、财务信息等栏目下的所有字段

# 第二步:为编辑按钮指定表单状态

文件路径wwwroot\Apps\samples\FormStatus.js

// 第40-42行:为编辑按钮指定表单状态
me.btnEdit = me.createEditBtn({
    formState: 'SelfEdit'  // 指定编辑时使用的表单状态
});

代码说明

  • formState: 'SelfEdit':为编辑按钮指定表单状态
  • 表单状态名称必须与第一步创建的状态名称一致

# 三、核心原理

# 表单状态配置

配置项 说明
位置 表单设计 → 高级 → 表单状态
作用 定义不同场景下字段的读写权限
控制粒度 可精确到每个字段的读、写权限

# 表单状态生效

// 编辑按钮指定表单状态
me.btnEdit = me.createEditBtn({
    formState: 'SelfEdit'  // 表单状态名称
});

# 四、配置步骤

# 操作步骤

  1. 创建表单状态:在表单设计中新建表单状态,配置字段读写权限
  2. 指定表单状态:在应用代码中为编辑按钮添加formState参数

# 关键要点

  • 两步完成:创建表单状态 + 指定表单状态
  • 字段级控制:可精确控制每个字段的读写权限
  • 灵活扩展:可创建多个表单状态用于不同场景

# 五、扩展应用

# 多个表单状态示例

场景一:本人修改基本信息

状态名称: SelfEdit
可编辑字段: 联系电话、家庭住址、出生日期
只读字段: HR信息、财务信息

场景二:HR修改HR信息

状态名称: HREdit
可编辑字段: 入职日期、职位、部门、薪资
只读字段: 基本信息、财务信息

场景三:财务修改财务信息

状态名称: FinanceEdit
可编辑字段: 银行卡号、个税信息
只读字段: 基本信息、HR信息

# 应用代码

// 根据不同角色使用不同表单状态
me.btnEdit = me.createEditBtn({
    formState: currentUserRole == 'HR' ? 'HREdit' : 'SelfEdit'
});

# 常见应用场景

场景 表单状态 可编辑字段
本人修改 SelfEdit 联系方式、地址等基本信息
HR修改 HREdit 职位、部门、薪资等HR信息
财务修改 FinanceEdit 银行卡、个税等财务信息
审批修改 ApproveEdit 审批意见、状态等字段
管理员修改 AdminEdit 所有字段可编辑

# 六、对比说明

控制类型 控制粒度 适用场景 实现方式
应用权限 整个模块 控制谁能访问模块、谁能增删改 资源授权
记录级权限 每条记录 控制谁能编辑、删除特定记录 重载GetRecordPermisionsAsync
表单状态 每个字段 控制编辑时哪些字段可修改 创建表单状态 + 指定状态

# 七、注意事项

  1. 状态名称一致:前台指定的formState名称必须与表单设计中创建的状态名称完全一致
  2. 字段权限配置:在表单状态的“数据控制”页签中,注意区分“读”和“写”权限
  3. 多个状态:一个表单可以创建多个表单状态,用于不同场景
  4. 默认状态:如果不指定formState,则使用表单的默认编辑状态(所有字段可编辑)

# 八、总结

表单状态控制的实现非常便捷:

  • 两步完成:创建表单状态 + 指定表单状态
  • 字段级控制:可精确控制每个字段的读写权限
  • 可视化配置:表单状态在表单设计中图形化配置
  • 灵活扩展:可创建多个表单状态用于不同场景

通过这种方式,可以轻松实现“不同部门只能编辑自己负责的栏目”、“本人只能修改基本信息”等常见需求,实现了字段级的权限控制。