vue引用qrcodejs2生成、下载二维码、复制到剪贴板

使用的vue2.x版本,UI框架为ant design vue 1.X版本

1.场景:页面需要展示二维码并且需要下载二维码的功能

效果图:在这里插入图片描述

引用插件:

yarn add qrcodejs2@0.0.2

template标签内容

 <div class="qrcodeDownLoad">
      <div class="qrcode" ref="qrcodeFile" :id="'qrcode_' + qcCodeKey"></div>
      <a-button type="primary" class="downLoadbtn" @click="downloadCode"> 下载二维码 </a-button>
 </div>

script标签内容

<script>
import QRCode from 'qrcodejs2'
export default {
	data(){
		reture{
		      //处理二维码下载缓存的问题
      		  qcCodeKey: new Date(),
		      //分享
		      shareForm: {
		        //是否加密
		        passWordVal: 'false',
		        //文件分享的链接
		        shareName: '',
		        //提示
		        message: '',
		        //是否显示二维码
		        isQRCodeShow: true,
		        //抬头
		        title: '',
		        //格式
		        suffix: '',
		      }
		}
	},
	created(){
		this.$nextTick(() => {
          this.qcCodeKey = +new Date()
          this.creatQrCode(this.shareForm.shareName)
        })
	}
	methods:{
		    // 保存下载二维码
		    downloadCode() {
		      const qrcode = document.querySelector(`#qrcode_${this.qcCodeKey}`)
		      const canvas = qrcode.querySelector('canvas')
		      const imgurl = canvas.toDataURL('image/jpeg')
		      const a = document.createElement('a')
		      a.href = imgurl
		      a.download = this.shareForm.title + '-二维码.png' // 图片名称
		      a.click()
		    },
	        //生成二维码
		    creatQrCode(path) {
		      //销毁二维码 innerHTML = ''(这里也可以加个if判断this.$refs.qrcodeFile!=undefined)
		      this.$refs.qrcodeFile.innerHTML = ''
		      this.qrcodeImg = new QRCode(this.$refs.qrcodeFile, {
		        text: path, // 需要转换为二维码的内容
		        width: 180,				//宽度
		        height: 180,			//高度
		        colorDark: '#000000',	//二维码方块颜色
		        colorLight: '#ffffff',  //背景颜色
		        correctLevel: QRCode.CorrectLevel.Q,  //容错率:L M Q H 依次递减
		      })
		    }
	}
}
</script>

注意点:

1.correctLevel 容错率:L M Q H 依次递减,并且二维码方块密度越高
2.二维码高度宽度不能太低,不然二维码里内容太多展示不下,会报错qrcode length overflow (1632>1056),解决方法为:提供correctLevel 容错率,以及二维码宽度高度给更大一些
3.下载二维码需要给div赋值动态的key,不然会下载缓存里的二维码数据

2.复制到剪贴板

引用插件:

yarn add clipboard@2.0.11

template标签内容

 <div class="qrcodeDownLoad">
      <a-button
            type="primary"
            class="tag-read"
            style="left: 10px"
            :data-clipboard-text="shareForm.shareName"
            @click="btnCopyShare"
          >
            复制链接
          </a-button>
 </div>

script标签内容

<script>
import Clipboard from 'clipboard'
export default {
	data(){
		reture{
		      //分享
		      shareForm: {
		        //是否加密
		        passWordVal: 'false',
		        //文件分享的链接
		        shareName: '',
		        //提示
		        message: '',
		        //是否显示二维码
		        isQRCodeShow: true,
		        //抬头
		        title: '',
		        //格式
		        suffix: '',
		      }
		}
	},
	methods:{
	       //复制链接按钮
		    btnCopyShare() {
		      var clipboard = new Clipboard('.tag-read')
		      clipboard.on('success', (e) => {
		        this.$message.success('复制到剪贴板成功!')
		        // 释放内存
		        clipboard.destroy()
		      })
		      clipboard.on('error', (e) => {
		        // 不支持复制
		        this.$message.error('该浏览器不支持自动复制')
		        // 释放内存
		        clipboard.destroy()
		      })
		    }
	}
}
</script>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值