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.
157 lines
4.4 KiB
157 lines
4.4 KiB
<template>
|
|
<div class="edit-google">
|
|
<!-- 绑定 -->
|
|
<div>
|
|
<div class="form-group" v-if="!detail.google_token">
|
|
<label>{{$t('setting.scanQrCode')}}</label>
|
|
<div class="d-flex">
|
|
<vue-qr
|
|
v-if="googleToken.qrcode_url"
|
|
class="mr-2"
|
|
:text="googleToken.qrcode_url"
|
|
:margin="0"
|
|
:size="100"
|
|
></vue-qr>
|
|
<div class="tip fn-12">
|
|
<div>{{$t('setting.howToOpen',{name:'Google'})}}?</div>
|
|
<a href="#" class>{{$t('setting.read')}}。</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" v-if="!detail.google_token">
|
|
<label>Google {{$t('setting.verKey')}}</label>
|
|
<div class="input-group mb-3">
|
|
<input type="text" :value="googleToken.secret" disabled class="form-control" placeholder />
|
|
<div class="input-group-append">
|
|
<button class="btn btn-outline-primary" type="button" @click="copy(googleToken.secret)">
|
|
<i class="el-icon-document-copy"></i>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" v-if="detail.phone_status==1">
|
|
<label>{{$t('setting.smsVer')}}</label>
|
|
<div class="input-group mb-3">
|
|
<input
|
|
type="number"
|
|
v-model="form.sms_code"
|
|
required
|
|
class="form-control"
|
|
:placeholder="$t('setting.enterCode')"
|
|
/>
|
|
<div class="input-group-append">
|
|
<get-code class="btn btn-outline-primary" :data="{type:1}" :type="1" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group" v-if="detail.email_status==1">
|
|
<label>{{$t('setting.emailVer')}}</label>
|
|
<div class="input-group mb-3">
|
|
<input
|
|
type="number"
|
|
v-model="form.email_code"
|
|
required
|
|
class="form-control"
|
|
:placeholder="$t('setting.enterEmailVer')"
|
|
/>
|
|
<div class="input-group-append">
|
|
<get-code class="btn btn-outline-primary" :data="{type:2}" :type="1" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label>Google {{$t('setting.ver')}}</label>
|
|
<div class="input-group mb-3">
|
|
<input
|
|
type="number"
|
|
v-model="form.google_code"
|
|
class="form-control"
|
|
required
|
|
:placeholder="$t('setting.enterNameCode',{name:'Google'})"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="text-center">
|
|
<button type="button" class="btn w-25 btn-secondary" @click="$emit('close')">{{$t('common.cancelBtn')}}</button>
|
|
<button type="button" class="btn w-25 btn-primary" v-if="!detail.google_token" @click="bindGoogleToken">{{$t('setting.bind')}}</button>
|
|
<button type="button" class="btn w-25 btn-primary" v-else @click="unBindGoogle">{{$t('setting.unbind')}}</button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import vueQr from "vue-qr";
|
|
import Setting from "@/api/setting";
|
|
export default {
|
|
components: {
|
|
vueQr
|
|
},
|
|
props: ["detail"],
|
|
data() {
|
|
return {
|
|
googleToken: {},
|
|
form: {
|
|
google_token: "",
|
|
google_code: "",
|
|
sms_code: "",
|
|
email_code: ""
|
|
}
|
|
};
|
|
},
|
|
watch: {
|
|
["detail.google_token"]() {
|
|
this.getToken();
|
|
}
|
|
},
|
|
methods: {
|
|
getToken() {
|
|
Setting.getGoogleToken()
|
|
.then(res => {
|
|
this.googleToken = res;
|
|
})
|
|
.catch(err => {});
|
|
},
|
|
// 绑定谷歌验证码
|
|
bindGoogleToken() {
|
|
let data = this.form;
|
|
data.google_token = this.googleToken.secret;
|
|
if (utils.validate(".edit-google")) {
|
|
Setting.bindGoogleToken(data)
|
|
.then(res => {
|
|
this.$emit("close");
|
|
this.$emit("change");
|
|
this.$message.success(this.$t('setting.bindSuccess'));
|
|
})
|
|
.catch(err => {});
|
|
}
|
|
},
|
|
// 解绑谷歌验证
|
|
unBindGoogle() {
|
|
let data = this.form;
|
|
if (utils.validate(".edit-google")) {
|
|
Setting.unbindGoogleToken(data)
|
|
.then(res => {
|
|
this.$emit("close");
|
|
this.$emit("change");
|
|
this.$message.success(this.$t('setting.unbindSuccess'));
|
|
})
|
|
.catch(err => {});
|
|
}
|
|
},
|
|
copy(txt) {
|
|
utils.copy(txt);
|
|
// copy(txt)
|
|
}
|
|
},
|
|
created() {
|
|
if (!this.detail.google_token) {
|
|
this.getToken();
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style>
|
|
</style>
|