import { defineComponent } from "vue"; import { Col, Popup, Row, Image as VanImage, Loading, Field, Toast } from "vant"; import styles from './index.module.less' import request from "@/helpers/request"; export default defineComponent({ name: "imgCode", props: { value: Boolean, phone: [String, Number], onClose: { type: Function, default: () => {}, }, onSendCode: { type: Function, default: () => {}, }, }, data() { let origin = window.location.origin return { showStatus: false, identifyingCode: origin + '/api-student/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 let origin = window.location.origin this.identifyingCode = `${origin}/api-student/code/getLoginImage?phone=${this.phone}&token=${Math.random()}` }, async checkVerifyLoginImage() { try { if((this as any).code.length < 4) { return } await request('/api-student/code/verifyLoginImage', { data: { phone: this.phone, code: this.code } }) await request('/api-student/code/sendSms', { data: { mobile: this.phone } }) Toast('验证码已发送') this.onClose(); this.onSendCode(); } catch { this.updateIdentifyingCode() } }, }, render() { return (

输入图形验证码

this.updateIdentifyingCode()} // @ts-ignore vSlots={{ loading: () => }} /> this.updateIdentifyingCode()}>看不清?换一换
) } })