You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
jwl-applet/src/components/yan-qr/yan-qr.vue

115 lines
2.2 KiB

<template>
<view>
<canvas :canvas-id="canvasId" v-show="qrShow" :style="qrShowStyle" />
</view>
</template>
<script>
import uQRCode from './qrcode.js'
export default {
props: {
canvasId: {
type: String,
default: 'qrcode' //canvas-id
},
text: {
type: String,
default: 'hello' //二维码内容
},
size: {
type: Number,
default: 150 //二维码大小
},
margin: {
type: Number,
default: 0 //二维码边距
},
level: {
type: String,
default: 'L' //二维码质量L/M/Q/H
},
bColor: {
type: String,
default: '#ffffff' //二维码背景颜色
},
fColor: {
type: String,
default: '#000000' //二维码颜色
},
fileType: {
type: String,
default: 'png' //二维码图片类型
}
},
data() {
return {
qrShow: false,
qrShowStyle: {
"width": "150px",
"height": "150px",
}
}
},
watch: {
text(newVal, oldVal) {
this.onQrFun()
}
},
mounted() {
this.onQrFun()
},
methods: {
onQrFun() {
this.qrShow = this.text != ''
if(this.qrShow){
this.qrShowStyle.width = this.size+"px"
this.qrShowStyle.height = this.size+"px"
let level;
switch (this.level) {
case "M":
case "m":
level = uQRCode.errorCorrectLevel.M
break;
case "Q":
case "q":
level = uQRCode.errorCorrectLevel.Q
break;
case "H":
case "h":
level = uQRCode.errorCorrectLevel.H
break;
default:
level = uQRCode.errorCorrectLevel.L
break;
}
uQRCode.make({
canvasId: this.canvasId,
componentInstance: this,
text: this.text,
size: this.size,
margin: this.margin,
backgroundColor: this.bColor,
foregroundColor: this.fColor,
fileType: this.fileType,
errorCorrectLevel: level,
success: res => {}
})
setTimeout(() => {
uni.canvasToTempFilePath({
canvasId: this.canvasId,
success: (res) => {
// 在H5平台下,tempFilePath 为 base64
this.$emit("update:filePath", res.tempFilePath);
}
}, this);
}, 600)
}
}
}
}
</script>
<style>
</style>