vue js前端根据所需参数生成二维码并下载

24 篇文章 1 订阅
2 篇文章 0 订阅
  1. 需要一个插件 qrcodejs2, 使用 npm install qrcodejs2 --save 下载该依赖包。
  2. 在vue中引入(我这边是vue2)。import QRCode from 'qrcodejs2';
  3. 在计算属性中使用它。
 computed: {
    QRCode,
  },
  1. 在dom结构中设置一个容器来承载它,并设置一个id.
   <div id="qrcode" style="display: none"></div>  // 如果要显示这个二维码就不要设置display:none   

然后可以在需要下载生成二维码的地方触发这个事件

  1. 生成二维码。
 qrcode(val) {  // 生成二维码函数
  document.getElementById('qrcode').innerHTML = '';  // 清空dom元素内容,防止污染canvas 
      const qrcode = new QRCode('qrcode', {
        width: 200,
        height: 200, // 高度
        text: 'http://wx.qlogo.cn/mmhead/Q3auHgzCEVqspSUMou272WfP9OAJ1dNl0zr6uQ/0xxx', // 二维码内容  这个自己跟换地址 内容
        // render: 'canvas' ,   // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
        background: '#f0f', // 背景色
        foreground: '#ff0', // 前景色
      });
      console.log(qrcode, 'qrcode');
      this.saveImg(); // 下载函数
      return qrcode;
      // console.log(qrcode, '444444');
    },
  1. 生成二维码后就调用下载(如果你们只需要生成二维码就不需要这步)
   saveImg() {
      // 找到canvas标签
      const cvs = document.getElementById('qrcode').getElementsByTagName('canvas');
      console.log(cvs, '[[');
      // 创建一个a标签节点
      const a = document.createElement('a');
      // 设置a标签的href属性(将canvas变成png图片)
      a.href = cvs[0].toDataURL('image/png').replace('image/png', 'image/octet-stream');
      // 设置下载文件的名字
      a.download = 'qrcode.png';
      // 点击
      a.click();
    },

到此就完成了前端根据参数生成二维码,并下载。

项目需求 使用element 表格 来动态生成二维码,要求鼠标移入时显示二维码。
注意这里code 函数是放在 methods 里面的,不要试图使用计算属性来触发,有可能会重复渲染二维码。

截出部分项目中代码

         <template v-if="item.prop === 'linkCodeUrl'" #default="{ $index }">
              <p class="p" @click="copy(data[$index])">复制链接</p>

              <el-popover popper-class="cloud-qrcode" placement="right" width="200" trigger="hover">
                <div :id="`qrcode${$index}`"></div>
                <span
                  slot="reference"
                  class="p"
                  @click="downloadCode(data[$index], $index)"
                  @mouseover="code(data[$index].id, $index)"
                >
                  下载二维码
                </span>
              </el-popover>
            </template>

js部分

    code(val, index) {
      console.log(index, 'pindex');
      this.$nextTick(() => {
        document.getElementById(`qrcode${index}`).innerHTML = '';
        const url = xxxxxx?id=${val}`;
        const qrcode = new QRCode(`qrcode${index}`, {
          width: 200,
          height: 200,
          text: url,
          background: '#f0f',
          foreground: '#ff0',
        });
        return qrcode;
      });
    },

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值