vue二维码生成、打印及识别

article/2025/8/26 6:59:30

生成二维码

  1. 引入QRCode模块

npm install --save qrcode
import QRCode from 'qrcode';
  1. 页面代码

批量创建二维码及打印,所以加了个v-for

 <div id="printDiv"/**后面打印用到的区域id*/ :disabled="hussar_20Disabled" ref="hussar_20Ref" v-show="!hussar_20Hidden"class="hussar_20 jxd_ins_elContainer lay-container default"><div v-for="(item,index) in hussar_22Data.split(',')" style="float: left;height: 240px"><div><canvas :ref="'canvas'+index" class="canvas" ></canvas></div>//生成二维码的组件位置<div style="width: 100%;height: 85px; text-align: center"><span style="width:140px;display: inline-block;word-break: break-all;white-space: normal;">{{hussar_21Data.split(',')[index]}}</span></div></div>

点击生成二维码按钮执行

 hussar_17Click() {const self = this;var dataList = self.hussar_22Data.split(",")setTimeout(()=>{for (var i = 0; i < dataList.length; i++) {let canvas = this.$refs[`canvas${i}`][0]//获取页面循环动态生成的二维码组件QRCode.toCanvas(canvas,dataList[i],//生成二维码的数据{width: 170, height: 170, margin: 1.5},//margin调整二维码的白边大小function (error) {if (error) {console.log(error);}});}},100)},

生成效果:

识别二维码

  1. 引入QrcodeStream

npm install --save  vue-qrcode-reader
import { QrcodeStream } from 'vue-qrcode-reader';
  1. 页面代码

这是二维码扫描区域,v-if="qrcodeshow"可以用来控制摄像头的开关(最开始没加导致摄像头一直处于被占用状态)

 <van-popup v-if="qrcodeshow" v-model="hussar_5Show" :position="hussar_5Position" closeable ref="hussar_5Ref" class="hussar_5 jxd_ins_ionPopup jxd-popup-mobile default"><qrcode-streamv-show="qrcode":camera="camera":torch="torchActive"@decode="onDecode"//识别成功后的回调@init="onInit"//初始化验证摄像头配置(不知道有没有用,反正写上没啥问题)><div><div class="qr-scanner"><div class="box"><div class="line"></div><div class="angle"></div></div><div class="txt1"><div class="myQrcode">将二维码/条码放入框内,即自动扫描</div></div></div></div></qrcode-stream></van-popup>
      onDecode(result) {console.log(result)//result就是识别后的内容self.qrcodeshow=false//识别成功后设为false关闭摄像头        },async onInit(promise) {const { capabilities } = await promise;const TORCH_IS_SUPPORTED = !!capabilities.torch;try {await promise;} catch (error) {if (error.name === 'NotAllowedError') {this.error = 'ERROR: 您需要授予相机访问权限';} else if (error.name === 'NotFoundError') {this.error = 'ERROR: 这个设备上没有摄像头';} else if (error.name === 'NotSupportedError') {this.error = 'ERROR: 所需的安全上下文(HTTPS、本地主机)';} else if (error.name === 'NotReadableError') {this.error = 'ERROR: 相机被占用';} else if (error.name === 'OverconstrainedError') {this.error = 'ERROR: 安装摄像头不合适';} else if (error.name === 'StreamApiNotSupportedError') {this.error = 'ERROR: 此浏览器不支持流API';}}},

样式信息:

.qr-scanner {background-image: linear-gradient(0deg,transparent 24%,rgba(229, 192, 149,0.1) 25%,rgba(229, 192, 149,0.1) 26%,transparent 27%,transparent 74%,rgba(229, 192, 149,0.1) 75%,rgba(229, 192, 149,0.1) 76%,transparent 77%,transparent),linear-gradient(90deg,transparent 24%,rgba(229, 192, 149,0.1) 25%,rgba(229, 192, 149,0.1) 26%,transparent 27%,transparent 74%,rgba(229, 192, 149,0.1) 75%,rgba(229, 192, 149,0.1) 76%,transparent 77%,transparent);background-size: 3rem 3rem;background-position: -1rem -1rem;width: 100%;/* height: 100%; */height: 400px;/* height: 288px; */position: relative;background-color: #1110;/* background-color: #111; */}/* .qrcode-stream-wrapper {display: flex;justify-content: center;align-items: center;margin-top: 82px;clear: both;} *//* .qrcode-stream-wrapper >>> .qrcode-stream-camera {width: 213px;height: 210px;clear: both;margin-top: 39px;} */.qr-scanner .box {width: 213px;height: 213px;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);overflow: hidden;border: 0.1rem solid rgba(229, 196, 118, 0.2);/* background: url('http://resource.beige.world/imgs/gongconghao.png') no-repeat center center; */}.qr-scanner .txt1 {width: 100%;height: 35px;line-height: 35px;font-size: 14px;text-align: center;/* color: #f9f9f9; */margin: 0 auto;position: absolute;top: 80%;left: 0;}.qr-scanner .myQrcode {text-align: center;color: rgba(229, 192, 149,0.99);}.qr-scanner .line {height: calc(100% - 2px);width: 100%;background: linear-gradient(180deg, rgba(229, 192, 149, 0) 43%, rgba(229, 192, 149) 211%);border-bottom: 2px solid rgba(63, 229, 221, 0.99);transform: translateY(-100%);animation: radar-beam 2s infinite alternate;animation-timing-function: cubic-bezier(0.53, 0, 0.43, 0.99);animation-delay: 1.4s;}.qr-scanner .box:after,.qr-scanner .box:before,.qr-scanner .angle:after,.qr-scanner .angle:before {content: '';display: block;position: absolute;width: 3vw;height: 3vw;border: 0.2rem solid transparent;}.qr-scanner .box:after,.qr-scanner .box:before {top: 0;border-top-color: rgba(229, 220, 159, 0.67);}.qr-scanner .angle:after,.qr-scanner .angle:before {bottom: 0;border-bottom-color: rgba(229, 220, 159, 0.67);}.qr-scanner .box:before,.qr-scanner .angle:before {left: 0;border-left-color:rgba(229, 220, 159, 0.67);}.qr-scanner .box:after,.qr-scanner .angle:after {right: 0;border-right-color: rgba(229, 220, 159, 0.67);}

Vue打印指定区域

js原生的windows.print()会将整个页面打印出来,所以使用vue-print-nb

  1. 安装并在main.js或index.js中注册

npm i vue-print-nb
import Print from 'vue-print-nb'
Vue.use(Print);
  1. 页面代码:

<el-button tabindex="" :disabled="hussar_19Disabled" v-print="printObj" ref="hussar_19Ref"v-show="!hussar_19Hidden" class="hussar_19 jxd_ins_elButton lay-btn button_additional default"><i class=""></i><span>打印</span>
</el-button>
  data() {return {printObj: {id: "printDiv", // 这里是要打印元素的IDpopTitle: "", // 打印的标题},}

  1. 效果图:


http://chatgpt.dhexx.cn/article/QDlklyU4.shtml

相关文章

如何将内网ip映射到外网

这个百度经验上就有&#xff0c;不过对于着急使用的我来说&#xff0c;差了最后一步。所以还是一起记上吧。 第一步 首先登陆你的路由器&#xff0c;就改密码那个。一般就用浏览器直接打开192.168.1.1就可以&#xff0c;账号密码有可能是 admin admin吧&#xff0c;默认可能是…

VMWare虚拟机局域网网络配置,主机访问虚拟机上的网站(端口映射)

文章目录 1 problem2 背景知识3 配置主机网络4 配置虚拟机网络 1 problem 如题&#xff0c;现在虚拟机的80端口和8080端口都有一个网站&#xff0c;我们想要在主机访问它。 2 背景知识 VmWare支持3种网络连接模式。 1、桥接模式&#xff1a; 所谓桥接就是把两个本来分开…

映射公网的几种方式

转载自&#xff1a;http://blog.csdn.net/sadshen/article/details/48240519 这篇文章花了好几天&#xff0c;系统地梳理出了映射公网的几种方式。虽然是针对微信开发的外网服务器来寻找解决方案&#xff0c;但这个知识梳理可能会在其他地方也受益。平常我也有用TeamViewer&…

VMware NAT端口映射 外网可以访问内网虚拟机

我想尝试的是利用本机的ipport来访问虚拟机上的web服务器&#xff0c;因为这样的话&#xff0c;我就能够将我的web服务器部署成为一个能让外网访问的服务器了&#xff0c;首先说下我的环境&#xff1a; 主机&#xff1a;系统win7&#xff0c;ip地址172.18.186.210 虚拟机版本是…

如何把内网IP映射到公网IP

鸽子出品 2017-12-05 22:28:22 我们讲了如何搭建网站&#xff0c;可是有很多小伙伴私信跟我说怎么映射&#xff0c;今天我就教大家如何把内网地址映射到公网&#xff01; 我们所需要的工具有&#xff1a; 内网IP&#xff08;这个是品&#xff0c;也是必有的&#xff01;&…

简单内网映射到公网方法--免费

我是一名Android API Player&#xff0c;最近公司需要做微信公众号二次开发&#xff0c;我跟着学学&#xff0c;公司后台.net。 我mac安装windows之后用vs感觉太差了&#xff0c;可能是我的mac要淘汰了吧。 所以我决定用java后台来跟着做。 仔细一想我没有服务器啊。 再仔细…

本地主机搭建服务器后如何让外网访问?快解析内网端口映射

本地主机搭建应用、部署服务器后&#xff0c;在局域网内是可以直接通过计算机内网IP网络地址进行连接访问的&#xff0c;但在外网电脑和设备如何访问呢&#xff1f;由于内网环境下&#xff0c;无法提供公网IP使用&#xff0c;外网访问内网就需要一个内外网转换的介质。这里介绍…

内网和外网之间的通信(端口映射原理)

内网和外网之间的通信&#xff08;端口映射原理&#xff09; 首先解释一下“内网”与“外网”的概念&#xff1a; 内网&#xff1a;即所说的局域网&#xff0c;比如学校的局域网&#xff0c;局域网内每台计算机的IP地址在本局域网内具有互异性&#xff0c;是不可重复的。但两…

实现内网通过外网域名访问NAT映射的内网服务器

大家都知道在用Huawei的中低端路由器做NAT地址映射时只能支持 “外网访问” 不支持 “内网访问”。也就是说只支持NAT映射后外网IP通过外网域名&#xff08;外网IP&#xff09;访问NAT映射的服务器 &#xff0c;不支持NAT映射后内网IP通过外网域名&#xff08;外网IP&#xff0…

给内网映射增加安全防护

1.背景 内部网络资源的访问&#xff0c;通用的做法是部署企业VPN&#xff0c;通过VPN设备提供公网接入服务&#xff0c;客户端接入后&#xff0c;则可以像本地网络一样访问内网资源。但是部署VPN需要专业设备&#xff0c;且配置管理往往需要专业人员&#xff0c;对普通小…

公网映射思路

1、使用环境 目前政务微信的有两台内网环境71和14服务器&#xff0c;外网不能访问&#xff0c;只能内部访问&#xff0c;但是项目部署在14上面71的nginx转发到14服务器上面&#xff0c;但是现在14的项目需要网络支持&#xff0c;另外需要一台公网环境180服务器。 2、公网环境…

外网做ip映射访问内网链接

首先这个外网必须是独立ip 然后在路由器设置ip映射&#xff0c;注意防火墙放通该端口&#xff0c;可以telnet连一下试试有没通

几种内网映射到公网的方法

1、windows_386_ngork ngrok.exe用来将内网映射到外网上&#xff0c;即让外网能访问局域网内本地的应用&#xff0c;例如在外网访问你本地http://127.0.0.1指向的Web站点。下载windows_386_ngork软件&#xff0c;可以到官网下载&#xff0c;可以直接用我提供的下载地址&#x…

云服务器部署内网穿透映射本地服务

项目开发时需要和前端联调&#xff0c;考虑使用内网穿透避免每次上传服务部署的过程 下载frp &#xff08;开源内网穿透、反向代理工具&#xff09; https://github.com/fatedier/frp/releases/上传云服务器并解压&#xff08;使用xftp等工具上传&#xff09; tar -zxvf frp_0…

内网与外网及内网映射的概念

内网与外网及内网映射的概念 所谓内网&#xff0c;也就是局域网&#xff0c;一般是由几台电脑加上路由器和网线搭建起来&#xff0c;只能在局域网中通过路由器分配的IP地址来访问&#xff0c;且访问地址是动态的可变的。本机也算是一个相对独立的内网&#xff0c;本机的内网IP就…

内网如何映射到公网访问互联网

我们通常会根据本地应用场景来选择合适的中间件来搭建服务器。tomcat、 apache是比较常用的搭建服务器的中间件&#xff0c;它们之间还是有一些区别差异的。在内网本地部署搭建服务器后&#xff0c;还可以通过快解析端口映射方法&#xff0c;将内网应用地址发布到互联网&#x…

将内网映射到外网

如何把你的电脑映射到外网 前几天一个客户说需要把他的服务器映射到外网&#xff0c;然后别人可以通过远程连接来操作&#xff0c;远程安装使用软件&#xff0c;但不知道怎么做&#xff0c;在之前也是一头雾水的&#xff0c;不知所云&#xff0c;但经过某思虑片刻之后&#xff…

内网ip映射外网方法

内网ip映射外网方法 主要是使用花生壳app实现 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 内网ip映射外网方法一、下载软件二、使用步骤1.注册账号&#xff0c;添加映射 总结 一、下载软件 花生壳下载地址 …

如何实现内网映射到公网?

有些时候我们需要把自己的笔记本当做服务器连接到公网上&#xff0c;以便让自己的小项目能够被其他人访问或者看到。正常情况&#xff0c;我们台电脑上网都应该是配备了一个公网ip的。但是呢&#xff0c;不幸的是我们的电脑所分配到的ip都是内网ip&#xff0c;因此我们无法让外…

内网透传------局域网IP映射到公网

切记&#xff1a;重启&#xff01;&#xff01;&#xff01;&#xff01; 一下知识总的来说就是2点&#xff1a; 第一点&#xff1a;如何通过路由器公网IP映射的公网端口号---访问局域网服务器 第二点&#xff1a;如何通过花生壳的域名花生壳的端口号-----访问局域网服务器 …