Files
zhgh_hmc/src/main/resources/static/components/plugins/OpenQRCode.vue
T
2025-07-07 11:20:30 +08:00

75 lines
2.5 KiB
Vue

<template>
<div>
<el-dialog
:title="title"
:visible.sync="codeDialogVisible"
:close-on-click-modal="false"
width="40%">
<div style="width: 100%;">
<div id="qrcode" style="width: 70%;left: 0;right: 0;margin: auto"></div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="codeDialogVisible = false" type="primary"> </el-button>
<!-- <el-button type="primary" @click="dwn('活动二维码')"> </el-button>-->
</span>
</el-dialog>
</div>
</template>
<script>
module.exports = {
props: {},
data() {
return {
codeDialogVisible: false,
title: "活动二维码"
}
},
methods: {
saveFile(data, filename) {
var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
save_link.href = data
save_link.download = filename
var event = document.createEvent("MouseEvents")
event.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
save_link.dispatchEvent(event)
},
/*下载二维码*/
dwn(name) {
var type = "png"
var dataurl = $("canvas").get(0).toDataURL("image/png").replace("image/png", "image/octet-stream")
var filename = name + "_" + (new Date()).getTime() + "." + type
this.saveFile(dataurl, filename)
},
isHttpOrHttps(url) {
return /^(http:\/\/|https:\/\/)/i.test(url)
},
openCode(url, title) {
this.codeDialogVisible = true
this.$nextTick(() => {
$("#qrcode").html("")
$("#qrcode").qrcode({ //设置css
render: "canvas", //二维码的生成方式
width: $("#qrcode").width(), //生成二维码的宽度
height: $("#qrcode").width(), //生成二维码的高度
text: this.isHttpOrHttps(url) ? url : (APP_DOMAIN + url),
correctLevel: 3 //容错级别,默认为2,最高为3,为了让用户扫码最快,容错级别应当设为最低
})
})
this.title = title ? title : "活动二维码"
console.log(APP_DOMAIN + url)
}
}
}
</script>
<style scoped>
</style>