获取表单描述接口
接口
HttpPost: api/FrontEnd/GetFormDescription
返回当前用户有权访问的表单字段元数据、表单校验规则和业务规则摘要,供定制移动端渲染页面并提供即时提示。
接口不返回业务规则节点、JavaScript 或可执行脚本。复杂业务规则可能访问服务端数据、权限或工作流上下文,因此必须继续通过 AddData、UpdateData 或 SubmitData 在服务端执行。客户端只能将本接口中的字段规则和公式作为交互提示,不能替代服务端校验。
请求头
| 参数名 | 是否必填 | 说明 |
|---|---|---|
Authorization | 是 | 登录令牌,格式为 Bearer {token}。 |
TnCode | 是 | 租户编码。 |
UserId | 条件必填 | 非本机或非 IP 白名单调用时用于数据令牌签名。 |
Timestamp | 条件必填 | 非本机或非 IP 白名单调用时使用 13 位毫秒时间戳。 |
Datatoken | 条件必填 | 非本机或非 IP 白名单调用时按平台规则生成的数据令牌。 |
请求体
| 字段 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
userId | string | 是 | 当前登录用户的账号编码或 ObjectID,必须和令牌用户一致。 |
menuId | string | 是 | 功能菜单编码;引用菜单会自动解析为源表单。 |
{
"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 | 数据模型逻辑类型,例如 ShortString、Decimal、DateTime。 |
fields[].componentKey | 平台控件类型,可用于移动端选择控件实现。 |
fields[].required | 静态必填配置。条件必填仍以服务端业务规则为准。 |
fields[].readOnly | 数据模型公式字段的只读状态。页面级动态禁用规则不在此字段中表达。 |
fields[].formula | 平台公式原文。仅在移动端实现了兼容的公式解析器后才可用于预览计算;保存时平台会重新计算。 |
validationRules | 表单设计器配置的校验规则原文和关联字段。移动端可显示提示,但不能将其作为最终判定。 |
businessRules | 业务规则的元信息和触发信息。execution=server 表示不可在客户端直接执行。 |
推荐接入流程
- 打开新增或编辑页面时调用本接口,并使用
fields渲染表单。 - 对
required、最大长度和已兼容的formula进行本地即时提示。 - 按
businessRules[].triggers识别变更和按钮触发场景,但不要执行规则节点或拼接脚本。 - 保存或提交时调用现有
AddData、UpdateData、SubmitData接口。 - 将服务端返回的字段或业务错误显示到对应控件,服务端结果为最终结果。
错误说明
| 场景 | 返回信息 |
|---|---|
userId 为空 | 用户id为空 |
menuId 为空 | 菜单id为空 |
| 请求用户与登录用户不一致 | 只能查询当前登录用户的表单规则 |
| 用户无菜单权限 | 当前用户无权访问该菜单 |
| 表单数据模型不存在 | 表单数据模型不存在 |