效果展示

完整代码
<template>
<div class="ypl-flex">
<div class="invitePosterPage flex">
<button @click="downLoad">下载二维码</button>
<img v-if="posterDataUrl" :src="posterDataUrl" class="poster-bg" alt="二维码"/>
<div v-else id="poster" class="flex-row" style="position: relative">
<canvas class="qr" id="qrCode-canvas"></canvas>
</div>
</div>
</div>
</template>
<script>
import QRCode from 'qrcode'
import html2canvas from 'html2canvas'
export default {
data () {
return {
posterDataUrl:'',
id:6,
name:'testQRCode'
}
},
async mounted () {
},
methods: {
createQRCode () {
let canvas = document.getElementById('qrCode-canvas')
QRCode.toCanvas(canvas, this.id.toString(), (error) => {
if (error) {
console.log(error)
} else {
canvas.style.width = '200px'
canvas.style.height = '200px'
let poster = document.getElementById('poster')
html2canvas(poster).then(canvas => {
this.posterDataUrl = canvas.toDataURL()
})
}
})
},
downLoad(){
this.createQRCode()
const canvas=document.getElementById('qrCode-canvas')
this.downLoadImage(canvas);
},
downLoadImage(canvas) {
var a = document.createElement("a")
a.href = canvas.toDataURL()
a.download = this.name
a.click();
}
}
}
</script>