vue使用qrcode生成二維碼的方法
一 安裝qrcode.js
npm install --save qrcode

二. 封裝生成二維碼的組件

index.vue
<template>
<div class="QRCode" :style="{'width':width, 'height':height}">
<canvas :id="canvasId" :style="{'width':width, 'height':height}"></canvas>
<!-- <div class="QQMode" v-if="load || view"><a-icon type="download" @click="loadCode" v-if="load" /></div> -->
</div>
</template>
<script>
import QRCode from "qrcode";
export default {
name: "QRCode",
props: {
content: {
type: String,
default: "測(cè)試二維碼"
},
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: {
init() {
let width = this.width,
height = this.height;
QRCode.toCanvas(
document.getElementById(this.canvasId),
this.content,
{ width, height, toSJISFunc: QRCode.toSJIS },
error => {}
);
},
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;
}
//下載二維碼
// loadCode() {
// let [F, S, a] = [
// navigator.userAgent.indexOf("Firefox") > -1,
// document.getElementById(this.canvasId).toDataURL("image/png"),
// document.createElement("a")
// ];
// // var dataurl = showel.toDataURL();
// var arr = S.split(","),
// mime = arr[0].match(/:(.*?);/)[1],
// bstr = atob(arr[1]),
// n = bstr.length,
// u8arr = new Uint8Array(n);
// while (n--) {
// u8arr[n] = bstr.charCodeAt(n);
// }
// var file = new File([u8arr], this.codeName + ".png", { type: mime });
// $A.FU(file, data => {
// // alert(1)
// // window.location.href = data;
// [a.href, a.download] = [data, this.codeName];
// // a.download = '二維碼';
// if (F) {
// let evt = document.createEvent("MouseEvents");
// evt.initEvent("click", true, true);
// a.dispatchEvent(evt);
// } else {
// a.click();
// }
// });
// },
// insertContentLoad(content, size) {
// const ele = document.createElement("canvas");
// ele.style.width = size.width || "100" + "px";
// ele.style.height = size.height || "100" + "px";
// QRCode.toCanvas(
// ele,
// content,
// {
// width: size.width || "100",
// height: size.height || "100",
// toSJISFunc: QRCode.toSJIS
// },
// error => {}
// );
// let [F, S, a] = [
// navigator.userAgent.indexOf("Firefox") > -1,
// ele.toDataURL("image/png"),
// document.createElement("a")
// ];
// [a.href, a.download] = [S, size.name];
// // a.download = '二維碼';
// if (F) {
// let evt = document.createEvent("MouseEvents");
// evt.initEvent("click", true, true);
// a.dispatchEvent(evt);
// } else {
// a.click();
// }
// }
},
watch: {
content(val) {
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>index.js
import index from './index.vue'
// This is the point
const QRcode = {
install: function(Vue){
Vue.component('QRcode',index);
}
}
// Export components
export default QRcode三. main.js引入
import QRcode from './components/QRcode' Vue.use(QRcode);
四. 使用
<QRcode width="100" height="100" :content="content" :load="false"></QRcode>
content為在二維碼中存儲(chǔ)的信息,如下
let params = {
userId: '123', //用戶(hù)id
userName: 'Bob', //用戶(hù)名
userNumber: 'sas123', //工號(hào)
};
this.content = JSON.stringify(params);以上就是vue使用qrcode生成二維碼的方法的詳細(xì)內(nèi)容,更多關(guān)于vue qrcode生成二維碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue2.0+koa2+mongodb實(shí)現(xiàn)注冊(cè)登錄
這篇文章主要介紹了vue2.0+koa2+mongodb實(shí)現(xiàn)注冊(cè)登錄功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04
vue3如何監(jiān)聽(tīng)頁(yè)面的滾動(dòng)
這篇文章主要給大家介紹了關(guān)于vue3如何監(jiān)聽(tīng)頁(yè)面的滾動(dòng)的相關(guān)資料,在vue中實(shí)現(xiàn)滾動(dòng)監(jiān)聽(tīng)和原生js無(wú)太大差異,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
vue3響應(yīng)式Proxy與Reflect的理解及基本使用實(shí)例詳解
這篇文章主要為大家介紹了vue3響應(yīng)式Proxy與Reflect的理解及基本使用實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
vue實(shí)現(xiàn)跳轉(zhuǎn)接口push 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)示例
今天小編就為大家分享一篇vue實(shí)現(xiàn)跳轉(zhuǎn)接口push 轉(zhuǎn)場(chǎng)動(dòng)畫(huà)示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
vue3+typescript實(shí)現(xiàn)圖片懶加載插件
這篇文章主要介紹了vue3+typescript實(shí)現(xiàn)圖片懶加載插件,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-10-10
vue項(xiàng)目依賴(lài)升級(jí)報(bào)錯(cuò)處理方式
這篇文章主要介紹了vue項(xiàng)目依賴(lài)升級(jí)報(bào)錯(cuò)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

