当前位置: 首页 > article >正文

vue2在线生成二维码

亲情提示:如果可以让后端生成就让后端生成 实在不行再前端解决(分享方法只是为了让你快点下班  不是为了让你能者多劳)

创建

npm install qrcodejs2  
pnpm install qrcodejs2 

<div ref="qrcode" id="myQrCode" class="qrImg" style="display: flex;align-items: center;justify-content: center;"></div>

import QRCode from 'qrcodejs2'

data:{
  qrcode: '',
}

submitCode() {
  <!-- 每次生成前先清除二维码 -->
  if (this.$refs.qrcode) {
    this.qrcode = '';
    this.$refs.qrcode.innerHTML = ''; // 清除二维码方法
  }
  try {
        getPayMerchantQrCode({
          merchantId: this.zfbId,
          channelId: 1,
          totalAmount: this.zfbForm.price,
          subject: this.zfbForm.subject,
        }).then((res) => {
          this.$message.success("生成成功");
          this.zfbOpen = false
          this.skmOpen = true
          this.$nextTick(() => {
            // 这里生成最新的二维码照片渲染
            this.qrcode = new QRCode(this.$refs.qrcode, {
              width: 300,  // 二维码宽度 (不支持100%)
              height: 300, // 二维码高度(不支持100%)
              text: res.data.qrCode, // 后端返回的二维码地址,这里暂时写死
              render: 'canvas', // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
            });
          })
        });
      } catch (error) {
        console.log(error)
      }
}

下载

downLoadQrcode() {
    let img = document.getElementById("myQrCode").getElementsByTagName['img'][0] // 获取二维码图片标签
    let canvas = document.createElement('canvas') // 创建画布
    canvas.width = img.width
    canvas.height = img.height
    let ctx = canvas.getContext('2d')
    ctx.drawImage(img, 0, 0)
    let tempUrl = canvas.toDataURL('image/png') // 画布生成base64格式图片
    // 创建a标签,模拟点击下载
    let a = document.createElement('a')
    a.setAttribute('download','我的二维码.png')
    a.style.display = 'none'
    a.href = tempUrl
    document.body.appendChild(a)
    a.click()
    document.body.removeChild(a)
}

http://www.kler.cn/a/517804.html

相关文章:

  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.10 文本数据炼金术:从CSV到结构化数组
  • 沃尔玛 礼品卡绑定 分析
  • 【2024年华为OD机试】 (A卷,100分)- 整理扑克牌(JavaScriptJava PythonC/C++)
  • opengrok_使用技巧
  • docker 简要笔记
  • 【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构
  • php哪几个框架运行速度是比较快的?
  • leetcode——搜索二维矩阵II(java)
  • TCP 长连接和短连接
  • ubuntu22.04安装Gtsam解决Eigen不兼容问题
  • 深度学习笔记——循环神经网络之LSTM
  • 工业缺陷检测实战——基于深度学习YOLOv10神经网络PCB缺陷检测系统
  • 1.23学习记录
  • 【Feature Scaling】:加速梯度下降法的利器
  • NoSQL使用详解
  • 春节假期旅游热潮下,景区医疗安全如何全面升级?
  • 第R5周:天气预测
  • 竞赛算法总结
  • Flutter 给安卓签名时 使用 Android Studio 找不到 Generate Signed Bundle/APK 菜单问题
  • 基于 WPF 平台使用纯 C# 制作流体动画
  • 【软件测试】《软件测试计划》目录及内容概述
  • react中hooks之useDebugValue用法总结
  • 基于Springboot + vue实现的在线装修管理系统
  • FlinkSql使用中rank/dense_rank函数报错空指针
  • HashSet经典面试题
  • Git知识分享