flying-monkey/pages/forget/forget.vue

223 lines
7.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<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('修改成功,请重新登录');
uni.clearStorageSync();
uni.reLaunch({url:'/pages/login/login'});
} 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>