vue+vue-qr生成带logo的二维码并自动下载

1.安装 vue-qr组件:

yarn vue-qr --save
或者
npm install vue-qr --save

2.页面挂载使用:(也可以在main.js全局挂载)

单页面引入:

import vueQr from 'vue-qr';
export default {
	components: {
		vueQr
	},
}

3.全局挂载引入:

import VueQr from 'vue-qr'
new Vue({
    components: {VueQr}
})

4.案列代码
4.1使用vue-qr并绑定ref,利用每条数据的id做区分

<template>
  <div class="row wraps">
    <div
      class="column center"
      style="margin:12px;"
      v-for="(row, index) in qrcodeList"
      :key="index"
    >
      <vue-qr
        :ref="'qrCode' + row.id"
        :logoSrc="require('../assets/room-logo.png')"
        :text="
          `${row.frontUrl}?id=${row.id}&bizCode=${row.bizCode}&serialNum=${row.serialNum}`
        "
        :size="800"
        :correctLevel="2"
      ></vue-qr>
      <div>{{ row.id }}</div>
    </div>
  </div>
</template>

     <!--  !!!!配置属性!!!!
	 text	编码内容
	 correctLevel	容错级别
	 size	尺寸, 长宽一致, 包含外边距
	 margin	二维码图像的外边距, 默认 20px
	 colorDark	实点的颜色
	 colorLight	空白区的颜色
	 bgSrc	欲嵌入的背景图地址
	 gifBgSrc	欲嵌入的背景图 gif 地址,设置后普通的背景图将失效。设置此选项会影响性能
	 backgroundColor	背景色
	 backgroundDimming	叠加在背景图上的颜色, 在解码有难度的时有一定帮助
	 logoSrc	嵌入至二维码中心的 LOGO 地址
	 logoScale	用于计算 LOGO 大小的值, 过大将导致解码失败, LOGO 尺寸计算公式 logoScale*(size-2*margin), 默认 0.2
	 logoMargin	LOGO 标识周围的空白边框, 默认为0
	 logoBackgroundColor	Logo 背景色,需要设置 logo margin
	 logoCornerRadius	LOGO 标识及其边框的圆角半径, 默认为0
	 whiteMargin	若设为 true, 背景图外将绘制白色边框
	 dotScale	数据区域点缩小比例,默认为0.35
	 autoColor	若为 true, 图像将被二值化处理, 未指定阈值则使用默认值
	 binarizeThreshold	(0 < threshold < 255) 二值化处理的阈值
	 callback	生成的二维码 Data URI 可以在回调中取得,第一个参数为二维码 data URL, 第二个参数为 props 传过来的 qid(因为二维码生成是异步的,所以加个 id 用于排序)
	 bindElement	指定是否需要自动将生成的二维码绑定到HTML上, 默认是TRUE
	 -->

4.2.注册对应组件并调用接口使用for循环进行二维码下载,由于谷歌浏览器下载文件限制每次只能下载10个文件,所以使用setTimeout计时器延时下载

<script>
import vueQr from "vue-qr";
import { getQrCodeList } from "../request/api";
export default {
  components: {
    vueQr,
  },
  data() {
    return {
      qrCodeObj: {
        bizCode: "sjz_hth_20240501",
        // bizCode: "test_hte_0501",
        pageNum: 15,
        pageSize: 200,
      },
      qrcodeList: [],
    };
  },
  created() {
    this.getQrCodeList();
  },
  methods: {
    //获取二维码列表
    getQrCodeList() {
      getQrCodeList(this.qrCodeObj).then((res) => {
        this.qrcodeList = res.rows;
        this.$nextTick(() => {
          this.downloadBatch(0); // 从第一个文件开始下载
        });
      });
    },

    downloadBatch(startIndex) {
      const batchSize = 10; // 每批次下载的文件数量
      const endIndex = Math.min(startIndex + batchSize, this.qrcodeList.length);

      for (let i = startIndex; i < endIndex; i++) {
        // 检查引用是否存在
        if (this.$refs["qrCode" + this.qrcodeList[i].id]) {
          setTimeout(() => {
            this.download(this.qrcodeList[i].id);
          }, 2000); // 设置一个延迟时间
        }
      }

      // 如果还有文件需要下载,则延迟一段时间后继续下载
      if (endIndex < this.qrcodeList.length) {
        setTimeout(() => {
          this.downloadBatch(endIndex);
        }, 5000); // 设置一个延迟时间
      }
    },

    download(sourceName) {
      // 下载
      const iconUrl = this.$refs["qrCode" + sourceName][0].$el.src;
      const a = document.createElement("a"); // 自定义a标签
      a.download = sourceName;
      a.href = iconUrl;
      a.click(); // 直接触发点击事件下载文件
    },
  },
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python作业 切片逆转

题目&#xff1a; &#xff08;反转显示一个整数&#xff09;编写下面的函数&#xff0c;反向显示一个整数。 列如&#xff1a;reserse(3456)。编写一个测试程序&#xff0c;提示用户输入一个整数&#xff0c;然后显示它的反向数。 第一步定义一个函数&#xff1a; def rev…

Linux进程概念(六):进程控制

目录 进程创建 fork函数 进程终止 终止时干了什么 进程终止的三种情况 main函数的返回值 打印默认退出码 自定义退出码 总结 进程终止 exit函数 _exit函数 exit和_exit的区别 进程等待 什么是进程等待 为什么要有进程等待 wait函数 waitpid函数 阻塞等待与…

【前端开发基础知识快速入门】

前端开发基础知识&快速入门 一、VSCode 使用1.1 安装常用插件1.2 创建项目1.3 创建网页1.4 运行效果二、ES62.1 简介2.2 什么是 ECMAScript2.3 ES6 新特性2.3.1 let 声明变量2.3.2 const 声明常量(只读变量)2.3.3 解构表达式2.3.4 字符串扩展2.3.5 函数优化2.3.6 对象优化…

开发日志(20240422):一次以为是跨域但并不是跨域的问题排查记录

1. 日志 在前后端联调的时候&#xff0c;遇到了报错&#xff0c;如下图所示&#xff08;现在再看感觉非常简单了&#xff09;&#xff0c;发现前一个请求通过了&#xff0c;但是第二个请求报错&#xff0c;然后看到 strict-origin-when-cross-origin 条件反射的认为是跨域配置…

流量网关与服务网关的区别:(面试题,掌握)

流量网关&#xff1a;&#xff08;如Nignx&#xff0c;OpenResty&#xff0c;Kong&#xff09;是指提供全局性的、与后端业务应用无关的策略&#xff0c;例如 HTTPS证书认证、Web防火墙、全局流量监控&#xff0c;黑白名单等。 服务网关&#xff1a;&#xff08;如Spring Clou…

初步认识Java

Java之父 Java 语言源于 1991 年 4 月&#xff0c;Sun 公司 James Gosling博士 领导的绿色计划(Green Project) 开始启动&#xff0c;此计划最初的目标是开发一种能够在各种消费性电子产品(如机顶盒、冰箱、收音机等)上运行的程序架构。这个就是Java的前身&#xff1a; Oak (得…

【Node.js工程师养成计划】之打造自己的脚手架工具

一、创建全局的自定义命令 1、打开一个空文件夹&#xff0c;新建一个bin文件夹&#xff0c;在bin文件夹下新建cli.js文件&#xff0c;js文件可以命名为cli.js&#xff08;您随意&#xff09; 2、在cli.js文件中的开头&#xff08;&#xff01;&#xff01;&#xff09;写下面这…

系统服务(22年国赛)—— 磁盘管理(压缩去重)

前言&#xff1a;原文在我的博客网站中&#xff0c;持续更新数通、系统方面的知识&#xff0c;欢迎来访&#xff01; 系统服务&#xff08;22年国赛&#xff09;—— 磁盘管理(压缩&&去重)https://myweb.myskillstree.cn/90.html 目录 StorageSrv 安装并创建vdo 将…

MIT 6.172 笔记 现代硬件算法案例分析

本文是https://en.algorithmica.org/hpc/和MIT 6.172的课后题解析 课程地址&#xff1a; 文章目录 HW2 Profiling Serial Merge Sort测试DEBUG和非DEBUG区别测试inline和非inline区别Coarsening HW3 向量化为什么用负偏移量测量向量化跨步向量化 HW4 Reducer Hyperobjects比较o…

vue echarts 柱状图 堆叠柱状图

echarts堆叠柱状图&#xff08;效果图在文章末尾&#xff09; 1、默认只显示 月度的 数据&#xff0c;手动点击 legend 季度的 数据才会显示&#xff1b; 2、监听左侧菜单栏的宽度变化&#xff0c;图表宽度自适应展示 <template><div><div id"barChart&q…

【MySQL】A01、性能优化-参数监控分析

1、参数监控 1.1、MySQL command 查看 mysql>SHOW STATUS; &#xff08;服务器状态变量&#xff0c;运行服务器的统计和状态指标&#xff09; mysql> SHOW VARIABLES;&#xff08;服务器系统变量&#xff0c;实际上使用的变量的值&#xff09; mysql> SHOW STATUS …

VTK----VTK数据结构详解1(几何篇)

在讲VTK的数据结构之前&#xff0c;我们先了解可视化数据的两个特征&#xff1a;离散性、有规则或无规则。 离散性。当我们使用计算机去表示我们的数据时&#xff0c;一般都是基于有限数量的点做信息的采样&#xff08;或插值&#xff09;&#xff0c;因此可视化的数据是以一种…

C++笔试强训day8

目录 1.求最小公倍数 2.数组中的最⻓连续⼦序列 3.字母收集 1.求最小公倍数 链接 这就是一道普通的数学题。 最大公倍数 A * B / A 与 B之间的最大公约数。 最大公约数求法&#xff1a;辗转相除法(或者可以用<numeric>头文件中的gcd) #include <iostream> us…

Docker基础学习(5.Docker镜像命令)

⭐ 作者简介&#xff1a;码上言 ⭐ 代表教程&#xff1a;Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容&#xff1a;个人博客系统 ⭐我的文档网站&#xff1a;http://xyhwh-nav.cn/ ⭐微信公众号&#xff1a;码上言 文章目录 Docker run流程镜像是什么&a…

AIGC - SD(中英文本生成图片) + PaddleHub/HuggingFace + stable-diffusion-webui

功能 stable-diffusion(文本生成图片)webui-win搭建&#xff08;开启api界面汉化&#xff09;PaddleHubHuggingFace: SD2&#xff0c;中文-alibaba/EasyNLP stable-diffusion-webui 下载与安装 环境相关下载 python&#xff08;文档推荐&#xff1a;Install Python 3.10.6 …

web-traffic-generator:一款功能强大的HTTP和HTTPs流量混淆工具

关于web-traffic-generator web-traffic-generator是一款功能强大的HTTP和HTTPs流量混淆工具&#xff0c;该工具基于纯Python开发&#xff0c;可以帮助广大研究人员在HTTP或HTTPs网络流量中提添加噪声&#xff0c;以此来实现流量混淆的目的。 本质上来说&#xff0c;web-traff…

北大发现了一种特殊类型的注意力头!

检索头的发现或许将有力地帮助大模型领域在提高长上下文推理能力、减少幻觉和压缩KV缓存方面的研究。 从 Claude100K 到 Gemini10M&#xff0c;我们正处于长上下文语言模型的时代。如何在长上下文中利用任何输入位置的信息&#xff1f;北大联合另外四所高校发现了一种特殊类型…

【Redis 开发】Redis持久化(RDB和AOF)

Redis持久化 RDBAOFRDB和AOF的区别 RDB RDB全称Redis DataBase Backup file &#xff08;Redis数据备份文件&#xff09;&#xff0c;也被称为Redis数据快照&#xff0c;简单来说就是把内存中的所有数据都记录到磁盘中&#xff0c;当Redis实例故障重启后&#xff0c;从磁盘读取…

【后端】Thymeleaf模板引擎学习笔记

文章目录 1. java体系模板引擎介绍2. 使用2.1 初步使用2.2. 引用静态资源模板2.3 引用静态资源模板(配置资源路径和后缀)2.4 整合springboot 视频地址 1. java体系模板引擎介绍 FreeMarkerThymeleafVelocity 2. 使用 2.1 初步使用 引入依赖 <dependency><groupId>…

Qt/C++ 波形绘制双缓冲下改善PaintEvent连续绘制卡顿问题(完整代码解析)

音频波形可视化&#xff1a;该控件用于将音频样本数据可视化为波形&#xff0c;常用于音频处理软件中以展示音频信号的时间域特性。 动态数据绘制&#xff1a;控件能够响应外部数据的变化并重新绘制波形&#xff0c;适用于实时或动态的音频数据流。 自定义绘制逻辑&#xff1…
最新文章