主要工具
生成二维码 QRcode
文件压缩 JSZip
文件下载 FileSaver
下载
npm install qrcodejs2 // 生成二维码
npm install jszip // 文件压缩
npm install file-saver // 文件下载
引入
需要的页面直接引入
import QRCode from "qrcodejs2";
import JSZip from "jszip";
import FileSaver from "file-saver";
二维码生成
<div id="qrcodes" style="display:none"></div>
// 第一个值为 绑定dom 的id
new QRCode("qrcodes", {
width: 130, //宽
height: 130, //高
text: str // 二维码内容
})
全部代码 直接 使用
注意事项:1、zip.file() 第一个参数必须为唯一值
<template>
<div>
<div id="qrcodes" style="display:none"></div>
<!--隐藏式-->
</div>
</template>
<script>
import QRCode from "qrcodejs2";
import JSZip from "jszip";
import FileSaver from "file-saver";
export default {
components: {},
data() {
return {
arr: ["1", "2", "3", "4"], // 二维码的内容
qr: [] // 存放生成的二维码数据
};
},
computed: {},
watch: {},
mounted() {
// 遍历二维码内容 生成 二维码数据
this.arr.map(item => {
this.createCode(item);
});
// 判断二维码是否存在
if (this.qr.length > 0) {
// 存在则下载
this.downFiles();
}
},
methods: {
// 生成二维码
createCode(str) {
console.log("生成了么");
// 把所有的二维码放入qr中
this.qr.push(
new QRCode("qrcodes", {
width: 130, //宽
height: 130, //高
text: str // 二维码内容
})
);
},
// 下载
downFiles() {
// 创建一个JSZip的实例
const zip = new JSZip();
var Num = 0 // 序号
this.qr.forEach(item => {
// 循环是指zip文件名和文件路径
zip.file( // zip文件名 必须是唯一值 所以 这里 用了Num++ 可以用后台传过来的唯一编码
Num++ + ".png",
item._oDrawing._elCanvas
.toDataURL("image/png")
.replace(/^data:image\/(png|jpg);base64,/, ""),
{ base64: true }
);
});
// 生成一个zip 文件
zip.generateAsync({ type: "blob" }).then(content => {
window.alert('文件下载成功')
// 第一个参数:保存的文件 第二个参数 文件名
FileSaver.saveAs(content, "券码.zip");
});
}
}
};
</script>
<style lang='scss' scoped>
</style>