参考:juejin.cn/post/717360…
<template>
<div class="code">
<div class="title">请扫描二维码</div>
<div class="warp">
<div class="item-pic" id="qrCode"></div>
</div>
</div>
</template>
<script>
import QRCode from "qrcodejs2";
export default {
name: "HomeView",
data() {
return {
isShow: false
}
},
mounted() {
this.isShow = this.getCode('code') ? true : false;
console.log('code=>', this.getCode('code'), 'this.isShow=>', this.isShow);
if (this.isShow) {
this.getPersonQRCode('https://www.baidu.com/')
}
},
methods: {
getCode(name) {
const param = window.location.href.split('?')[1] ? window.location.href.split('?')[1].split('#')[0] : ""
if (param) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')
var r = param.match(reg)
if (r !== null) {
return unescape(r[2])
}
}
return null
},
getPersonQRCode(data) {
let qrcode
qrcode = new QRCode(document.getElementById('qrCode'), {
width: 120,
height: 120,
})
qrcode.makeCode(data)
let img = document.getElementById('qrCode').getElementsByTagName('img')[0]
let canvas = document.getElementById('qrCode').getElementsByTagName('canvas')[0]
if (canvas) {
img.src = canvas.toDataURL('image/png')
img.style.display = 'block'
canvas.style.display = 'none'
}
}
},
};
</script>
<style lang="less" scoped>
.code {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
flex-direction: column;
.title {
height: 30px;
margin: 20px 0;
}
}
</style>