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.成果

Vue插件hiprint安装与打印使用指南
2865

被折叠的 条评论
为什么被折叠?



