vue3 hiprint 打印 JSON模板

Vue插件hiprint安装与打印使用指南
该文章已生成可运行项目,

1.安装

npm i vue-plugin-hiprint

2.引用

import {hiprint, hiPrintPlugin} from 'vue-plugin-hiprint'

3.引用css

<link rel="stylesheet" type="text/css" media="print" href="https://cdn.jsdelivr.net/npm/vue-plugin-hiprint@latest/dist/print-lock.css" />

4.初始化hiprint

hiPrintPlugin.disAutoConnect(); // 这里是关闭连接 离线打印
hiprint.init();

5.定义JSON模板(自定义设计生成的JSON)

mypanel: {
        panels: [
          {
            "index": 0,
            "name": 1,
            "height": 296.6,
            "width": 210,
            "paperHeader": 49.5,
            "paperFooter": 778.9494949494949,
            "printElements": [
              {
                "options": {
                  "left": 16.5,
                  "top": 18,
                  "height": 17,
                  "width": 120,
                  "testData": "单据表头",
                  "fontSize": 16.5,
                  "fontWeight": "700",
                  "textAlign": "center",
                  "hideTitle": true,
                  "title": "单据表头"
                },
                "printElementType": {
                  "title": "单据表头",
                  "type": "text"
                }
              },
              {
                "options": {
                  "left": 21,
                  "top": 66,
                  "height": 54,
                  "width": 550,
                  "fields": [
                    {
                      "text": "名称",
                      "field": "NAME"
                    },
                    {
                      "text": "数量",
                      "field": "SL"
                    },
                    {
                      "text": "规格",
                      "field": "GG"
                    },
                    {
                      "text": "条码",
                      "field": "TM"
                    },
                    {
                      "text": "单价",
                      "field": "DJ"
                    },
                    {
                      "text": "金额",
                      "field": "JE"
                    },
                    {
                      "text": "备注",
                      "field": "DETAIL"
                    }
                  ],
                  "field": "table",
                  "footerFormatter": "function (options, rows, data, currentPageGridRowsData) {\n        console.log(currentPageGridRowsData);\n        if (data && data[\"totalCap\"]) {\n          return `<td style=\"padding:0 10px\" colspan=\"100\">${\"应收金额大写: \" + data[\"totalCap\"]}</td>`;\n        }\n        return '<td style=\"padding:0 10px\" colspan=\"100\">应收金额大写: </td>';\n      }",
                  "qid": "table",
                  "columns": [
                    [
                      {
                        "width": 275,
                        "title": "名称",
                        "field": "NAME",
                        "checked": true,
                        "columnId": "NAME",
                        "fixed": false,
                        "rowspan": 1,
                        "colspan": 1,
                        "align": "center"
                      },
                      {
                        "width": 275,
                        "title": "金额",
                        "field": "JE",
                        "checked": true,
                        "columnId": "JE",
                        "fixed": false,
                        "rowspan": 1,
                        "colspan": 1,
                        "align": "center"
                      }
                    ]
                  ]
                },
                "printElementType": {
                  "title": "订单数据",
                  "type": "table",
                  "editable": true,
                  "columnDisplayEditable": true,
                  "columnDisplayIndexEditable": true,
                  "columnTitleEditable": true,
                  "columnResizable": true,
                  "columnAlignEditable": true,
                  "isEnableEditField": true,
                  "isEnableContextMenu": true,
                  "isEnableInsertRow": true,
                  "isEnableDeleteRow": true,
                  "isEnableInsertColumn": true,
                  "isEnableDeleteColumn": true,
                  "isEnableMergeCell": true
                }
              },
              {
                "options": {
                  "left": 481.5,
                  "top": 798,
                  "height": 16,
                  "width": 120,
                  "field": "tel",
                  "testData": "18888888888",
                  "fontSize": 6.75,
                  "fontWeight": "700",
                  "textAlign": "left",
                  "textContentVerticalAlign": "middle",
                  "title": "客户电话",
                  "qid": "tel"
                },
                "printElementType": {
                  "title": "客户电话",
                  "type": "text"
                }
              }
            ],
            "paperNumberLeft": 564,
            "paperNumberTop": 760.5,
            "paperNumberContinue": true,
            "watermarkOptions": {},
            "panelLayoutOptions": {}
          }
        ]
      },

6.定义数据 这么多数据是为了测试分页

data: [
        {
          NAME: 'aaa',
          JE: 111,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        },{
          NAME: 'bbb',
          JE: 222,
        }
      ]

7.打印

	let printData = {
        tel: 'xxxx', // 客户电话号 在JSON模板中有对应字段
        table: state.data // 对应JSON模板中的table参数
      }
      var hiprintTemplate = new hiprint.PrintTemplate({template: state.mypanel}) // 定义模板
      hiprintTemplate.print(printData); //开始打印
      

8.如果打印出现格式错乱问题请看第三条,有没有正确引用css

9.成果

在这里插入图片描述

本文章已经生成可运行项目
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值