vue3 使用qrcodejs2-fix生成二维码并可下载保存

直接上代码

<template>
  	<el-button @click='setEwm'>打开弹框二维码</el-button>
 	<el-dialog v-model="isShow"  >
 		<div  id="qrCodeUrl" ref="qrCodeUrl"></div>
        <el-button type="primary" @click="saveCode()" >保存二维码</el-button>
     </el-dialog>
  </template>
   <script>
   import QRCode from 'qrcodejs2-fix';//需要下载 npm install -s qrcodejs2-fix
   export default {
   data(){
	return {
	   isShow:false,//默认不打卡弹框
	   qrCode:'',
	   QRCode:'',
	 }
   //生成二维码
   methods:{
   	//生成二维码
	setEwm(){
	 this.isShow=true;//打开遮罩层
	 this.QRCode= new QRCode(this.$refs.qrCodeUrl, {
		 text: this.qrCode, // 需要转换为二维码的内容
		 width: 260, // 二维码的宽度
	     height: 260, // 二维码的高度
	     colorDark: "#000000", 
	     colorLight: "#ffffff", 
		 correctLevel: QRCode.CorrectLevel.H, // 二维码的纠错水平
    })
    },
	// 保存二维码
	saveCode(name){
	  	//获取二维码中格式为imag的元素
	 	const nodeList = Array.prototype.slice.call(this.QRCode._el.children)
	 	const img = nodeList.find((item) => item.nodeName.toUpperCase() === 'IMG')	
		// 构建画布
		let canvas = document.createElement('canvas');
		canvas.width = img.width;
		canvas.height = img.height;
		canvas.getContext('2d').drawImage(img, 0, 0)
		// 构造url
		let url = canvas.toDataURL('image/png')
		const a = document.createElement("a")
		a.href = url
		a.download =`二维码.png`
		// 触发a链接点击事件,浏览器开始下载文件 
		a.click()
	}
	}
   }
  </script>

在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值