跳到內容

模板與表單

系統使用 模板技術 來生成各式文件,通過這種機制,您可以在保證數據準確性的前提下,快速製作出符合公司風格的個性化文件。

模板 是一種預定義的 DOCX/XLSX 文件,用於在生成 PDF 報表時自動插入系統數據。

簡單來說,模板就是“文件的藍圖”或“文件的底稿”。

  • 模板裡包含了固定的結構、樣式和文字(如頁首頁尾、表格格式、標題樣式等)。
  • 模板裡也包含一些占位符(如 <客戶名稱>、<訂單編號>),這些會在生成文件時被系統數據替換。
  • 用戶不需要每次都手動排版或複製格式,只要準備好數據,系統就會自動根據模板生成統一、規範的文件。

檔案格式、占位符、數據類型與輸出格式

Section titled “檔案格式、占位符、數據類型與輸出格式”
檔案格式占位符數據類型輸出格式
DOCX1Merge Field報價單
銷售契約
送貨單
設備維保記錄
PDF2
XLSX&=採購單
發票清單
審計日誌
PDF
XLSX
CSV3不適用採購單
發票清單
審計日誌
IOT 設備記錄
CSV

占位符 是一段特殊標記,用來告訴系統在生成文件時,應該在哪裡填入以及填入何種數據。簡單理解:占位符就是“數據的臨時位置”。生成文件時,系統會用真實數據把這些位置填充起來,從而得到一份帶有實際內容的 PDF 或 Excel 報表。

合併域(英語:MergeField)是一種使用數據源的數據進行個性化文件的方法。

MergeField 基礎說明

類型範例說明
域結果<<customer_legalName>>顯示內容
數據源未載入:合併域的 KEY
數據源已載入:合併結果
域代碼{ MERGEFIELD FieldName [Switches]}可編輯格式,編輯後必須更新才能生效
{ MERGEFIELD FieldName [Switches] }
語法欄位說明
{語法以左花括號開始,固定格式,不可忽略,不可修改
MERGEFIELD固定格式,不可忽略,不可修改
FieldName數據源中的 KEY 或者列標題,大小寫敏感,所有可用 KEY 在 此處 查看
Switches域開關,用於格式化域內容的方法,選填參數
}語法以右花括號結束,固定格式,不可忽略,不可修改
{ MERGEFIELD TableStart:xxx }

用於標註後文中以 xxx_ 開頭的 FieldName 屬於表格數據,主要用於表格批次插入數據。


{ MERGEFIELD TableEnd:xxx }

用於標註表格數據到此為止,與 TableStart 搭配使用。

兩種方式:

  1. 游標移至合併域上右擊 > 切換域代碼
  2. 使用 Alt+F9 切換整個文件的合併域顯示方式, Shift+F9 切換當前選中的合併域

在 Microsoft Office 中有兩種常用的方式插入合併域:

方法一:導入數據源後插入合併域,適用首次創建模板的用戶,快速入門。

  1. 下載模擬數據源。
  2. 點擊 選項卡 中的 郵件
  3. 開始郵件合併 命令組 依次點擊 選擇收件人 → 使用現有列表使用現有數據源的示意圖
  4. 選擇此前下載好的模擬數據源文件。
  5. 將游標移動到需要插入合併域的位置。
  6. 編寫和插入域 命令組 中點擊 插入合併域,並選擇需要插入的合併域。 插入合併域窗口

方法二:手動創建合併域,更靈活的編輯方式

  1. 點擊 選項卡 中的 插入
  2. 找到 文本 命令組 依次 文件部件 → 域使用插入的方式插入合併域
  3. 在彈出的 域窗口 左側 域名 中選擇 MergeField域窗口資訊
  4. 填寫 域屬性 後點擊確定

Switches 用於格式化域代碼中的數據,可以格式化日期、數字、增加前後綴,其基礎語法:

<option> value
option說明備註
\b在域前插入文字只有數據不為空白時才生效
\f在域後插入文字只有數據不為空白時才生效
\@格式化日期只針對日期、時間、日期和時間類型的數據
\#格式化數字只針對數字類型的數據
\*定義域結果需要搭配指定的開關項使用
代碼含義範例(日期: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
格式輸入數據顯示結果備註
#.005.15.10至少2位小數,不足補零
.為小數分隔
#,#.001999.11,999.10帶千位分隔,2位小數,不足補零
,為千位分隔,.為小數分隔
#,###.##1999.11,999.1帶千位分隔,至多2位小數,不足不補零
,為千位分隔,.為小數分隔
#,0055,00至少2位小數,不足補零
,為小數分隔
#.#,001999.11.999,10帶千位分隔,2位小數,不足補零
.為千位分隔,,為小數分隔
#.###,##1999.11.999,1帶千位分隔,至多2位小數,不足不補零
.為千位分隔,,為小數分隔
格式開關(大小寫、羅馬數字、序號等)
Section titled “格式開關(大小寫、羅馬數字、序號等)”

支持多種語言與檔案格式化方式,例:

  • 大寫英文字母:Alphabetic
  • 小寫英文字母:alphabetic
  • 羅馬數字:Roman
  • 中文大寫數字:CHINESENUM1/2/3
  • 阿拉伯數字轉換為圓圈序號,例如:①②③。通常只支持 1~20 且需要特定字體,否則會出現亂碼。
格式說明範例結果
MERGEFORMAT合併格式,用於保留字體、段落等格式{ MERGEFIELD \* MERGEFORMAT }
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
  1. 不能在 “域窗口” 的 “域屬性” 中填寫格式化程式碼,您應該在 域代碼 狀態編輯格式化語法。 在 “域窗口” 內填入的格式語法,Office 會進行轉義,導致格式錯誤,例如 \@ 會被轉義為 \\@
  2. 確保域代碼內的 KEY 是準確的,您可以載入模擬數據後點擊 郵件 > 預覽結果 進行預覽。

為了方便快速入手,我們提供了一些模板以及模擬數據源供您參考使用。

報價單模板 契約模板 送貨單模板 設備維保模板 報價單數據源 契約數據源 送貨單數據源 設備維保記錄數據源

KEY 用於定位具體的數據內容具有以下幾種類型:

  1. 常規 KEY:絕大多數 KEY 都屬於此類,他們由字母與下劃線組成,如 company_legalName
  2. TableStart:xxxTableEnd:xxx:這兩個 KEY 為固定結構且必須搭配使用,其中的 xxx 代表 Table 內數據的前綴詞,只有與前綴匹配的數據才會被納入到表格。
  3. 表格 KEY:表格內部的 KEY 由前綴詞、字母與下劃線組成,如:xxx_name
KEY說明
company_legalName公司法定名稱
company_address_tag公司地址中的標籤
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說明備註
id報價單 Id至少19位純數字 Id
orderId編碼Id10-11位由數字與字母組合的編碼 Id
title報價單標題
inclTotal含稅總金額按幣種格式化
enclTotal不含稅總金額按幣種格式化
inclTotalDiscount含稅總折扣金額按幣種格式化
enclTotalDiscount不含稅中折扣金額按幣種格式化
taxes稅額按幣種格式化
inclTotal_capital大寫的含稅總金額幣種對應的大寫金額
enclTotal_capital大寫的不含稅總金額幣種對應的大寫金額
inclTotalDiscount_capital大寫的含稅總折扣金額幣種對應的大寫金額
enclTotalDiscount_capital大寫的不含稅中折扣金額幣種對應的大寫金額
taxes_capital大寫的稅額幣種對應的大寫金額
currency報價單的幣種
remark報價單備註資訊
dueInDays報價單有效天數單位:天
dueAtISO8601格式的失效日期
createdAtISO8601格式的創建日期
dueAt_date未格式化的失效日期參閱 MergeField 格式化
createdAt_date未格式化的創建日期
deliveryMethod發貨方式
deliveryTimeD/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子條款付款錨點

表格前綴詞: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_codesku 編碼
item_sku_barcodesku 條碼
item_sku_namesku 名稱
item_sku_unitsku 單位
item_sku_specificationsku 規格按 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

KEY說明備註
contractId契約編碼Id等同於報價單常規 KEY 中的 orderId
contractNo契約號自訂編號,如果起草時未填寫則等同於 contractId
supplementalAgreement補充協議
warrantyClause質保期
signedAtISO8601格式的契約簽訂時間
signedAt_date未格式化的契約簽訂時間
signingPlace契約簽訂地點
deliveryDateISO8601格式的交付日期由簽訂日期和交付天數推算
deliveryDate_date未格式化的交付日期

報價單表格 KEY一致

KEY說明備註
id送貨單 Id至少19位純數字 Id
orderId編碼 Id10-11位由數字與字母組合的 Id
createdAtISO8601格式的創建日期
createdAt_date未格式化的創建日期
signedAtISO8601格式的創建日期
signedAt_date未格式化的創建日期
link_order_id關聯的報價單編碼 Id使用,作為間隔
link_order_title關聯的報價單標題使用,作為間隔
link_contract_id關聯的契約編碼編號使用,作為間隔
link_contract_title關聯的契約標題使用,作為間隔

表格前綴詞:item

包含報價單表格 KEY,額外包含以下 KEY

KEY說明備註
item_delivery_lineNumber送貨單內的序號
item_delivery_quantity送貨數量格式化為 0.##,最多2位小數
item_delivery_unit送貨單內的單位
item_delivery_remark送貨單內的備註
KEY說明備註
id記錄 Id至少19位純數字 Id
orderId編碼 Id10-11位由數字與字母組合的 Id
severity事件緊急度
title事件標題
description描述
startAtISO8601格式的開始時間
startAt_date未格式化的開始時間
endAtISO8601格式的結束時間
endAt_date未格式化的結束時間
createdAtISO8601格式的創建時間
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設備地址中的郵遞區號

表格前綴詞:record

KEY說明備註
record_key維保表單內 欄位 對應的 標題表單中 _ 開頭的 欄位 會被忽略
record_value表單中記錄的數據對於帶有選項的欄位會渲染為 ☑ xxx☐ xxx

書籤 是 Word 提供的一種定位工具,通過在文件的某個位置添加書籤,可以在後續閱讀文件時快速跳轉到該位置。 在系統中主要用於定位和在該位置插入圖片。根據文件類型與單據的不同,系統會尋找不同的書籤執行不同的操作,具體如下:

文件單據書簽名操作備註
DOCX送貨單
設備維保記錄單
signature插入簽名板的簽名圖片需有簽名圖片才會插入圖片
DOCX所有單據類型stamp插入數位簽章圖章需文件證書才進行數位簽章

特殊占位符 與其他文字沒有區別,主要用於 PDF 文件的處理。

文件單據標識文字操作備註
PDF所有單據###SIGNATURE_ANCHOR###插入數位簽章圖章需文件證書才能執行數位簽章

在系統中,表單用於設備維修、保養等場景下。它通常由多個欄位(輸入框、選擇項、日期、數值等)組成,用於引導職員逐項完成數據輸入。

簡單來說,表單就是把“需要做的事”和“需要記錄的資訊”整理成一個可操作的清單,讓設備維護過程更高效、更標準化。

  • 把需要檢查的事項(例如:潤滑油是否更換、電氣接頭是否牢固、安全裝置是否正常等)列出來;
  • 用戶在操作時,只需要按照表單逐項確認、填寫或勾選,就能完成檢查記錄;
  • 系統會根據填寫的內容,保存和生成相應的維修/保養記錄,確保過程規範、結果可追溯。

表單本質為 JSON 格式的文本文件,您可以使用系統提供的線上編輯器編寫或者上傳 JSON 格式的文件,也可以使用本地文本編輯器編寫表單文件後,將文件命名為 xxxForm.json 並上傳至 雲端儲存 的 forms 目錄中。

線上編輯器截圖

輸入框與按鈕說明
事件當前編輯的表單屬於哪種事件
設備類別可以針對不同設備製作不同的表單,需要 🥈 訂閱權限
表單標題
獲取當前表單從伺服器中載入當前表單,主要用於表單修改
新增欄位添加新的欄位到表單
提交表單將當前表單內容保存至雲端儲存
重設表單將當前表單內容清空,作用與當前界面,不影響伺服器端
預覽表單您可以查看當前表單在實際任務階段的樣式

線上編輯器內表單欄位說明

標題說明備註
欄位表單欄位的 key在表單內必須唯一,重複的 key 會被後來者覆蓋。
_ 開頭的欄位在渲染時會被忽略
標題顯示在輸入框中的標題資訊,可以被渲染到模板中
組件用於呈現輸入框類型簽名板的數值為標識符
日期相關的組件為數位格式的時間戳
數據類型組件所使用的數據格式
預設值當用戶不填寫欄位時使用的預設值,需要與數據類型匹配
多行文本僅文本輸入框組件可用,允許用戶輸入多行文本
選項鍵選項對應的 key必須唯一
選項值選項對應的數值

手寫 JSON 文件需要符合下方的 Json 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"
]
}

針對不同類別的設備可以創建細分表單,在編輯器中填寫/選擇設備類別即可創建細分表單,或者在表單檔案名中加入 類別

  • 保養事件 -> maintenance_[deviceCategory/設備類別]Form.json
  • 維修事件 -> repair_[deviceCategory/設備類別]Form.json
  • 韌體升級事件 -> firmware_update_[deviceCategory/設備類別]Form.json

系統提供的字體:

字體名樣式版本
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 Symbols2Regular2.008
  1. https://zh.wikipedia.org/zh-tw/Office_Open_XML

  2. https://zh.wikipedia.org/zh-tw/PDF

  3. https://zh.wikipedia.org/zh-tw/%E9%80%97%E5%8F%B7%E5%88%86%E9%9A%94%E5%80%BC

  4. https://fonts.google.com/noto