|
@@ -0,0 +1,94 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <el-dialog
|
|
|
+ title='群组二维码'
|
|
|
+ :visible.sync='dialogVisible'
|
|
|
+ width='60%'>
|
|
|
+ <div class='paycode'>
|
|
|
+ <!-- 放置二维码的容器,需要给一个ref -->
|
|
|
+ <div class='qrcode' ref='qrCodeUrl' id='qrcode'></div>
|
|
|
+ </div>
|
|
|
+ <div class='button-class'>
|
|
|
+ <!-- <el-button @click='productCode(groupData.id)'>生成二维码</el-button> -->
|
|
|
+ <el-button @click='downloadAppCodeImg'>点击下载二维码</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import QRCode from 'qrcodejs2';
|
|
|
+
|
|
|
+export default {
|
|
|
+ watch: {
|
|
|
+ dialogVisible: (newValue, oldValue) => {
|
|
|
+ if (!newValue) {
|
|
|
+ //不晓得vue啷个清空标签内容,用原生js来清空
|
|
|
+ document.getElementById('qrcode').innerHTML = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ name: 'groupQRCode',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dialogVisible: false,
|
|
|
+ groupData: {}
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ show(data) {
|
|
|
+ this.groupData = data;
|
|
|
+ this.dialogVisible = true;
|
|
|
+ //等vue实例挂载完成再生成二维码,不然会报错
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.productCode(this.groupData.id);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 生成二维码
|
|
|
+ productCode(data) {
|
|
|
+ let qrcode = new QRCode(this.$refs.qrCodeUrl, {
|
|
|
+ // 这里选择器也可以直接写 'qrcode' 用的是id选择器 指示不需要带 # 而已
|
|
|
+ text: data, // 生成二维码的 内容
|
|
|
+ width: 300, // 宽 单位 px
|
|
|
+ height: 300 // 高 单位 px
|
|
|
+ // render: 'canvas' // 设置渲染方式(有两种方式 table和canvas,默认是canvas)
|
|
|
+ // background: '#f0f'
|
|
|
+ // foreground: '#ff0'
|
|
|
+ //correctLevel: QRCode.CorrectLevel.H // 二维码容错 级别
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 下载二维码
|
|
|
+ downloadAppCodeImg(name) {
|
|
|
+ let canvasData = document
|
|
|
+ .getElementById('qrcode')
|
|
|
+ .getElementsByTagName('img'); //生成二维码之后其实是个img 所以获取完id之后还要获取到这个img 才能下载成功
|
|
|
+ let a = document.createElement('a');
|
|
|
+ console.log('xiazai', canvasData);
|
|
|
+ a.href = canvasData[0].src;
|
|
|
+ a.download = this.groupData.name + '.png';
|
|
|
+ a.click();
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+.el-button {
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+
|
|
|
+.paycode {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+
|
|
|
+.button-class {
|
|
|
+ display: flex;
|
|
|
+ justify-content: right;
|
|
|
+}
|
|
|
+
|
|
|
+</style>
|