续打
网格报表按上次打印进度只打新增内容的续打功能,含模板配置、打印步骤、状态说明、限制,以及宿主系统接入时用到的接口。
概述
护理记录单、医嘱单这类单据在同一张纸上分多次打印:上次打到第几页第几行,下次接着往下打,已经打过的内容不再出墨。续打功能在服务端记录每本单据的打印进度,再次打印时生成一份"已打部分不出墨"的 PDF,只打新增的行。
续打建立在 分行打印 之上,是网格报表的能力,仪表盘和单据模板不支持。
功能入口
- 模板配置:网格设计器 > 选中分行打印主格 > 「布局」页签 > 「分行打印」分组 > 「续打」。
- 使用:报表查看页工具栏「续打」按钮,仅在模板配置了续打时显示。
操作步骤
配置模板
- 按 分行打印 启用主格。
- 在主格「续打」分组的「单据键」中填写报表参数表达式,用来区分不同的单据,例如
$zyh(住院号参数)。表达式需引用至少一个存在的报表参数。 - 在「记录键字段」中选择主格数据集里每条记录的稳定标识字段,如记录 ID。不能用序号。
- 两项都填写后,该分组底部显示「已启用续打」;只填一项不生效,显示「两项都填写后才会出现续打」。
- 保存模板。
打印
- 打开报表查看页,输入参数(如住院号)。
- 点击工具栏「续打」,弹窗显示当前状态和放纸提示。
- 按提示放入原纸,点击弹窗底部按钮(「续打」「开始打印」「从第 N 页重打」或「整本重打」)。
- 打印后确认结果。插件打印时按打印任务状态自动确认;浏览器打印对话框路径会询问「已打印」或「未打印」,选择「未打印」不会记录进度。
状态说明
| 状态 | 弹窗提示 | 按钮 | 放纸提示 |
|---|---|---|---|
| 从未打印 | 从未打印过,本次将打印整本 | 开始打印 | 从新的一页开始,放白纸即可 |
| 可续打 | 将从第 N 页第 R+1 行开始打印(上次打到第 N 页第 R 行) | 续打 | 已打到中途时提示放入第 N 页原纸 |
| 已打内容被改 | 第 k 页起内容已变更,需要从第 k 页重打 | 从第 k 页重打 | 用白纸重打,替换原来的第 k 页及之后的页 |
| 版式变化 | 版式已变更(纸张/边距/列宽/字体等),需要整本重打 | 整本重打 | 用白纸整本重打,原来打出的纸作废 |
| 没有新内容 | 没有新内容需要续打 | 无 | 无 |
内容变化的判断依据是明细行内容的指纹。图片按内容比较。
参数说明
| 属性 | 说明 | 取值/默认值 |
|---|---|---|
| 单据键 | 区分不同单据的参数表达式 | 例如 $zyh,必填才能启用续打 |
| 记录键字段 | 每条记录的稳定标识字段 | 主格数据集字段,必填才能启用续打 |
管理员操作:弹窗「更多」折叠区中有「重置进度(整本重打)」和「手动设置到第 N 页第 R 行」,仅拥有权限点「重置续打进度」(report:print-progress:reset)的用户,或被授权的外部应用可见。
宿主系统接口
服务端接口挂在 /report/print 下,调用需具备报表查看权限。
| 接口 | 方法 | 说明 |
|---|---|---|
/report/print/progress |
GET | 查询续打状态 |
/report/print/continue |
POST | 生成续打 PDF,响应头 X-Print-Token 为打印令牌,X-Print-Range 为页范围 |
/report/print/confirm |
POST | 打印成功后确认,推进进度 |
/report/print/cancel |
POST | 打印失败或取消,不推进进度 |
/report/print/reset |
POST | 重置进度,需权限点 report:print-progress:reset |
/report/print/manual-set |
POST | 手动设置进度 |
未确认的打印令牌 24 小时后过期。嵌入场景通过嵌入视图的续打方法与事件对接,详见 应用集成。业务上的限打次数、是否允许再打由宿主系统自行管理,续打功能不提供。
示例
住院号 Z0001 的护理记录单,已打印到第 2 页第 12 行:
- 模板中「单据键」填
$zyh,「记录键字段」选record_id。 - 新增 3 条护理记录后,打开报表并传入
zyh=Z0001,点「续打」。 - 弹窗提示"将从第 2 页第 13 行开始打印(上次打到第 2 页第 12 行)",放入第 2 页原纸,点「续打」。
- 打印输出中已打的 12 行不出墨,只印新增的 3 行,确认后进度推进到新的行。
注意事项
注意:续打要求按实际大小送纸。走浏览器打印对话框时选择「实际大小」或 100%,不要缩放;使用插件打印时,纸张与方向按报表页面设置传给插件。
注意:开启续打后,模板不能使用表尾重复行、交叉表、跨记录的纵向合并。模板带表尾重复行时,续打会报错「续打的模板不能使用表尾重复行」。交叉表和纵向合并在设计器中未拦截,需要设计者自行避开。
注意:明细行里如果放了当前时间、随机数这类每次求值都不同的表达式,会被判为已打内容被改,续打被挡住。
注意:不出墨只支持 PDF 输出,Word、Excel、OFD 导出不支持续打。暂不支持打印偏移校准。
提示:续打份数固定为 1 份,打印任务名取报表名。