Skip to content

三、模板管理 ​

模板管理页是打印中心的入口页,对应菜单「自定义打印」,页面路径 /custom-print/template。

3.1 页面布局 ​

┌──────────────┬──────────────────────────────────────────┐
│ 单据类型树     │  查询栏:模板名称 / 状态                     │
│ (按模块分组,  │  [新增模板]                                │
│  支持关键字过滤,│  ────────────────────────────────        │
│  顶部有"全部    │  模板列表表格                              │
│  模板"入口)    │  行操作:设计 / 设默认 / 复制 / 删除          │
└──────────────┴──────────────────────────────────────────┘
  • 左侧树:来自 BD 基础数据的单据类型分组(FIN 财务、ERP 采购/销售/库存、OA 单据、MES 生产、AMS 资产),点叶子节点右侧列表只显示该 billType 的模板;点「全部模板」显示所有;
  • 列表列:模板名称、单据类型、模式(简单配置/HTML 标签)、纸张、默认、状态、备注、创建时间。

3.2 新增模板弹窗 ​

字段必填说明
单据类型是树形下拉,只能选已注册的叶子类型(如「记账凭证」)
模板名称是建议「单据名-版式名」命名,如「采购订单-客户联」
模板模式是简单配置(勾选字段):零代码,见第四章;HTML 模板(源码):自由排版,见第五章
纸张是A4(默认)/ A5 / 自定义;选自定义出现宽×高输入(宽 50~500mm、高 30~1500mm),切过去自动预填 210×99(即 1/3 A4 穿孔纸)
圆孔效果否开启后按针式两边圆孔穿孔纸排版(左右各留 10mm 孔区,预览可见孔位)

底部两个按钮:

  • 【创建并进入设计】:保存后自动跳转到模板设计器新页签(推荐);
  • 【取 消】:关闭弹窗。

新模板默认:纸张 A4、份数 1、状态启用、非默认。创建后仍可在设计器「基本信息」里修改名称、纸张、份数、状态、备注。

3.3 行操作 ​

操作权限说明
设计infra:print-template:update新页签打开模板设计器修改版式
设默认infra:print-template:update设为该单据类型的默认模板。同一 billType 仅一个默认,设置后原默认自动取消
复制infra:print-template:create复制整套模板:编码自动生成 tpl_xxxxxxxx,名称追加「-副本」,默认标记清除。适合基于预置模板改造时保留原件
删除infra:print-template:delete逻辑删除,删除前请确认没有业务依赖(删除默认模板后该类型若无其他模板将回落到兜底版式)

补充规则:

  • 停用模板:进设计器把「状态」改为停用,打印时不再出现在可选列表;
  • 默认模板不可换单据类型:需要换类型时请复制一份新建;
  • 模板编码(templateCode)同单据类型内唯一,重复保存会报「模板编码已存在」。

3.4 打印时的模板选择逻辑 ​

业务页点【打印】后,系统按以下优先级取模板:

URL 显式指定 templateId
  → 默认模板(is_default)
  → 第一个启用模板
  → 兜底版式(无任何模板时)

只有 1 个启用模板时不弹窗直接进预览;多个模板才弹「选择打印模板」。

3.5 菜单与权限 ​

菜单结构(初始化 SQL 自动创建,幂等):

层级名称类型说明
根目录自定义打印目录路径 /custom-print,图标 ep:printer
菜单自定义打印菜单组件 infra/printTemplate/index,权限 infra:print-template:query
按钮模板查询按钮infra:print-template:query
按钮模板新增按钮infra:print-template:create
按钮模板修改按钮infra:print-template:update
按钮模板删除按钮infra:print-template:delete

给配置员授权:系统管理 → 角色管理 → 菜单权限,勾选「自定义打印」目录 + 菜单 + 所需按钮。

打印数据接口(/infra/print/data 等)登录即可访问,数据范围由各业务模块自身的查询逻辑控制;模板管理接口才需要上表权限。

3.6 多租户说明 ​

模板表带租户隔离(tenant_id),每个租户各自维护模板,互不可见。SaaS 场景下各公司可按需定制自己的版式;初始化脚本预置的模板归属租户 1。