qrcode を使用して QR コードを生成し、
jszip を使用してバッチ QR コード ファイルをパッケージ化し、
file-saver を使用してパッケージ化された zip ファイルをダウンロードし、
vue-print-nb を使用して生成された QR コードを印刷します。
QR コードを生成します。
QRコードを印刷する
QRコードをダウンロード
1. バッチで QR コードを生成する - インストールの依存関係
![画像の説明を追加してください](https://img-blog.csdnimg.cn/0d1ecbc8674e4c77b01988e79f7b2733.png
npm i qrcode --save
或
yarn add qrcode --save
2. バッチで QR コードを生成する — 依存関係を導入する
import QRCode from 'qrcode'
3.QRコードをまとめて生成
<div class="qrcode-box" id="printMe">
<div class="qrcode-item" v-for="item in ids" :key="item.id">
<canvas :ref="'canvas' + item"></canvas>
<div class="device-info">设备名称:{
{
checkDeviceMsg(item).deviceName }}</div>
<div class="device-info">设备编号:{
{
checkDeviceMsg(item).lordDeviceNo }}</div>
</div>
</div>
// 循环选中要生成二维码的内容 ids[1,2,3...] 设备id
handleCreateQR() {
this.$nextTick(() => {
for (let i = 0; i < this.ids.length; i++) {
this.useqrcode(this.ids[i])
}
})
},
// 生成二维码
useqrcode(e) {
let canvas = this.$refs[`canvas${
e}`][0] // 获取当前循环的dom
if (!canvas) return // 没有拿到dom直接返回
const _this = this
// 调用函数去生成二维码,参数依次为:二维码的容器、要生成的内容、配置项、回调函数
QRCode.toCanvas(canvas, `https://xxxxx?uid=${
e}`, this.qrcodeForm, function (error) {
if (error) {
console.log(error);
} else {
canvas.toBlob(e => {
// 把生成的二维码放到数组中
_this.fileList.push({
deviceName: deviceInfo.deviceName, lordDeviceNo: deviceInfo.lordDeviceNo, file: e })
})
}
});
},
設定項目:
-
幅 QRコード幅
-
高さ QRコードの高さ
-
errorCorrectionLevel QR コードのエラー訂正レベル。QR コードがブロックされ、結果をスキャンできる領域の割合を指します。
L 7% M 15% Q 25% H 30%
-
色:
dark 前景色 light 背景色
4. QR コードをバッチでダウンロードする - インストールの依存関係
// 安装依赖
npm i jszip --save
npm i file-saver --save
或
yarn add jszip --save
yarn add file-saver -- save
5. バッチで QR コードをダウンロードする — 依存関係を導入する
// 引入依赖
import JSZip from 'jszip'
import FileSaver from "file-saver";
6.QRコードをまとめてダウンロード
// 下载二维码
downLoadQrcode() {
const zip = new JSZip() // 创建一个zip实例
for (const key in this.fileList) {
const item = this.fileList[key]
// 把生成的二维码文件添加到zip中
zip.file(`${
key}二维码名称.png`, item.file, {
binary: true })
}
Promise.all(this.fileList).then(res => {
// 打包文件
zip.generateAsync({
type: 'blob' }).then(content => {
// 下载zip文件
FileSaver.saveAs(content, "压缩文件.zip")
})
})
},
7. 生成された QR コードを印刷する - インストールの依存関係
// 安装依赖
npm i vue-print-nb --save
或
yarn add vue-print-nb --save
8.生成されたQRコードを印刷する
<el-button v-print="print">打印</el-button>
data(){
return {
print: {
id: 'printMe',
popTitle: '设备二维码', // 打印配置页上方标题
extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
previewTitle: '', // 打印预览的标题(开启预览模式后出现),
previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
previewBeforeOpenCallback() {
}, //预览窗口打开之前的callback(开启预览模式调用)
previewOpenCallback() {
}, // 预览窗口打开之后的callback(开启预览模式调用)
beforeOpenCallback() {
}, // 开启打印前的回调事件
openCallback() {
}, // 调用打印之后的回调事件
closeCallback() {
}, //关闭打印的回调事件(无法确定点击的是确认还是取消)
url: '',
standard: '',
extraCss: '',
},
}
}