import { defineComponent } from 'vue'; import { Col, Popup, Row, Image as VanImage, Loading, Field, showToast } from 'vant'; import styles from './index.module.less'; import request from '@/helpers/request'; import { state } from '@/state'; export default defineComponent({ name: 'imgCode', props: { value: Boolean, phone: [String, Number], onClose: { type: Function, default: () => ({}) }, onSendCode: { type: Function, default: () => ({}) } }, data() { const origin = window.location.origin; return { showStatus: false, identifyingCode: origin + state.platformApi + '/code/getLoginImage?phone=' + this.phone, code: null }; }, mounted() { this.showStatus = this.value; }, watch: { value(val: any) { this.showStatus = val; }, code(val: any) { if (val.length >= 4) { this.checkVerifyLoginImage(); } } }, methods: { async updateIdentifyingCode() { // 刷新token const origin = window.location.origin; this.identifyingCode = `${origin}${ state.platformApi }/code/getLoginImage?phone=${this.phone}&token=${Math.random()}`; }, async checkVerifyLoginImage() { try { if ((this as any).code.length < 4) { return; } await request.post(`${state.platformApi}/code/verifyLoginImage`, { requestType: 'form', data: { phone: this.phone, code: this.code } }); await request.post(`${state.platformApi}/code/sendSms`, { requestType: 'form', data: { mobile: this.phone, type: 'LOGIN' } }); showToast('验证码已发送'); this.onClose(); this.onSendCode(); } catch { this.updateIdentifyingCode(); } } }, render() { return ( { this.onClose(); }} closeable closeIcon="close">

输入图形验证码

this.updateIdentifyingCode()} v-slot={{ loading: () => }} /> this.updateIdentifyingCode()}> 看不清?换一换
); } });