template-project/pages/forget/forget.vue

222 lines
7.4 KiB
Vue
Raw Normal View History

2022-03-28 10:40:02 +00:00
<template>
<view class="pad-zy30">
<status-nav navBarTitle="找回密码" returnColor="#c2c2c2"></status-nav>
<container-subgroup>
<view slot="content" style="margin: 0 -30rpx;">
<view class="fon52 bold mar-sx50">忘记密码 </view>
<view class="fon28">
<view class="forget-title mar-x10">手机号码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(0)" @focus="inputFocusEv(0)" @input="inputFocusEv(0)" class="fon24" type="number" maxlength="11" v-model="forget_phone" placeholder="请输入您的手机号码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifPhone" @tap="clearInput(0)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">手机验证码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(1)" @focus="inputFocusEv(1)" @input="inputFocusEv(1)" class="fon24" type="number" maxlength="6" v-model="forget_code" placeholder="请输入手机验证码" placeholder-style="color:#c8c8c8;" />
<view class="forget-obtain-code" @tap="getCode">{{codeText}}</view>
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifCode" @tap="clearInput(1)" style="right: 260rpx;"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">新密码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(2)" @focus="inputFocusEv(2)" @input="inputFocusEv(2)" class="fon24" type="text" password v-model="forget_password" placeholder="请输入新密码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifPassword" @tap="clearInput(2)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">确认密码</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(3)" @focus="inputFocusEv(3)" @input="inputFocusEv(3)" class="fon24" type="text" password v-model="forget_qpassword" placeholder="请再次确认密码" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifqpassword" @tap="clearInput(3)"><view class="clear-close"><span></span><span></span></view></view>
</view>
<view class="forget-title mar-x10">单位名称</view>
<view class="forget-input-box posir">
<input @blur="inputBlurEv(4)" @focus="inputFocusEv(4)" @input="inputFocusEv(4)" class="fon24" type="text" v-model="forget_unitname" placeholder="请输入单位名称" placeholder-style="color:#c8c8c8;" />
<!-- 清除按钮 -->
<view class="clear-box" v-show="ifUnitname" @tap="clearInput(4)"><view class="clear-close"><span></span><span></span></view></view>
</view>
</view>
<!-- 立即修改 -->
<view class="forget-btn" @tap="submitEv"></view>
</view>
</container-subgroup>
</view>
</template>
<script>
export default {
data() {
return {
ifPhone:false,
forget_phone:'',
ifCode:false,
forget_code:'',
ifPassword:false,
forget_password:'',
ifqpassword:false,
forget_qpassword:'',
ifUnitname:false,
forget_unitname:'',
codeText:'获取验证码' ,// 获取验证码按钮文字
flagCode:true ,// 允许点击获取验证码
countDown:null//验证码倒计时事件
}
},
methods: {
// 提交事件
submitEv(){
if(this.checkEmpty()){
let params = {
phone: this.forget_phone, // 手机号码
sms_code:this.forget_code, // 短信验证码
password: this.forget_password, // 密码
confirm_password: this.forget_qpassword, // 确认密码
affiliation: this.forget_unitname ,//单位名称
}
this.$requst.post('/universal/api.login/password_find',params).then(res=>{
if(res.code==1) {
this.$toolAll.tools.showToast('找回成功');
setTimeout(()=>{uni.navigateBack({delta:1})},1000)
} else {
this.$toolAll.tools.showToast(res.msg);
}
})
}
},
// 获取验证码
getCode(){
if(this.$toolAll.tools.isPhone(this.forget_phone)) {
this.$toolAll.tools.showToast('请输入正确的手机号');
} else {
if(this.flagCode) {
this.flagCode = false;
let count = 60;
this.codeText = `${count}S重新获取`
this.countDown = setInterval(()=>{
count--;
count < 10 ? this.codeText = `0${count}S重新获取` : this.codeText = `${count}S重新获取`;
if(count==0) {
this.codeText = `重新获取`;
clearInterval(this.countDown);
this.flagCode = true;
}
},1000)
// 调用获取短信事件
this.getMessage(this.forget_phone);
}
}
},
// 获取短信事件
getMessage(phone){
this.$requst.post('/universal/api.login/send_sms',{phone}).then(res=>{
this.$toolAll.tools.showToast(res.msg);
if(res.code==0) {
clearInterval(this.countDown);
this.codeText = `获取验证码`
}
})
},
// 检测是否某个输入框为空
checkEmpty(){
let ifEmpty = true;
if(this.$toolAll.tools.isPhone(this.forget_phone)) {
this.$toolAll.tools.showToast('手机号格式不正确');
ifEmpty = false;
return;
}
if(!this.forget_code) {
this.$toolAll.tools.showToast('请输入验证码');
ifEmpty = false;
return;
}
if(!this.forget_password) {
this.$toolAll.tools.showToast('密码不能为空');
ifEmpty = false;
return;
}
if(!this.forget_qpassword) {
this.$toolAll.tools.showToast('确认密码不能为空');
ifEmpty = false;
return;
}
if(this.forget_password != this.forget_qpassword) {
this.$toolAll.tools.showToast('两次输入的密码必须相同');
ifEmpty = false;
return;
}
if(!this.forget_unitname) {
this.$toolAll.tools.showToast('请输入单位名称');
ifEmpty = false;
return;
}
return ifEmpty;
},
// 输入框获取焦点
inputFocusEv(index){
switch (index){
case 0:
this.forget_phone ? this.ifPhone = true : this.ifPhone = false;
break;
case 1:
this.forget_code ? this.ifCode = true : this.ifCode = false;
break;
case 2:
this.forget_password ? this.ifPassword = true : this.ifPassword = false;
break;
case 3:
this.forget_qpassword ? this.ifqpassword = true : this.ifqpassword = false;
break;
case 4:
this.forget_unitname ? this.ifUnitname = true : this.ifUnitname = false;
break;
}
},
// 输入框失去焦点
inputBlurEv(index){
switch (index){
case 0:
setTimeout(()=>{this.ifPhone = false;},100)
break;
case 1:
setTimeout(()=>{this.ifCode = false;},100)
break;
case 2:
setTimeout(()=>{this.ifPassword = false;},100)
break;
case 3:
setTimeout(()=>{this.ifqpassword = false;},100)
break;
case 4:
setTimeout(()=>{this.ifUnitname = false;},100)
break;
}
},
// 清除手机号
clearInput(index){
switch (index){
case 0:
this.forget_phone = '';
break;
case 1:
this.forget_code = '';
break;
case 2:
this.forget_password = '';
break;
case 3:
this.forget_qpassword = '';
break;
case 4:
this.forget_unitname = '';
break;
}
},
}
}
</script>
<style>
page{background-color: #FFFFFF;}
</style>