New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

@sunmi/m-receipt

Package Overview
Dependencies
Maintainers
3
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@sunmi/m-receipt

商米餐饮收据 / 票据模版资产(templates)

npmnpm
Version
1.0.4
Version published
Maintainers
3
Created
Source

票据 RECEIPT

维护负责人:胡云波 Allen Hu

商米餐饮模版的小票/票据模板资产包@sunmi/m-receipt),以纯 JSON schema 的形式沉淀各类票据的版式、字段、多语言文案与示例数据。本包不含运行时逻辑,仅作为模板数据源被渲染与打印链路消费。

职责与边界

职责

  • 维护各业务票据的 schema 模板(版式结构、可配置组件、字段映射、多语言文案、示例数据)。
  • 提供一套可被商户二次定制、按地区扩展的默认模板集合。

边界(不负责)

  • 不负责模板渲染——由 @sunmi/max-receipt-viewer 将 schema 渲染为画布/预览。
  • 不负责打印输出与指令转换——由 @sunmi/max-print / @sunmi/max-print-bus 处理。
  • 不负责业务数据填充——运行时由各业务模块把真实订单数据注入 schema 的占位符。

与其它模块的关系

模块关系
@sunmi/max-receipt-viewer消费本包 schema,渲染票据预览/编辑画布
@sunmi/max-print将渲染结果转换为打印指令并输出到打印机
@sunmi/max-print-bus打印任务调度/总线,衔接业务侧打印请求与 max-print
各业务模块(m-checkout 等)运行时按 bizKey 选取对应模板,并填充占位符数据后触发打印

目录结构

默认以 templates/ 内的 schema 集合作为初始模板:

templates
├─ kiosk
│  └─ kioskPickUp.json          # 自助取餐小票
├─ labels
│  └─ labelProductionOrder.json # 标签制作单
└─ tickets
   ├─ bill.json            # 结账单
   ├─ cancellation.json    # 订单取消单
   ├─ customerView.json    # 客看单
   ├─ dailySettlement.json # 日结单
   ├─ preliminary.json     # 预结单
   ├─ productionOrder.json # 制作单
   ├─ takeoutOrder.json    # 外卖单
   ├─ topup.json           # 储值小票
   ├─ transferTable.json   # 转台单
   ├─ turnover.json        # 交接班小票
   └─ voidOrder.json       # 退餐单

地区定制

若某地区模板定制项较多,可在默认集合基础上复制新模板目录,以 templates_【语言标】 命名,作为该地区专属的票据模板。例如:templates_th(泰国)。运行时优先匹配地区目录,未命中则回退到默认 templates/

Schema 结构说明

每个票据 JSON 是一份自描述模板,核心字段如下:

字段说明
id模板唯一标识
name模板名称的多语言映射(zh / en / id / es 等)
version模板版本号
schemaVersionschema 结构版本,用于渲染端兼容判断
bizKey业务标识(如 bill),业务侧据此选取模板
list模板实际渲染的组件有序列表(页面真实版式)
types可配置组件目录——编辑器中可增删的组件项,按 groups 分组
template各组件的模板原型types / list 通过 typeId 引用
groups编辑器分组(基础信息 / 菜品 / 费用 / 支付 / 会员 / 页脚等)
data预览用的示例数据,用于占位符回填演示
lang各语言(zh-CN / en-US / th / my / id / it / es)的文案字典
defaultLang默认语言
supported支持的纸张宽度(80 / 58,单位 mm)

占位符约定

模板文本通过 {{...}} 占位符表达动态内容:

  • {{key|l}} —— 从 lang 字典按当前语言取多语言文案(如 {{ticketName|l}})。
  • {{field}} —— 运行时由业务数据回填的动态字段(如 {{tableName}}{{orderId}})。

组件类型

list / template 中常见的组件 type

  • config —— 全局渲染配置(如整行铺满、行号显示)。
  • text —— 文本行(含字号 size、对齐 align、加粗 bold)。
  • image —— 图片(如门店 logo、自定义图片)。
  • divider —— 分割线。
  • column —— 多列表格(菜品明细、费用明细、支付明细等),通过 dataKey 绑定 data 中的数组。

hideFields 用于声明:当某数据字段为空时隐藏该组件。

格式约定

本目录配有 .prettierrc,对 JSON 采用 2 空格缩进并强制数组/对象每元素独占一行(JSON.stringify(obj, null, 2) 风格)。修改模板后建议执行:

pnpm prettier --write "templates/**/*.json"

FAQs

Package last updated on 03 Jul 2026

Related posts