You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
2.9 KiB
Vue

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<el-dialog title="公众号二维码" :visible.sync="dialogFormVisible" :close-on-click-modal="false" width="420px" @close="close" v-dialogDrag>
<div class="box" style="width: 400px; height: 400px; background-color: #FFF;">
<el-image style="width: 100%; height: 100%" :src="qrCode" fit="fill" v-if="codeNumber===1"></el-image>
<div class="img" v-if="codeNumber===2||codeNumber===3">
<img style="width:100px; height: 100px;" src="../../../../../image/check.png" fit="fill" v-if="codeNumber===2&&openid">
<img style="width:100px; height: 100px;" src="../../../../../image/close.png" fit="fill" v-if="codeNumber===3">
<div class="title">{{codeNumber===2?'扫码关注成功':'二维码失效'}}</div>
</div>
</div>
</el-dialog>
</template>
<script>
var getOpenid = null;
import {
getJavaQrCode,
getJavaOpenid,
doDeleteJavaOpenid,
} from "@/api/weixin/index.js";
export default {
name: "qrCode",
data() {
return {
qrCode: "",
openid: "",
dialogFormVisible: false,
codeNumber: 1, //1为刚打开弹窗2为扫码成功/关注成功3为超时
};
},
created() {
// this.fetchJavaQrCode()
},
methods: {
// ============================ 弹窗 ============================ //
show(row) {
let that = this;
this.codeNumber = 1;
this.openid = "";
this.dialogFormVisible = true;
this.handleDeleteJavaOpenid();
},
close() {
this.qrCode = "";
this.openid = "";
this.dialogFormVisible = false;
},
// ============================== 查询 ============================== //
// 通过后台获取公众号图片
fetchJavaQrCode() {
let that = this;
getJavaQrCode().then((res) => {
this.qrCode = window.URL.createObjectURL(res);
getOpenid = setInterval(() => {
that.fetchJavaOpenid();
}, 2000);
setTimeout(() => {
clearInterval(getOpenid);
that.codeNumber = 3;
}, 60000);
});
},
// 通过后台获取用户扫描的openid
fetchJavaOpenid() {
getJavaOpenid().then((res) => {
if (res.data[0]) {
this.codeNumber = 2;
this.openid = res.data[0];
this.$emit("call-back-qrCode", res.data[0]);
clearInterval(getOpenid);
}
});
},
// 清除后台获取的openid
handleDeleteJavaOpenid() {
doDeleteJavaOpenid().then((res) => {
if (res.code == "000000") {
this.fetchJavaQrCode();
}
});
},
},
};
</script>
<style >
</style>
<style scoped>
.box {
position: relative;
}
.img {
position: absolute;
top: 27px;
left: 27px;
width: 346px;
height: 346px;
background-color: #fff;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
.title {
font-size: 28px;
/* color: #fff; */
margin-top: 30px;
}
</style>