Skip to content

单据打印功能手册

单据打印用于把业务表单、流程记录和明细表数据合并成可打印的审批单。本文以「出差申请单」为例,按实际页面截图说明从数据模型导入、流程模型配置、模板设计到页面打印按钮展示的完整链路。

适用场景:

  • OA、HRM、合同、项目等业务单据需要审批后归档或线下签批。
  • 业务表单包含主表字段和一张或多张明细表,例如出差行程、报销明细、用品明细。
  • 打印内容需要包含单据编号、申请人、申请日期、所属部门、流程记录等通用信息。

功能边界

能力说明
主表字段来自流程模型绑定的代码生成主表,例如 oa_business_trip
明细表来自流程模型绑定的代码生成明细表,例如 oa_business_trip_item
通用字段系统自动提供单据编号、申请人、申请日期、流程名称、打印人、打印时间等
流程记录系统自动读取流程审批记录,并在打印模板中按表格展示
打印入口业务详情页底部展示「打印」按钮,点击后打开打印预览弹窗

一、导入数据模型

进入「基础设施 -> 代码生成」,确认业务主表和明细表已经导入代码生成器。以出差申请为例,需要至少包含:

代码生成中导入出差申请主表和行程明细表

用途示例说明
oa_business_trip主表出差申请单,承载申请人、出差事由、开始日期、结束日期、预计费用等字段
oa_business_trip_item明细表出差申请行程明细,承载出发城市、到达城市、开始日期、结束日期、交通方式、备注等字段

如果列表中没有对应表,点击「导入」从数据库导入。导入后重点检查:

  • 表名和表描述是否准确,表描述会作为后续下拉框和打印字段的中文来源。
  • 实体名称是否和当前业务模块一致,例如 BusinessTripBusinessTripItem
  • 主表和明细表都已导入。只导入主表时,打印模板左侧不会出现明细表卡片。

二、配置流程模型

进入「流程中心 -> 流程设置 -> 流程模型」,打开目标流程的「修改流程」页面。

流程模型表单设计中绑定业务表单、主表和明细表

在「表单设计」步骤中按业务表单方式配置:

配置项推荐值说明
表单类型业务表单使用业务模块自己的详情页和保存逻辑
表单提交路由/oa/trip/trip-apply-info发起流程时打开的前端路由
表单查看地址/oa/trip/tripapply/info/index.vue审批详情或流程详情读取的组件地址
关联数据模型出差申请单(oa_business_trip打印主表字段、字段权限等能力的数据来源
明细表出差申请行程明细(oa_business_trip_item打印模板中「明细表」区域的数据来源

这里的「关联数据模型」和「明细表」不是展示用备注,而是后续打印模板字段面板的数据来源。保存后,模板编辑器会读取这些表的字段,自动生成「主表字段」和「明细表」。

三、开启自定义打印模板

继续配置流程节点和审批规则后,进入「更多设置」步骤。

更多设置中开启自定义打印模板并进入编辑模板

  1. 找到「自定义打印模板」。
  2. 打开开关。
  3. 点击「编辑模板」。

系统会打开「自定义模板」弹窗。若第一次启用,系统会生成一份基础模板,包含单据编号、打印时间、打印人员、申请人、申请日期、所属单位、所属部门和流程记录。

四、设计打印模板

模板编辑器分为左侧字段面板和右侧编辑区。

自定义模板设计器中插入通用字段、主表字段、明细表和流程记录

左侧字段分组:

分组来源常见字段
通用字段流程实例和当前打印上下文单据编号、申请人、申请日期、所属单位、所属部门、流程名称、打印人、打印时间
主表字段关联数据模型主表出差事由、出差开始日期、出差结束日期、预计费用、备注
明细表已选择的代码生成明细表出差申请行程明细,可配置显示列和列顺序
特殊块流程引擎流程记录

推荐设计方式:

  1. 先保留默认模板的表头字段,例如 @流程名称@单据编号@打印时间@打印人
  2. 在正文表格中插入主表字段,例如 @出差事由@出差开始日期@出差结束日期@预计费用
  3. 在「明细表」区域选择「出差申请行程明细」,点击「配置插入」,勾选需要打印的列并调整顺序。
  4. 插入「流程记录」,用于展示发起人、审批节点、审批意见和自动通过说明。
  5. 点击「确认」保存模板内容。

明细表建议只保留客户阅读需要的列,例如出发城市、到达城市、开始日期、结束日期、交通方式、备注。内部字段、租户字段、创建人、更新时间等审计字段默认不参与展示。

五、发布流程

模板保存后,回到流程模型页面,点击「保存」或「发布」。

注意事项:

  • 新模板需要随流程模型一起发布后,业务页面才能读取到最新打印配置。
  • 如果流程已经被发起过,历史流程实例可能仍按旧流程定义展示;建议用新发布版本重新发起一条单据验证。
  • 修改模板后,应再次保存流程模型。只关闭弹窗但不保存流程模型,可能导致模板没有持久化。

六、页面打印按钮展示

打开业务详情页,例如:

text
/oa/trip/trip-apply-info?id=6

当该单据已经关联流程实例,并且流程定义启用了自定义打印模板时,页面底部会显示「打印」按钮。点击后打开「打印流程」弹窗,预览内容包含:

业务详情页点击打印后预览出差申请单

  • 单据标题,例如「出差申请单」。
  • 单据编号、打印时间、打印人员。
  • 申请人、申请日期、所属单位、所属部门。
  • 业务主表字段,例如出差事由、出差日期、预计费用。
  • 明细表数据,例如两条行程明细。
  • 流程记录,例如发起人节点、审批通过、自动通过说明。

确认预览无误后,点击弹窗右下角「打印」调用浏览器打印。

七、验收清单

检查项通过标准
数据模型代码生成列表中存在主表和明细表
流程表单流程模型选择「业务表单」,提交路由和查看地址正确
数据绑定「关联数据模型」选择主表,「明细表」选择需要打印的明细表
模板字段编辑模板时能看到通用字段、主表字段、明细表和流程记录
流程发布修改后已保存并发布流程
业务页面详情页底部展示「打印」按钮
打印预览主表、明细表、流程记录都有真实数据

常见问题

编辑模板时没有主表字段

通常是流程模型没有绑定「关联数据模型」,或者对应表没有导入代码生成器。先到「基础设施 -> 代码生成」确认主表已导入,再回到流程模型「表单设计」保存绑定。

编辑模板时没有明细表

检查「表单设计」步骤里的「明细表」是否已选择。明细表需要先导入代码生成器,然后在流程模型里绑定;只在数据库存在但未导入代码生成器时,模板编辑器不会展示。

业务详情页没有打印按钮

重点检查三处:

  • 流程模型「更多设置」是否开启「自定义打印模板」。
  • 模板是否已确认保存,并且流程模型是否已发布。
  • 当前业务详情是否已经关联流程实例。未发起流程或没有流程实例编号的草稿单据,通常不会展示流程打印入口。

打印预览有字段但值为空

先确认当前单据 ID 是否正确,再检查业务表数据是否已经保存。主表字段来自业务单据,流程记录来自流程实例,两个数据源都必须存在。

修改模板后页面仍显示旧内容

保存模板后需要保存或发布流程模型。若测试的是旧流程实例,建议重新发起一条单据验证新模板。

二开参考

当前流程自定义打印链路主要涉及:

位置说明
ruoyi-office-vben/apps/web-antd/src/views/bpm/model/form/modules/form-design.vue业务表单关联数据模型和明细表
ruoyi-office-vben/apps/web-antd/src/views/bpm/model/form/modules/extra-setting.vue自定义打印模板开关、字段 Schema 构建
ruoyi-office-vben/apps/web-antd/src/views/bpm/model/form/modules/custom-print-template.vue模板编辑器、字段插入、明细表配置
ruoyi-office-vben/apps/web-antd/src/views/bpm/processInstance/detail/modules/process-print.vue打印预览与浏览器打印
ruoyi-office/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/service/print/BpmProcessPrintServiceImpl.java打印数据和打印 Schema 聚合

如果要扩展独立业务类型、hiprint 模板列表或移动端打印入口,可继续参考 BPM 打印平台

联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版