赞
踩
在进行系统开发过程中,表单打印功能往往是必不可少的一个需求。而为了实现方便快捷的表单打印,我们可以借助一些现成的工具和插件来简化开发流程。我找到了一个名字为 vue-plugin-hiprint 负责提供表单打印功能的插件,这个插件是一个JS插件,理论上是可以支持市面上所有的框架。通过引入 vue-plugin-hiprint,开发者可以轻松地在后台管理系统中实现表单的打印功能,提升用户体验,提高工作效率。本系列教程将以云程低代码平台的打印功能为目标,介绍如何引入 vue-plugin-hiprint 插件,并展示如何快速使用该插件实现表单打印功能。
demo 使用 Vite 创建
npm i vue-plugin-hiprint
- // 引入打印插件
- import { hiPrintPlugin } from "vue-plugin-hiprint";
- const app = createApp(App);
- // 安装插件
- app.use(hiPrintPlugin);
引入插件后打开浏览器开发者工具,是不是发现有一个 WebSocket 报错,这是咋回事呢?
是因为这个插件也做了一个配套的 electron 客户端实现静默打印,但是本文介绍的打印方式为浏览器打印的功能,所以在引入的时候的应该禁用 WebSocket 的自动连接。
- // 引入打印插件
- import { hiPrintPlugin } from "vue-plugin-hiprint";
- // 关闭客户端连接
- hiPrintPlugin.disAutoConnect()
- const app = createApp(App);
- // 安装插件
- app.use(hiPrintPlugin);
这样就解决了 WebSocket 报错的问题。
在构建拖拽栏的时候,需要记住几个步骤。
- // template 部分
- // 以文字为例
- <div class="ep-draggable-item item" tid="defaultModule.text">
- <!-- 这里填写你想在页面上显示的内容 -->
- </div>
- // script 部分
- // 引入默认面板
- import { hiprint, defaultElementTypeProvider } from "vue-plugin-hiprint";
- // 注册默认面板
- hiprint.init({
- providers: [defaultElementTypeProvider()],
- });
- // 必须在 dom 加载完成之后给刚刚绑定上的元素添加上拖拽事件
- onMounted(() => {
- hiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));
- });
效果如图
还是一样,先得给设计器和属性栏一个容器 (DOM) 用来存放内容
- // template 部分
- // 设计器部分
- <div id="hiprint-printTemplate" class="hiprint-printTemplate"></div>
- // 属性栏部分
- <div id="PrintElementOptionSetting" class="PrintElementOptionSetting"></div>
就和 Vue 中组件挂载完才能对它进行操作一样,如果需要构建出相应的内容,需要等到 DOM 加载完后进行构建的操作
- // script 部分
- // 创建一个 hiprint 的模板实例
- let hiprintTemplate = ref()
- const buildDesigner = () => {
- // 绑定拖拽事件
- hiprint.PrintElementTypeManager.buildByHtml($(".ep-draggable-item"));
- // new hiprint.PrintTemplate 的返回值是一个模板的实例
- // 传入的参数各种的配置项
- // settingContainer:属性栏面板
- hiprintTemplate.value = new hiprint.PrintTemplate({
- settingContainer: "#PrintElementOptionSetting",
- });
- // 构建一个设计模板,指定容器,是否开启网格展示
- hiprintTemplate.value.design("#hiprint-printTemplate",{grid:true});
- };
-
- onMounted(() => {
- // DOM 挂载完进行构建
- buildDesigner();
- });
写完样式后可以得到如下效果
这样我们就完成了打印设计器的创建,这时我们就可以进行打印模板的设计了
通过拖拉拽的方式设计,如图所示
当我们设计好模板,发现一个问题,我的模板数据怎么保存呢?别急,刚刚我们不是创建了一个 hiprint 的实例化对象嘛。在那个对象上面有一个 getJson 的方法获取我们设计的这个模板的JSON数据,所以我们可以设计一个按钮来保存模板数据。
因为是 Json 数据,我们可以选择直接保存在 localStorage 中,如果需要下次进入页面读取JSON 数据的模板,可以使用实例化对象上的 update 方法进行读取保存的 JSON 数据。
- // 保存模板到 localStorage 中
- const save = () => {
- localStorage.setItem("JSON",JSON.stringify(hiprintTemplate.value.getJson()))
- };
保存的JSON数据
- // 在重新进入时加载上次保存的模板 需要在创建完实例后进行加载
- hiprintTemplate.value.update(JSON.parse(localStorage.getItem("JSON")))
本章节将 vue-plugin-hiprint 插件的基本设计功能进行了实现,在下一章节我们会将模板与自己的业务表单数据进行结合,实现一个随着表单数据变化而打印内容变化的动态打印功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。