模板与表单
系统使用 模板技术 来生成各式文档,通过模板机制,您可以在保证数据准确性的前提下,快速制作出符合公司风格的个性化文档。
模板是什么?
在系统中,模板 是一种预定义的 DOCX/XLSX 文档,用于在生成 PDF 报表时自动插入系统数据。
简单来说,模板就是“文档的蓝图”或“文档的底稿”。
- 模板里包含了固定的结构、样式和文字(如页眉页脚、表格格式、标题样式等)。
- 模板里也包含一些占位符(如 <客户名称>、<订单编号>),这些会在生成文档时被系统数据替换。
- 用户不需要每次都手动排版或复制格式,只要准备好数据,系统就会自动根据模板生成统一、规范的文件。
公司 > 公司信息 > 模板管理
文件格式、占位符、数据类型与输出格式
| 文件格式 | 占位符 | 数据类型 | 输出格式 |
|---|---|---|---|
| DOCX1 | Merge Field | 报价单 销售合同 送货单 设备维保记录 | PDF2 |
| XLSX | &= | 采购单 发票清单 审计日志 | PDF XLSX |
| CSV3 | 不适用 | 采购单 发票清单 审计日志 IOT 设备记录 | CSV |
根据您所在地区和订阅的差异,您可能无法管理所有的模板
占位符是什么?
占位符 是一段特殊标记,用来告诉系统在生成文档时,应该在哪里填入以及填入何种数据。
- 在 Word 模板(DOCX) 中,占位符使用 MergeField 的形式。例如:
{ MERGEFIELD company.legalName \* MERGEFORMAT} - 在 Excel 模板(EXCEL) 中,占位符使用
&=的形式。例如:
&=item.sku.code
简单理解:占位符就是“数据的临时位置”。生成文档时,系统会用真实数据把这些位置填充起来,从而得到一份带有实际内容的 PDF 或 Excel 报表,您可以下载模拟数据源来创建 MergeField,也可以根据下方提供的 KEY 手动创建 MergeField。
MergeField 占位符
合并域(英语:MergeField)是一种使用数据源的数据进行个性化文档的方法。3
MergeField 基础说明
| 类型 | 示例 | 说明 |
|---|---|---|
| 域结果 | <<customer_legalName>> | 显示内容 数据源未载入:合并域的 KEY 数据源已载入:合并结果 |
| 域代码 | { MERGEFIELD FieldName [Switches]} | 可编辑格式,编辑后必须更新才能生效 |
MergeField 语法
{ MERGEFIELD FieldName [Switches]}
字段说明:
- MERGEFIELD:固定格式,不可忽略,不可修改
- FieldName:数据源中的 KEY 或者列标题,大小写敏感。
- Switches:域开关,用于格式化域内容的方法。
切换域的显示方式
两种方式:
- 光标移至合并域上右击 > 切换域代码
- 使用 Alt+F9 切换整个文档的合并域显示方式, Shift+F9 切换当前选中的合并域
修改了域代码后必须更新:
- 右击 > 更新域
- 选择域并按 F9
- 更新所有域:Ctrl+A(全选)> F9
如何插入合并域
在 Microsoft Office 由两种常用的方式插入合并域:
- 导入数据源后插入合并域
- 点击 邮件 > 开始邮件合并-选择收件人 > 使用现有列表
- 通过 编写和插入域-插入合并域 插入合并域
适用首次创建模板的用户,快速入门。此外在设计复杂表格时,提高效率。
- 利用文档部件手动创建合并域
- 点击 插入 > 文本-文档部件 > 域

- 在 “域窗口” 中选择 MergeField,填入域名后即可插入合并域
模拟数据源下载
我们提供模拟数据源以便您设计模板:
格式化合并域内容(Switches)
在域代码中可以使用 Switches 格式化日期、数字、前后缀,基础语法:
<option> value
常见选项
| option | 说明 | 备注 |
|---|---|---|
| \b | 在域前插入文字 | 只有数据不为空白时才生效 |
| \f | 在域后插入文字 | 只有数据不为空白时才生效 |
| \@ | 格式化日期 | 只针对日期、时间、日期和时间类型的数据 |
| \# | 格式化数字 | 只针对数字类型的数据 |
| \* | 定义域结果 | 需要搭配指定的开关项使用 |
为了避免提供格式的文本错误,推荐使用 " 包裹格式文本,例如:\@ "yyyy-MM-dd"
时间与日期的格式
示例日期为(2025-09-01T20:09:01.999Z)
| 代码 | 含义 | 示例 |
|---|---|---|
| yy | 年份后两位 | 25 |
| yyyy | 四位年份 | 2025 |
| M | 月份,不补零 | 8 |
| MM | 月份,补零 | 08 |
| MMM | 月份缩写 | Sep |
| MMMM | 月份全称 | September |
| d | 日,不补零 | 1 |
| dd | 日,补零 | 01 |
| ddd | 星期缩写 | Mon |
| dddd | 星期全称 | Monday |
| h | 时,12小时制,不补零 | 8 |
| hh | 时,12小时制,补零 | 08 |
| H | 时,24小时制,不补零 | 20 |
| HH | 时,24小时制,补零 | 20 |
| m | 分,不补零 | 9 |
| mm | 分,补零 | 09 |
| s | 秒,不补零 | 1 |
| ss | 秒,不补零 | 01 |
| a/p | 上下午标记 | PM |
- 字母大小写敏感
- 系统提供高精度时间,但 Word 对毫秒支持极差,可能无法完全显示
数字格式
| 格式 | 输入数据 | 显示结果 | 备注 |
|---|---|---|---|
#.00 | 5.1 | 5.10 | 至少2位小数,不足补零.为小数分隔 |
#,#.00 | 1999.1 | 1,999.10 | 带千位分隔,2位小数,不足补零,为千位分隔,.为小数分隔 |
#,###.## | 1999.1 | 1,999.1 | 带千位分隔,至多2位小数,不足不补零,为千位分隔,.为小数分隔 |
#,00 | 5 | 5,00 | 至少2位小数,不足补零,为小数分隔 |
#.#,00 | 1999.1 | 1.999,10 | 带千位分隔,2位小数,不足补零.为千位分隔,,为小数分隔 |
#.###,## | 1999.1 | 1.999,1 | 带千位分隔,至多2位小数,不足不补零.为千位分隔,,为小数分隔 |
格式开关(大小写、罗马数字、序号等)
支持多种语言与文档格式化方式,例:
- 大写英文字母:Alphabetic
- 小写英文字母:alphabetic
- 罗马数字:Roman
- 中文大写数字:CHINESENUM1/2/3
- 阿拉伯数字转换为圆圈序号,例如:①②③。通常只支持 1~20 且需要特定字体,否则会出现乱码。
| 格式 | 说明 | 示例 | 结果 |
|---|---|---|---|
| GB1 | 数字加点序号 | { MERGEFIELD %1% \* GB1 } | 1. |
| GB2 | 括号序号 | { MERGEFIELD %1% \* GB2 } | ⑴ |
| GB3 | 带圈序号 | { MERGEFIELD %1% \* GB3 } | ① |
| Alphabetic | 阿拉伯数字转大写英文字母 | { MERGEFIELD %27% \* Alphabetic } | AA |
| alphabetic | 阿拉伯数字转小写英文字母 | { MERGEFIELD %1% \* alphabetic } | a |
| CardText | 转换为英文基数词 | { MERGEFIELD %10% \* CardText } | ten |
| DollarText | 英文金额 | { MERGEFIELD %10.5% \* DollarText } | ten and 50/100 |
| Hex | 十六进制表示 | { MERGEFIELD %10% \* Hex } | A |
| OrdText | 英文序数词 | { MERGEFIELD %10% \* OrdText } | tenth |
| Ordinal | 英文序数形式 | { MERGEFIELD %10% \* Ordinal } | 10th |
| Roman | 大写罗马数字 | { MERGEFIELD %3% \* Roman } | Ⅲ |
| roman | 小写罗马数字 | { MERGEFIELD %3% \* roman } | ⅲ |
| CHINESENUM1 | 大写简体数字 | { MERGEFIELD %67289% \* CHINESENUM1 } | 六七二八九 |
| CHINESENUM2 | 财务用大写格式 | { MERGEFIELD %67289% \* CHINESENUM2 } | 陆萬柒仟贰佰捌拾玖 |
| CHINESENUM3 | 非财务用大写格式 | { MERGEFIELD %67289% \* CHINESENUM3 } | 六万七千二百八十九 |
| Caps | 单词首字母大写 | { MERGEFIELD %too maker% \* Caps } | Too Maker |
| FirstCap | 段落首字母大写 | { MERGEFIELD %too maker% \* FirstCap } | Too Maker |
| Upper | 所有字母大写 | { MERGEFIELD %too maker% \* Upper } | TOO MAKER |
| Lower | 所有字母小写 | { MERGEFIELD %Too Maker% \* Lower } | too maker |
示例中使用 %% 包裹的部分属于伪代码,仅用于展示原始数据,便于理解和说明,实际使用中需要遵循语法规则
注意事项
- 不能在 “域窗口” 的 “域属性” 中填写格式化代码,您应该在 域代码 状态编辑格式化语法。
在 “域窗口” 内填入的格式语法,Office 会进行转义,导致格式错误,例如\@会被转义为\\@。 - 确保域代码内的 KEY 是准确的,您可以载入模拟数据后点击 邮件 > 预览结果 进行预览。
{ MERGEFIELD TableStart:xxx \* MERGEFORMAT }和{ MERGEFIELD TableEnd:xxx \* MERGEFORMAT }是专用语法。
在使用 预览功能 时会提示 无效的合并域 错误信息,点击 取消 忽略错误。
MergeField KEY
KEY 用于定位具体的数据内容具有以下几种类型:
- 常规 KEY:绝大多数 KEY 都属于此类,他们由字母与下划线组成,如
company_legalName TableStart:xxx与TableEnd:xxx:这两个 KEY 为固定结构且必须搭配使用,其中的xxx代表 Table 内数据的前缀词,只有与前缀匹配的数据才会被纳入到表格。- 表格 KEY:表格内部的 KEY 由前缀词、字母与下划线组成,如:
xxx_name
MergeField 通用 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| company_legalName | 公司法定名称 | |
| company_address_tag | 公司地址中的标签 | 完整的地址信息需要使用 KEY 拼接 |
| company_address_country | 公司地址中的国家代码 | |
| company_address_state | 公司地址中的省/州/市信息 | |
| company_address_city | 公司地址中的城市信息 | |
| company_address_district | 公司地址中的区/县 | |
| company_address_street | 公司地址中的街道信息 | |
| company_address_postalCode | 公司地址中的邮政编码 | |
| company_tax_tin | 公司的纳税识别号 | |
| company_tax_billingAddress | 公司开票地址 | |
| company_tax_phone | 开票资料中的联系电话 | |
| company_tax_bank | 公司开户银行 | |
| company_tax_bankAccount | 银行账号 | |
| employee_name | 单据起草人员的姓名 | |
| employee_phone | 单据起草人员的手机号码 | |
| employee_email | 单据起草人员的联系邮箱 | |
| employee_familyName | 单据起草人员的姓氏 | |
| employee_givenName | 单据起草人员的名字 | |
| employee_middleName | 单据起草人员的中间名 | |
| employee_position | 单据起草人员的职务 | |
| customer_legalName | 客户公司法定名称 | |
| customer_address_tag | 客户公司地址中的标签 | |
| customer_address_country | 客户公司地址中的国家代码 | |
| customer_address_state | 客户公司地址中的省/州/市信息 | |
| customer_address_city | 客户公司地址中的城市信息 | |
| customer_address_district | 客户公司地址中的区/县 | |
| customer_address_street | 客户公司地址中的街道信息 | |
| customer_address_postalCode | 客户公司地址中的邮政编码 | |
| customer_tax_tin | 客户公司的纳税识别号 | |
| customer_tax_billingAddress | 客户公司开票地址 | |
| customer_tax_phone | 客户开票资料中的联系电话 | |
| customer_tax_bank | 客户公司开户银行 | |
| customer_tax_bankAccount | 客户银行账号 | |
| customer_contact_name | 客户联系人的姓名 | |
| customer_contact_phone | 客户联系人的手机号码 | |
| customer_contact_email | 客户联系人的联系邮箱 | |
| customer_contact_familyName | 客户联系人的姓氏 | |
| customer_contact_givenName | 客户联系人的名字 | |
| customer_contact_middleName | 客户联系人的中间名 | |
| customer_contact_position | 客户联系人的职务 |
报价单模板可用 KEY
报价单常规 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| id | 报价单 Id | 至少19位纯数字 Id |
| orderId | 编码Id | 10-11位由数字与字母组合的编码 Id |
| title | 报价单标题 | |
| inclTotal | 含税总金额 | 按币种格式化 |
| enclTotal | 不含税总金额 | 按币种格式化 |
| inclTotalDiscount | 含税总折扣金额 | 按币种格式化 |
| enclTotalDiscount | 不含税中折扣金额 | 按币种格式化 |
| taxes | 税额 | 按币种格式化 |
| inclTotal_capital | 大写的含税总金额 | 币种对应的大写金额 |
| enclTotal_capital | 大写的不含税总金额 | 币种对应的大写金额 |
| inclTotalDiscount_capital | 大写的含税总折扣金额 | 币种对应的大写金额 |
| enclTotalDiscount_capital | 大写的不含税中折扣金额 | 币种对应的大写金额 |
| taxes_capital | 大写的税额 | 币种对应的大写金额 |
| currency | 报价单的币种 | |
| remark | 报价单备注信息 | |
| dueInDays | 报价单有效天数 | 单位:天 |
| dueAt | ISO8601格式的失效日期 | |
| createdAt | ISO8601格式的创建日期 | |
| dueAt_date | 未格式化的失效日期 | 参阅 MergeField 格式化 |
| createdAt_date | 未格式化的创建日期 | |
| deliveryMethod | 发货方式 | |
| deliveryTime | D/T 交付天数 | 单位:天 |
| payment_lineNumber | 付款条款序号 | |
| payment_name | 条款名称 | |
| payment_dueInDays | 付款期限,单位:天 | |
| payment_dueAt | 付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_dueAt_date | 付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_percentage | 付款百分比 | |
| payment_amount | 应付款金额 | |
| payment_anchor | 付款锚点 | |
| payment_{index}_lineNumber | 子条款序号 | 如果没有子条款则此 KEY 无效 |
| payment_{index}_name | 子条款名称 | |
| payment_{index}_dueInDays | 子条款付款期限,单位:天 | |
| payment_{index}_dueAt | 子条款付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_{index}_dueAt_date | 子条款付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_{index}_percentage | 子条款付款百分比 | |
| payment_{index}_amount | 子条款应付款金额 | |
| payment_{index}_anchor | 子条款付款锚点 |
报价单表格 KEY
表格前缀词:item
| KEY | 说明 | 备注 |
|---|---|---|
| item_lineNumber | 序号 | |
| item_quantity | 数量 | 格式化为 0.##,最多2位小数 |
| item_unit | 单位 | |
| item_taxRate | 税率 | 格式化为百分比,例如:0.13 -> 13% |
| item_taxAmount | 税额 | |
| item_inclPrice | 含税单价 | 按币种格式化 |
| item_enclPrice | 不含税单价 | 按币种格式化 |
| item_discountRate | 折扣率 | 格式化为百分比,例如:0.01 -> 1% |
| item_inclDiscount | 含税折扣额 | 按币种格式化 |
| item_enclDiscount | 不含税折扣额 | 按币种格式化 |
| item_inclSubTotal | 含税小计 | 按币种格式化 |
| item_enclSubTotal | 不含税小计 | 按币种格式化 |
| item_remark | 备注 | |
| item_sku_code | sku 编码 | |
| item_sku_barcode | sku 条形码 | |
| item_sku_name | sku 名称 | |
| item_sku_unit | sku 单位 | |
| item_sku_specification | sku 规格 | 按 sku 属性格式化,例如:颜色 / 红色;容量 / 16GB |
表格前缀词:payment
| KEY | 说明 | 备注 |
|---|---|---|
| payment_lineNumber | 付款条款序号 | |
| payment_name | 条款名 | |
| payment_dueInDays | 付款期限 | 单位:天 |
| payment_dueAt | 付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_dueAt_date | 付款截止日期 | 当付款条款未开始追踪时无意义,且会被设置为当前日期往后 X 天,X取决于付款期限 |
| payment_percentage | 付款百分比 | |
| payment_amount | 应付款金额 | |
| payment_anchor | 付款锚点 |
两者的 KEY 是相似的,但是表格内的付款条款包含子条款信息,而常规 KEY 只有父条款信息,子条款采用的是 payment_1_lineNumber 的格式,这有助于固定付款条款的单据使用。
合同模板可用 KEY
合同常规 KEY
大部分与报价单常规 KEY 一致,额外包含以下 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| contractId | 合同编码Id | 等同于报价单常规 KEY 中的 orderId |
| contractNo | 合同号 | 自定义编号,如果起草时未填写则等同于 contractId |
| supplementalAgreement | 补充协议 | |
| warrantyClause | 质保期 | |
| signedAt | ISO8601格式的合同签订时间 | |
| signedAt_date | 未格式化的合同签订时间 | |
| signingPlace | 合同签订地点 | |
| deliveryDate | ISO8601格式的交付日期 | 由签订日期和交付天数推算 |
| deliveryDate_date | 未格式化的交付日期 |
合同表格 KEY
与报价单表格 KEY一致
合同内可以附上图像或 docx 格式的附件,这些文件不是模板的一部分,如果您在制作合同的时候添加了这些附件,我们将这些附件追加到生成的文档中,他们的处理逻辑为:
- 图像格式:例如 PNG,JPEG等格式,我们会将图片的宽度撑满整个文档同时按原始比例增大或缩小高度。
- docx 格式:此类文档格式会按照添加顺序追加到文档的末尾位置。
送货单模板可用 KEY
送货单常规 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| id | 送货单 Id | 至少19位纯数字 Id |
| orderId | 编码 Id | 10-11位由数字与字母组合的 Id |
| createdAt | ISO8601格式的创建日期 | |
| createdAt_date | 未格式化的创建日期 | |
| signedAt | ISO8601格式的创建日期 | |
| signedAt_date | 未格式化的创建日期 | |
| link_order_id | 关联的报价单编码 Id | 使用,作为间隔 |
| link_order_title | 关联的报价单标题 | 使用,作为间隔 |
| link_contract_id | 关联的合同编码编号 | 使用,作为间隔 |
| link_contract_title | 关联的合同标题 | 使用,作为间隔 |
送货单表格 KEY
表格前缀词:item 包含报价单表格 KEY,额外包含以下 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| item_delivery_lineNumber | 送货单内的序号 | |
| item_delivery_quantity | 送货数量 | 格式化为 0.##,最多2位小数 |
| item_delivery_unit | 送货单内的单位 | |
| item_delivery_remark | 送货单内的备注 |
设备维保记录模板可用 KEY
维保记录常规 KEY
| KEY | 说明 | 备注 |
|---|---|---|
| id | 记录 Id | 至少19位纯数字 Id |
| orderId | 编码 Id | 10-11位由数字与字母组合的 Id |
| severity | 事件紧急度 | |
| title | 事件标题 | |
| description | 描述 | |
| startAt | ISO8601格式的开始时间 | |
| startAt_date | 未格式化的开始时间 | |
| endAt | ISO8601格式的结束时间 | |
| endAt_date | 未格式化的结束时间 | |
| createdAt | ISO8601格式的创建时间 | |
| createdAt_date | 未格式化的创建时间 | |
| downtime | 设备下线时间 | |
| device_name | 设备名称 | |
| device_tag | 设备标签 | |
| device_category | 设备类别 | |
| device_model | 设备型号 | |
| device_serialNumber | 序列号 | |
| device_owner | 所有者/使用者 | |
| device_effectiveDate | 生产日期 | yyyy-MM-dd格式 |
| device_manufactureDate | 启用日期 | yyyy-MM-dd格式 |
| device_warrantyExpireDate | 过保日期 | yyyy-MM-dd格式 |
| device_location | 设备位置 | |
| device_address_tag | 设备地址中的标签 | 完整的地址信息需要使用 KEY 拼接 |
| device_address_country | 设备地址中的国家代码 | |
| device_address_state | 设备地址中的省/州/市信息 | |
| device_address_city | 设备地址中的城市信息 | |
| device_address_district | 设备地址中的区/县 | |
| device_address_street | 设备地址中的街道信息 | |
| device_address_postalCode | 设备地址中的邮政编码 |
维保记录表格 KEY
表格前缀词:record
| KEY | 说明 | 备注 |
|---|---|---|
| record_key | 维保表单内 字段 对应的 标题 | 表单中 _ 开头的 字段 会被忽略 |
| record_value | 表单中记录的数据 | 对于带有选项的字段会渲染为 ☑ xxx 和 ☐ xxx |
☑☐这两个文本将强制使用 Noto Sans Symbols 2 字体,请查阅字体章节了解更多。
示例模板
我们提供了一些模板供您参考:
书签占位符
书签 是 Word 提供的一种定位工具,通过在文档的某个位置添加书签,可以在后续阅读文档时快速跳转到该位置。 在系统中主要用于定位和在该位置插入图片。根据文档类型与单据的不同,系统会查找不同的书签执行不同的操作,具体如下:
| 文档 | 单据 | 书签名 | 操作 | 备注 |
|---|---|---|---|---|
| DOCX | 送货单 设备维保记录单 | signature | 插入签名板的签名图片 | 需有签名图片才会插入图片 |
| DOCX | 所有单据类型 | stamp | 插入数字签名图章 | 需文档证书才进行数字签名 |
特殊占位符
特殊占位符 与其他文字没有区别,主要用于 PDF 文档的处理。
| 文档 | 单据 | 标识文字 | 操作 | 备注 |
|---|---|---|---|---|
| 所有单据 | ###SIGNATURE_ANCHOR### | 插入数字签名图章 | 需文档证书才能执行数字签名 |
一般把特殊占位符的字体颜色设置为 白色,字号设置为 1,同时使用文本框来时其悬浮在文档主体内容之上。
特殊占位符会一直保留在文档中,只有在完成相关操作后才会被删除。
表单
在系统中,表单用于设备维修、保养等场景下。它通常由多个字段(输入框、选择项、日期、数值等)组成,用于引导职员逐项完成数据录入。
简单来说,表单就是把“需要做的事”和“需要记录的信息”整理成一个可操作的清单,让设备维护过程更高效、更标准化。
- 把需要检查的事项(例如:润滑油是否更换、电气接头是否牢固、安全装置是否正常等)列出来;
- 用户在操作时,只需要按照表单逐项确认、填写或勾选,就能完成检查记录;
- 系统会根据填写的内容,保存和生成相应的维修/保养记录,确保过程规范、结果可追溯。
设备与物联网 > 维保表单编辑
设备维保表单
表单本质为 JSON 格式的文本文件,您可以使用系统提供的在线编辑器编写或者上传 JSON 格式的文件。
设备与物联网 > 维保表单编辑
使用文本编辑器编写表单文件时,文件要求命名为 xxxForm.json并上传至 云存储 的 forms 目录中。
文件需要符合下方的 Json Schema 要求。
From Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Generated schema for MaintenanceForm",
"type": "object",
"properties": {
"title": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string"
},
"label": {
"type": "string"
},
"component": {
"type": "string",
"enum": [
"textfield",
"checkbox",
"select",
"date",
"datetime",
"number",
"radioColumn",
"radioRow",
"signaturePad",
"upload",
"download",
"hidden"
]
},
"multiline": {
"type": "boolean"
},
"dataType": {
"type": "string",
"enum": [
"string",
"number",
"boolean",
"array",
"null"
]
},
"options": {
"type": "array",
"items": {
"type": "object",
"required": [
"label",
"value"
],
"properties": {
"label": {
"type": "string"
},
"value": {
"type": [
"string",
"number",
"boolean"
]
}
}
}
},
"defaultValue": {
"type": [
"string",
"number",
"boolean",
"array",
"null"
]
}
},
"required": [
"field",
"label",
"component",
"dataType"
],
"allOf": [
{
"if": {
"properties": {
"component": {
"const": "select"
}
}
},
"then": {
"required": [
"options"
]
}
},
{
"if": {
"properties": {
"component": {
"const": "radio"
}
}
},
"then": {
"required": [
"options"
]
}
}
],
"additionalProperties": false
}
}
},
"required": [
"title",
"fields"
]
}
对于手动编写 JSON 文件的用户需要注意以下内容:
-
支持的表单以及对应的文件名,请注意文件名区分大小写
- 保养事件 -> maintenance[_deviceCategory]Form.json
- 维修事件 -> repair[_deviceCategory]Form.json
- 固件升级事件 -> firmware_update[_deviceCategory]Form.json
-
错误处理方式:
- 文件名不匹配: 回落默认表单
- 文件格式错误: 当用户尝试完成任务时会被拒绝,造成任务无法正常完成
- 不符合 Schema 要求: 用户尝试完成任务时可能成功,但模板文件可能无法正确处理数据格式,造成数据显示错误
细分类别表单 🥈
针对不同类别的设备可以创建细分表单,在编辑器中填写/选择设备类别即可创建细分表单,或者在表单文件名中加入 类别。
- 保养事件 -> maintenance_[deviceCategory/设备类别]Form.json
- 维修事件 -> repair_[deviceCategory/设备类别]Form.json
- 固件升级事件 -> firmware_update_[deviceCategory/设备类别]Form.json
在线编辑器介绍

| 输入框与按钮 | 说明 |
|---|---|
| 事件 | 当前编辑的表单属于哪种事件 |
| 设备类别 | 可以针对不同设备制作不同的表单,需要 🥈 订阅权限 |
| 表单标题 | |
| 获取当前表单 | 从服务器中加载当前表单,主要用于表单修改 |
| 新增字段 | 添加新的字段到表单 |
| 提交表单 | 将当前表单内容保存至云存储 |
| 重置表单 | 将当前表单内容清空,作用与当前界面,不影响服务器端 |
| 预览表单 | 您可以查看当前表单在实际任务阶段的样式 |
表单字段说明
这是表单的主要内容,同时某些特定的字段组件在模板的渲染中也有差异,请参阅下表
| 标题 | 说明 | 备注 |
|---|---|---|
| 字段 | 表单字段的 key | 在表单内必须唯一,重复的 key 会被后来者覆盖。 以 _ 开头的字段在渲染时会被忽略 |
| 标题 | 显示在输入框中的标题信息,可以被渲染到模板中 | |
| 组件 | 用于呈现输入框类型 | 签名板的数值为标识符 日期相关的组件为数字格式的时间戳 |
| 数据类型 | 组件所使用的数据格式 | |
| 默认值 | 当用户不填写字段时使用的默认值,需要与数据类型匹配 | |
| 多行文本 | 仅文本输入框组件可用,允许用户输入多行文本 | |
| 选项键 | 选项对应的 key | 必须唯一 |
| 选项值 | 选项对应的数值 |
- 签名板是一个特殊的组件,其数据为设备维保事件的标识符。
- 如果需要在文档内插入签名图片,请使用书签功能。
字体
服务器提供的字体:
| 字体名 | 样式 | 版本 |
|---|---|---|
| Noto4 Sans | 所有字重及变体 | 2.015 |
| Noto Sans JP | 所有字重及变体 | 2.004 |
| Noto Sans SC | 所有字重及变体 | 2.004 |
| Noto Sans TC | 所有字重及变体 | 2.004 |
| Noto Sans Symbols | 所有字重 | 2.003 |
| Noto Sans Symbols2 | Regular | 2.008 |
我们基于 Open Font License 许可使用 Noto 字体,如有疑问请参阅 SIL 问题解答。
我们推荐您使用 Noto 字体进行模板创建。
自 Noto 2.001 版本起 CJK 已被拆分为 Chinese(Simplified,Traditional),Japanese 和 Korean,我们不建议使用任何早于此版本的字体,
可以造成字体匹配错误.
如果您在模板中需要使用其他字体,请将字体上传至服务器中,避免模板渲染错误.
如果您在模板中使用了商业字体,请确保已自行取得合法的授权或许可。本系统仅负责根据您提供的模板以及字体生成文档,对于因使用未经授权的字体所产生的版权或法律问题,我们概不负责。