112 lines
2.7 KiB
Vue
112 lines
2.7 KiB
Vue
<template>
|
|
<view class="wrap" style="padding-top:50rpx;">
|
|
<view class="reg-text">验证手机号</view>
|
|
<view class="remind-text">请输入发送至<em>{{phoneNo}}</em>的6位验证码,有效期10分钟。如未收到,请重新获取验证码</view>
|
|
<u-message-input mode="box" @finish="finish" :maxlength="6" :breathe="true"></u-message-input>
|
|
<view class="remind-text">
|
|
<view v-if="!codeDisabled">{{loadTime}}秒后可重新获取验证码<br> </view>
|
|
<!-- <view class="button" :disabled="getCodeDisabled" @click="getCode()"><text>重新获取验证码</text></view> -->
|
|
<u-verification-code :keep-running="true" :seconds="seconds" @end="end" @start="start" ref="uCode"
|
|
@change="codeChange" :startText="startText" :changeText="changeText" :endText="endText">
|
|
</u-verification-code>
|
|
<u-button v-if="codeDisabled" class="button" @tap="getCode">{{tips}}</u-button>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
phoneNo: '',
|
|
verificationCode:'',
|
|
tips: '',
|
|
seconds: 60,
|
|
refCode: null,
|
|
startText: '重新获取验证码',
|
|
changeText: 'X秒重新获取',
|
|
endText: '重新获取验证码',
|
|
loadTime:60,
|
|
codeDisabled:false,
|
|
timer:''
|
|
};
|
|
},
|
|
onLoad(option) {
|
|
this.phoneNo = option.phoneNo
|
|
},
|
|
created() {
|
|
this.timer = setInterval(this.getTime, 1000)
|
|
},
|
|
watch:{
|
|
},
|
|
methods: {
|
|
getTime () {
|
|
this.loadTime--
|
|
if (this.loadTime === 0) {
|
|
clearInterval(this.timer)
|
|
this.codeDisabled = true
|
|
}
|
|
},
|
|
codeChange(text) {
|
|
this.tips = text;
|
|
},
|
|
getCode() {
|
|
if (this.$refs.uCode.canGetCode) {
|
|
uni.hideLoading();
|
|
// 这里此提示会被this.start()方法中的提示覆盖
|
|
this.$u.toast('验证码已发送');
|
|
// 通知验证码组件内部开始倒计时
|
|
this.$refs.uCode.start();
|
|
this.$u.api.sendCode({
|
|
phoneNo: this.phoneNo,
|
|
validCodeType:'1'
|
|
})
|
|
.then(res => {
|
|
if (res.code == '200') {
|
|
|
|
} else {
|
|
this.$refs.uCode.reset();
|
|
this.$u.toast(res.msg);
|
|
}
|
|
});
|
|
|
|
} else {
|
|
this.$u.toast('请稍后重新获取');
|
|
}
|
|
},
|
|
finish(e){
|
|
this.$u.api.registerUser({
|
|
phoneNo: this.phoneNo,
|
|
validCode: e
|
|
})
|
|
.then(res => {
|
|
if(res.msg){
|
|
this.$u.toast(res.msg);
|
|
}
|
|
if (res.code == '200') {
|
|
setTimeout(() => {
|
|
uni.reLaunch({
|
|
url: '/pages/sys/home/index'
|
|
});
|
|
}, 500);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
<style lang="scss">
|
|
@import 'index.scss';
|
|
|
|
.remind-text {
|
|
padding: 30rpx 70rpx;
|
|
color: #666666;
|
|
|
|
em {
|
|
font-weight: bold;
|
|
color: #242424;
|
|
font-style: normal;
|
|
margin: 0 5px;
|
|
}
|
|
}
|
|
</style>
|