vue实现批量打印二维码 (需安装二维码插件qrcodejs2)javascript
一、安装: npm i vue-print-nb -Scss
二、全局注册(main.js):html
import Print from 'vue-print-nb' Vue.use(Print)
三、使用:vue
<div id="printTest" > <p>锄禾日当午</p> <p>汗滴禾下土 </p> <p>谁知盘中餐</p> <p>粒粒皆辛苦</p> </div> <button v-print="'#printTest'">打印</button>
插件地址:https://github.com/xyl66/vuePlugs_printjsjava
一、在src下新建文件夹plugs,将下载好的print.js放入plugs文件夹下git
二、全局注册(main.js):github
import Print from './plugins/print' Vue.use(Print) // 注册
三、使用npm
<div ref="print" > <p>打印内容</p> <p class="no-print">不要打印我</p> </div> <button @click="handlePrintText">打印</button> <!--no-print样式类 为不打印区域-->
methods:{ handlePrintText(){ this.$print(this.$refs.print) } }
一、安装二维码插件
npm i qrcodejs2 -S数组
二、导入插件
import QRCode from 'qrcodejs2';测试
三、使用
<!--设置打印内容在页面上不可见--> <div style="display:none;"> <div ref="print" id="printStyle"> <div class="item" v-for="(item,index) in this.goodsData" :key="index"> <h2>{{item.name}}</h2> <div class="qrcode-pic" ref=codeItem></div> </div> </div> </div> <button @click="handleBatchPrintCode">批量打印</button>
//假设须要批量打印的数组为goodsData:[{name:'商品1', code:'123'},{name:'商品2', code:'456'}] methods:{ handleBatchPrintCode(){ //必需要等到页面加载完成,否则会报错 this.$nexTick(()=>{ this.goodsData.forEach((item,index)=>{ let code = item.code; this.$refs.codeItem[index].innerHTML=""; new QRCode(this.$refs.codeItem[index], { text: code, //二维码内容 width: 200, height: 200, // colorDark: "#333333", //二维码颜色 // colorLight: "#ffffff", //二维码背景色 }) }) setTimeout(()=>{ this.$print(this.$refs.print); },200) }) } }
四、样式问题
//打印样式放在这个里面就能够了 @media print{ #printStyle .item{ margin: 10px; } #printStyle h2{ font-size: 30px; } }
五、效果图
这两种方法效果同样,点击按钮弹出一个打印弹窗,惟一不一样的是调用方法不同,看我的需求选择使用哪一种
ps:功能算是实现了,具体还没连打印机,因此无法测试,有问题后面再补充