跳到主要内容

获取表单描述接口

接口

HttpPost: api/FrontEnd/GetFormDescription

返回当前用户有权访问的表单字段元数据、表单校验规则和业务规则摘要,供定制移动端渲染页面并提供即时提示。

接口不返回业务规则节点、JavaScript 或可执行脚本。复杂业务规则可能访问服务端数据、权限或工作流上下文,因此必须继续通过 AddDataUpdateDataSubmitData 在服务端执行。客户端只能将本接口中的字段规则和公式作为交互提示,不能替代服务端校验。

请求头

参数名是否必填说明
Authorization登录令牌,格式为 Bearer {token}
TnCode租户编码。
UserId条件必填非本机或非 IP 白名单调用时用于数据令牌签名。
Timestamp条件必填非本机或非 IP 白名单调用时使用 13 位毫秒时间戳。
Datatoken条件必填非本机或非 IP 白名单调用时按平台规则生成的数据令牌。

请求体

字段类型是否必填说明
userIdstring当前登录用户的账号编码或 ObjectID,必须和令牌用户一致。
menuIdstring功能菜单编码;引用菜单会自动解析为源表单。
{
"userId": "18f923a7-5a5e-426d-94ae-a55ad1a4b239",
"menuId": "purchase_apply"
}

返回结果

{
"menuId": "purchase_apply",
"formCode": "purchase_apply",
"title": "采购申请",
"ruleExecution": "server",
"fields": [
{
"code": "Amount",
"label": "金额",
"logicType": "Decimal",
"componentKey": "NumberComponent",
"required": true,
"readOnly": false,
"maxLength": 0,
"defaultValue": null,
"formula": ""
}
],
"validationRules": [
{
"rule": "{Amount} > 0",
"text": "金额必须大于零",
"field": ["Amount"],
"message": "金额必须大于零"
}
],
"businessRules": [
{
"id": "rule-001",
"name": "金额变更处理",
"description": "金额变更后执行审批相关逻辑",
"category": "form",
"subFormCode": "",
"fieldCode": "Amount",
"buttonTitle": "",
"enabled": true,
"execution": "server",
"triggers": [
{
"id": "event-001",
"type": "change",
"fieldCode": "Amount",
"isCheckBefore": false
}
]
}
]
}

字段说明

字段说明
ruleExecution固定为 server,表示保存和提交时必须由平台执行最终规则。
fields[].logicType数据模型逻辑类型,例如 ShortStringDecimalDateTime
fields[].componentKey平台控件类型,可用于移动端选择控件实现。
fields[].required静态必填配置。条件必填仍以服务端业务规则为准。
fields[].readOnly数据模型公式字段的只读状态。页面级动态禁用规则不在此字段中表达。
fields[].formula平台公式原文。仅在移动端实现了兼容的公式解析器后才可用于预览计算;保存时平台会重新计算。
validationRules表单设计器配置的校验规则原文和关联字段。移动端可显示提示,但不能将其作为最终判定。
businessRules业务规则的元信息和触发信息。execution=server 表示不可在客户端直接执行。

推荐接入流程

  1. 打开新增或编辑页面时调用本接口,并使用 fields 渲染表单。
  2. required、最大长度和已兼容的 formula 进行本地即时提示。
  3. businessRules[].triggers 识别变更和按钮触发场景,但不要执行规则节点或拼接脚本。
  4. 保存或提交时调用现有 AddDataUpdateDataSubmitData 接口。
  5. 将服务端返回的字段或业务错误显示到对应控件,服务端结果为最终结果。

错误说明

场景返回信息
userId 为空用户id为空
menuId 为空菜单id为空
请求用户与登录用户不一致只能查询当前登录用户的表单规则
用户无菜单权限当前用户无权访问该菜单
表单数据模型不存在表单数据模型不存在