vue2+qrcodejs2+clipboard——实现二维码展示+下载+复制到剪切板——基础积累

最近在写后台管理系统时,遇到一个需求就是要实现二维码的展示+下载+复制到剪切板。
效果图如下:
在这里插入图片描述

1.二维码展示+下载功能——qrcodejs2@0.0.2

我是安装的qrcodejs2@0.0.2,指定了具体的版本号,也可以安装默认的当前稳定版本,即npm安装时不指定版本号。

1.npm/yarn安装qrcodejs2

npm install qrcodejs2
or
yarn add qrcodejs2

2.引入qrcodejs2

由于我只是在单个页面上用到此功能,因此只需要当前页面局部引入,没有全局注册。

import QRCode from 'qrcodejs2';
2.1html代码
<template>
 <a-modal
    title="入职登记表"
    :visible="visible"
    :confirmLoading="confirmLoading"
    @ok="handleOk"
    @cancel="handleCancel"
    width="500px"
  >
    <a-spin :spinning="confirmLoading" tip="正在处理中请稍后">
	<div class="qrcode" ref="qrCodeUrl" id="qrcodeId"></div>
     <!-- 作为下载二维码使用 -->
     <a ref="locatorQRCodeDownloadLinkRef" style="display: none"></a>
     <div class="btnCls">
       <a-button type="primary" @click="handleDownloadLocatorQRCode"
         >下载二维码</a-button
       >
     </div>
     <div class="btnCls">
       <a-button
         id="copyBtn"
         type="primary"
         :data-clipboard-text="copyConfig"
         ghost
         @click="handleClipboard"
         >复制链接</a-button
       >
     </div>
    </a-spin>
  </a-modal>
</template>
2.2js代码
import Clipboard from 'clipboard';
import QRCode from 'qrcodejs2';
export default{
	data(){
		return{
			visible: false,
			copyConfig: '',
      		qrcode: null,
      		qrcodeImgUrl: '',
		}
	},
	methods:{
		//弹窗打开调用的接口
		showModal(){
			this.visible = true;
			this.$nextTick(()=>{
				//创建二维码
				this.creatQrCode();
			})
		},
		creatQrCode(){
			let str = window.location.hash;
      		let urlArr = str.split('/');
      		urlArr.splice(urlArr.length - 1, 1);
      		urlArr.push('RecommenH5');
      		let url = window.location.origin + '/' + urlArr.join('/');
      		this.copyConfig = url;
      		console.log(url);
      		document.getElementById('qrcodeId').innerHTML = ''; //在调用qrCode前使用js原生方法清空元素内容
      		this.qrcode = new QRCode(this.$refs.qrCodeUrl, {
        		text: url, // 需要转换为二维码的内容
        		width: 140,
        		height: 140,
        		colorDark: '#000000',
        		colorLight: '#ffffff',
        		correctLevel: QRCode.CorrectLevel.H,
      		});
      		let qrcodeCanvas = ((this.$refs.qrCodeUrl || {})?.getElementsByTagName?.(
        		'canvas') || [])?.[0];
      		this.qrcodeImgUrl = qrcodeCanvas?.toDataURL?.('image/png'); // 作为下载图片资源
		},
		//下载二维码功能
		handleDownloadLocatorQRCode() {
      		let downloadLink = this.$refs.locatorQRCodeDownloadLinkRef;
      		downloadLink.setAttribute('href', this.qrcodeImgUrl);
      		console.log('this.qrcodeImgUrl', this.qrcodeImgUrl);
      		downloadLink.setAttribute(
        		'download',
        		`二维码_${new Date().getTime()}.png`
      		);
      		downloadLink.click();
      		URL.revokeObjectURL(downloadLink.href);
    	},
	}
}

2.复制链接功能——clipboard@2.0.8

我是安装的clipboard@2.0.8,指定了具体的版本号,也可以安装默认的当前稳定版本,即npm安装时不指定版本号。

1.npm/yarn安装clipboard

npm install clipboard
or
yarn add clipboard

2.引入clipboard

由于我只是在单个页面上用到此功能,因此只需要当前页面局部引入,没有全局注册。

import Clipboard from 'clipboard';
2.1html代码

同上;
主要代码就是一个按钮:

<a-button
  id="copyBtn"
  type="primary"
  :data-clipboard-text="copyConfig"
  ghost
  @click="handleClipboard"
  >复制链接</a-button
>
2.2复制功能
handleClipboard() {
  let clipboard = new Clipboard('#copyBtn');
  clipboard.on('success', () => {
    this.$message.success(`复制成功`);
    clipboard.destroy();
  });
},

完成!!!多多积累,多多收获!

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

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

相关文章

门店数字化店务经营系统怎么做?门店数字化系统推荐

为什么你的门店无人问津&#xff0c;有的门店却天天都有到店客户&#xff1f;为什么你的门店要花费两三天才能统计好经营情况&#xff0c;有的门店却能够做到“数据实时可查”&#xff1f;经营管理和营销获客是每个门店发展的重中之重&#xff0c;今天也为大家分享一套完善的门…

西门子SCALANCE W744-1PRO 客户端配置

. 安装西门子无线搜索软件PST。 无线SCALANCE W788-1PRO参数设置。 打开PST软件&#xff1a;选择Settings->Network Adapter->2本地连接 输入该无线设置的IP地址&#xff0c;进入网络访问界面。输入密码&#xff1a;admin&#xff0c;点击Log on进入。 填写本无线的SSI…

kaggle推荐系统比赛top方案汇总【附baseline代码】

推荐系统可以很好地解决信息过载以及信息不足等问题&#xff0c;广泛应用与电商、金融、新闻咨询、社交、旅游等行业&#xff0c;其中最典型并具有良好的发展和应用前景的领域就是电子商务领域。 在学术界&#xff0c;推荐系统同样是热门的研究方向&#xff0c;在各大顶会中的…

中文医学知识语言模型:BenTsao

介绍 BenTsao&#xff1a;[原名&#xff1a;华驼(HuaTuo)]: 基于中文医学知识的大语言模型指令微调 本项目开源了经过中文医学指令精调/指令微调(Instruction-tuning) 的大语言模型集&#xff0c;包括LLaMA、Alpaca-Chinese、Bloom、活字模型等。 我们基于医学知识图谱以及医…

LeetCode——二叉树篇(八)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 236. 二叉树的最近公共祖先 235. 二叉搜索树的最近公共祖 迭代 递归 701. 二叉搜索树中的插入操作 450. 删除二叉搜索树中的节点 236. 二叉树的最近公共祖先 给定一个二…

【回味“经典”】DFS练习题解(工作分配问题,最大平台)

这篇文章是一年前写的 走进“深度搜索基础训练“&#xff0c;踏入c算法殿堂&#xff08;四&#xff09;和 走进“深度搜索基础训练“&#xff0c;踏入c算法殿堂&#xff08;二&#xff09;的重编版。 希望以此&#xff0c;唤起对那位故人的回忆。 【搜索与回溯算法】工作分配问…

python之Pandas

1.Pandas简介 Pandas 是 Python 语言的一个扩展程序库&#xff0c;用于数据分析。 Pandas 名字衍生自术语 “panel data”&#xff08;面板数据&#xff09;和 “Python data analysis”&#xff08;Python 数据分析&#xff09;。 Pandas 一个强大的分析结构化数据的工具集…

【数据结构OJ题】相交链表

原题链接&#xff1a;https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 看到这道题&#xff0c;很容易想到的方法就是暴力求解&#xff0c;就是将一个链表的每个结点的地址…

校园二手物品交易平台/二手交易系统/基于java的校园跳蚤市场系统

​ 摘 要 本文论述了校园二手物品交易平台的设计和实现&#xff0c;该网站从实际运用的角度出发&#xff0c;运用了计算机网站设计、数据库等相关知识&#xff0c;网络和Mysql数据库设计来实现的&#xff0c;网站主要包括用户注册、用户登录、浏览商品、搜索商品、查看商品并进…

【数据结构】顺序队列模拟实现

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

React+Typescript从请求数据到列表渲染

我们在项目src目录下创建一个目录 叫 pages 在里面创建一个组件叫 list.tsx 这里 我启动了自己的java项目 创建接口 你们就也需要弄几个自己的接口做测试 然后 list.tsx 编写代码如下 import * as React from "react";export default class hello extends React.C…

uniapp 回退到指定页面 保存页面状态

uniapp 历史页面回退到指定页面。 getCurrentPages() 内容如下 let delta getCurrentPages().reverse().findIndex(item > item.route "pages/popularScience/daodi") if(delta-1){uni.navigateTo({url: /pages/popularScience/daodi,success: res > {},fa…

Blazor前后端框架Known-V1.2.13

V1.2.13 Known是基于C#和Blazor开发的前后端分离快速开发框架&#xff0c;开箱即用&#xff0c;跨平台&#xff0c;一处代码&#xff0c;多处运行。 Gitee&#xff1a; https://gitee.com/known/KnownGithub&#xff1a;https://github.com/known/Known 概述 基于C#和Blazo…

element+vue 表格行拖拽功能

解决方案 使用 sortable.js 步骤一&#xff1a; 安装 npm install vuedraggable步骤二&#xff1a;引入 import Sortable from sortablejs;步骤三&#xff1a; el-table 添加row-key属性&#xff0c;外层包一层 sortableDiv <div class"sortableDiv"> 拖…

学习开发振弦采集模块的注意事项

学习开发振弦采集模块的注意事项 &#xff08;三河凡科科技/飞讯教学&#xff09;振弦采集模块是一种用来实时采集和处理振弦信号的电子设备&#xff0c;在工业、航空、医疗等领域都有广泛应用。学习开发振弦采集模块需要注意以下几点&#xff1a; 一、硬件选择 首先需要选择…

SpeedBI数据可视化工具:浏览器上做分析

SpeedBI数据分析云是一种在浏览器上进行数据可视化分析的工具&#xff0c;它能够将数据以可视化的形式呈现出来&#xff0c;并支持多种数据源和图表类型。 所有操作&#xff0c;均在浏览器上进行 在浏览器中打开SpeedBI数据分析云官网&#xff0c;点击【免费使用】进入&#…

【C++/C 实现球球大作战】

目录 1.引言2.游戏设计&#xff1a;概述游戏的玩法和操作方式。3.游戏实现&#xff08;1&#xff09;函数 GameInit() 初始化游戏的函数。&#xff08;2&#xff09;函数 GameDraw() 用于绘制游戏场景的函数。&#xff08;3&#xff09;函数 keyControl(int speed) 负责处理键盘…

安装搭建私有仓库Harbor

目录 一、安装docker编排工具docker compose 二、安装Harbor软件包 三、修改配置文件 四、运行安装脚本 五、安装后验证 六、使用Harbor 一、安装docker编排工具docker compose 在github上选择自己想要的版本下载 https://github.com/docker/compose/releases 下载好…

Apache和Nginx各有什么优缺点,应该如何选择?

Apache和Nginx各有什么优缺点&#xff0c;应该如何选择&#xff1f; Apache和Nginx都有各自的优点和缺点&#xff0c;选择应该根据您的具体需求而定。Nginx的优点包括&#xff1a;轻量级&#xff0c;与同等web服务相比&#xff0c;Nginx占用更少的内存和资源&#xff1b;抗并发…

评测凯迪仕K70「千里眼」智能锁:不忘安全初心,便捷体验更上一层

能打败凯迪仕的&#xff0c;只有它自己。这是我们在体验过凯迪仕最新旗舰产品K70「千里眼」智能锁之后的感受。作为凯迪仕2023年最新旗舰机型&#xff0c;K70「千里眼」智能锁在配置上可以说是「机皇」般的存在。3K超高清智能锁猫眼、车规级24GHz雷达、大小双屏设计、三方可视对…