打印精灵JS脚本功能操作手册

打印精灵(PrintSpirit)自设计之初,便秉持着“打印与程序逻辑分离”的核心理念,通过配套的标签编辑器和打印API,极大地简化了应用软件的打印功能开发。无需更改程序, 就可独立修改标签视觉效果.

然而,现实是复杂的, 典型的例子如金额的打印格式问题: 同一份订单,发票上金额需显示为中文大写‘壹仟伍佰捌拾元伍角’,而内部留存联则只需显示数字‘1580.50’。

要实现这一点,一个非常容易想到的方法是后端程序为同一个金额准备两个不同的字段(例如,一个金额,一个大写金额)。这虽然简单,但无疑增加了后端程序的耦合性,与我们“分离”的原则有所冲突。

为了极致的灵活性和应对未来挑战,经过深思熟虑,我们最终决定引入JavaScript脚本作为核心解决方案。

JS脚本

借助JavaScript的强大能力,您可以在标签内部执行条件判断、循环、字符串格式化、日期操作、函数调用等几乎所有JS支持的功能。唯一的要求是,脚本的最终结果必须通过return语句返回

开篇的问题, 后端只需提供一个字段(金额), 大写金额可以简单的用toChinese(金额)轻松获取.

在新版本打印精灵的标签编辑器中,无论是单行文本、多行文本、条码还是二维码的编辑界面,都新增了一个“JS脚本”标签页,供您维护和编写JavaScript代码。脚本支持ECMAScript标准,确保了广泛的兼容性和稳定性。

编辑javascript基本

基础示例:拼接字段

1return `${订单日期} ${订单金额}`

这个简单的脚本将“订单日期”和“订单金额”两个字段的值拼接在一起并返回。

进阶示例:使用内置库函数生成GS1条码

1let code = new GS1()
2code.add(GS1.AI.GTIN, "1234567890123")
3code.add(GS1.AI.SSCC, "123456789012345675")
4
5// 您可以根据需要添加其他条码AI字段
6
7return code.fullcode()

此例演示了如何利用内置的GS1编码库函数。它能帮助您方便地生成合规的GS-1标准条码数据,自动计算校验码并插入分隔符,极大简化了复杂的条码生成逻辑。

高级示例:数组变量与汇总计算

1//set 订单明细=[{name:'商品A', price:100}, {name:'商品B', price:200}]
2
3let total=0
4for (cur of 订单明细) {
5	total += cur.price
6}
7
8return total

此脚本展示了如何处理数组类型的变量,并进行汇总计算。这里计算了订单明细中所有商品的价格总和。

变量使用提示: 在JS脚本中,您可以使用通过API调用时传递过来的任意变量。然而,在标签设计时,这些变量可能尚未存在,因此需要预先定义,否则可能会报告“变量未定义”错误。

两种推荐的变量定义方式:

  1. 通过“变量管理”界面定义:此方法直观易懂,适合简单的变量声明。
  2. 在脚本开头使用//set var=xxxx定义:这种方式特别适用于定义复杂的、与运行时数据结构完全相同的变量,便于在设计时进行测试和调试。请注意,//set之间不能有空格。

JS脚本库函数

为了进一步提升开发效率,打印精灵提供了脚步库函数功能, 可以将常用的程序写成函数, 方便使用, 包括标准库函数和用户库函数两类.

标准库函数

标准库函数, 无需设置开箱即可在文本、条码等所有字段的JS脚本中直接调用,包括如下几个类别.

用户库函数

自定义库函在整个标签范围内有效,通过点击编辑javascript基本 按钮管理和维护. 定义后, 使用方法和标准库一样。

维护管理js脚本库函数

实际效果:效率与灵活性的飞跃

实施这套JS脚本方案后,打印精灵在实际应用中带来了显著的提升:

对第三方应用开发团队:

  • 90%的打印相关需求变更不再需要开发团队介入,由业务或运营人员自行调整。
  • 减少了大量重复的数据格式化代码,使后端程序更加专注于业务逻辑。
  • 系统稳定性更高,核心业务逻辑不再受前端打印格式变更的影响。

对业务部门:

  • 打印格式调整的响应时间从“几天”缩短到“几分钟”,大大提高了业务敏捷性。
  • 可以自主实验和迭代不同的打印样式,无需依赖开发资源。
  • 针对如促销活动专用格式等特殊打印需求,能够实现快速响应和上线。

留言

登录