<template> <section class="wallet-verify"> <Header :title="title" :meaushow='meaushow'></Header> <div class="verify-content"> <ul class="form-wrap"> <li class="inp-wrap"> <label class="va-m">支付密码</label><br> <template v-if="showPassword"> <input type="password" placeholder="请输入支付密码" class="va-m inp" v-model="form.password"/> </template> <template v-else> <input type="text" placeholder="请输入支付密码" class="va-m inp" v-model="form.password"/> </template> <van-icon v-if="showPassword" name="closed-eye" class="va-m f-r" @click="changeShow"/> <van-icon v-else name="eye-o" class="va-m f-r" @click="changeShow"/> </li> <li class="inp-wrap" v-show="verifyShowImgCode"> <label class="va-m">图片验证码</label><br> <input type="text" placeholder="请输入验证码" v-model="form.imgCode" class="va-m inp"/> <img :src="imgCodeVal" alt="图片验证码" class="img-code va-m" @click="changeImgCode"/> </li> <li class="inp-wrap"> <label class="va-m">安全手机:{{walletInfoData.safe_mobile}}</label><br> <input type="text" placeholder="请输入验证码" v-model="form.verifyCode" class="va-m inp"/> <a v-if="yzmSend" href="javascript:;" class="send-yzm va-m" @click="getCode">{{countDownText}}</a> <a v-else href="javascript:;" class="sending-yzm va-m">再次发送({{countDown}}s)</a> </li> </ul> <p class="form-error" v-show="formError">{{formMsg}}</p> <a href="javascript:;" class="next" @click="next">下一步</a> </div> </section> </template> <script> import Vue from 'vue'; import {mapState} from 'vuex' import Header from '@/views/common/Header.vue'; import {Icon, Toast} from 'vant'; import {productionUrlPc} from '../../api/index'; Vue.use(Icon); export default { name: 'WalletVerify', data() { return { title: "验证身份", meaushow: true, showPassword: true, //是否显示密码 yzmSend: true, //验证码发送 countDown: 60, countDownText: '发送验证码', form: { verifyCode: '', imgCode: '', password: '', }, formError: false, formMsg: '', imgCodeVal: productionUrlPc + "public/verify", } }, computed: { ...mapState({ walletInfoData: state => state.wallet.walletInfoData, verifyShowImgCode: state => state.wallet.verifyShowImgCode, verifyCountDownFlag: state => state.wallet.verifyCountDownFlag, }) }, watch: { verifyCountDownFlag(value) { if (value) { this.yzmSend = false; this.timeNum(); } else { this.yzmSend = true; } } }, created() { this.$store.dispatch({ type: 'getWalletInfo' }) }, methods: { changeShow() { this.showPassword = !this.showPassword; }, timeNum() { var me = this; var clock = setInterval(doLoop, 1000); function doLoop() { me.countDown--; if (me.countDown <= 0) { clearInterval(clock); me.countDown = 60; me.countDownText = "再次发送"; me.yzmSend = true; } } }, //获取图片验证码 changeImgCode() { this.imgCodeVal = productionUrlPc + "public/verify?" + new Date().getTime() }, getCode() { //下一步 var password_reg = new RegExp(/^[a-zA-Z0-9]{6,20}$/); //^表示开始 $表示结束 8~20位字母和数字组合 if (!this.form.password) { Toast({ message: '亲,请输入支付密码', duration: 2000 }); return; } if (!password_reg.test(this.form.password)) { Toast({ message: '亲,密码由6~20位字母、数字组合', duration: 2000 }); return; } this.$store.dispatch({ //actions分发 type: 'sendSafesms', imgCode: this.form.imgCode }) }, next() { //下一步 var password_reg = new RegExp(/^[a-zA-Z0-9]{6,20}$/); //^表示开始 $表示结束 8~20位字母和数字组合 if (!this.form.password) { this.formError = true; this.formMsg = '亲,请输入支付密码'; return; } if (!password_reg.test(this.form.password)) { this.formError = true; this.formMsg = '亲,密码由6~20位字母、数字组合'; return; } if (!this.form.verifyCode) { this.formError = true; this.formMsg = '亲,请输入验证码'; return; } this.formError = false; this.$store.dispatch({ type: 'verifySafeMobile', verify_code: this.form.verifyCode, pay_password: this.form.password }) } }, components: { Header } } </script> <style scoped> @import "../../assets/css/wallet/wallet.css"; </style>