|
|
|
@ -2,39 +2,42 @@ |
|
|
|
<view class="container"> |
|
|
|
<!-- 页面头部 --> |
|
|
|
<view class="header"> |
|
|
|
<view class="title"> |
|
|
|
<text>找回密码</text> |
|
|
|
</view> |
|
|
|
<view class="title"> |
|
|
|
<text>找回密码</text> |
|
|
|
</view> |
|
|
|
</view> |
|
|
|
<!-- 表单 --> |
|
|
|
<view class="login-form"> |
|
|
|
<form> |
|
|
|
<!-- 手机号 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="number" v-model="mobile" maxlength="11" autocomplete="off" placeholder="输入手机号码" |
|
|
|
@input="onInputStepper($event, item)"/> |
|
|
|
</view> |
|
|
|
<!-- 验证码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="number" v-model="chkcode" maxlength="11" autocomplete="off" placeholder="输入6位验证码" /> |
|
|
|
<button class="abtn" href="" @click="getsmscode" ref="abtn">获取验证码 </button> |
|
|
|
</view> |
|
|
|
<!-- 密码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="password" v-model="vpass" autocomplete="off" placeholder="请输入密码" /> |
|
|
|
</view> |
|
|
|
<!-- 重复密码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="password" v-model="repass" autocomplete="off" placeholder="再次请输入密码" /> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 登录按钮 --> |
|
|
|
<view class="login-button" @click="handleLogin"> |
|
|
|
<text>确认修改</text> |
|
|
|
</view> |
|
|
|
</form> |
|
|
|
<!-- 手机号 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="number" v-model="mobile" maxlength="11" autocomplete="off" |
|
|
|
placeholder="输入手机号码" @input="onInputStepper($event, item)" /> |
|
|
|
</view> |
|
|
|
<!-- 验证码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="number" v-model="chkcode" maxlength="11" autocomplete="off" |
|
|
|
placeholder="输入6位验证码" /> |
|
|
|
<button class="abtn" href="" @click="getsmscode" ref="abtn">获取验证码 </button> |
|
|
|
</view> |
|
|
|
<!-- 密码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="password" v-model="vpass" autocomplete="off" |
|
|
|
placeholder="请输入密码" /> |
|
|
|
</view> |
|
|
|
<!-- 重复密码 --> |
|
|
|
<view class="form-item"> |
|
|
|
<input class="form-item--input" type="password" v-model="repass" autocomplete="off" |
|
|
|
placeholder="再次请输入密码" /> |
|
|
|
</view> |
|
|
|
|
|
|
|
<!-- 登录按钮 --> |
|
|
|
<view class="login-button" @click="handleRestpass"> |
|
|
|
<text>确认修改</text> |
|
|
|
</view> |
|
|
|
</form> |
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 找回密码 注册 --> |
|
|
|
<view class="regtips"> |
|
|
|
<view>已拥有账户?<a class="loginnow" @tap="gologin">登录</a></view> |
|
|
|
@ -43,118 +46,289 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import * as regApi from '@/api/reg/index' |
|
|
|
import * as Verify from '@/utils/verify' |
|
|
|
import * as userApi from '@/api/user' |
|
|
|
|
|
|
|
export default { |
|
|
|
data() { |
|
|
|
return { |
|
|
|
|
|
|
|
// 需要重置密码的手机号 |
|
|
|
mobile: '', |
|
|
|
// 手机验证码 |
|
|
|
chkcode: '', |
|
|
|
//密码 |
|
|
|
vpass: '', |
|
|
|
// 重复密码 |
|
|
|
repass: '', |
|
|
|
} |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
// 发送验证码 |
|
|
|
getsmscode() { |
|
|
|
// 检查手机号是否填写 |
|
|
|
let mb = this.mobile |
|
|
|
if (this.validteMobile(mb) && this.isCutdown != true) { |
|
|
|
// 校验用户是否已经注册 |
|
|
|
regApi.sendSms(mb).then(res => { |
|
|
|
if (res.resultCode == "00000000") { |
|
|
|
if (res.data != 1) { |
|
|
|
this.$toast("手机号没有被注册") |
|
|
|
this.st = 60 |
|
|
|
} else { // 手机号未被注册 |
|
|
|
//发送验证码? |
|
|
|
let pars = { |
|
|
|
username: mb, |
|
|
|
purpose: 2 |
|
|
|
} |
|
|
|
regApi.sendVerifyCode(pars).then(res => { |
|
|
|
// console.log("verify code",res) |
|
|
|
if (res.resultCode === "00000000") { |
|
|
|
// 倒计时 |
|
|
|
this.countDown() |
|
|
|
this.$toast("发送成功") |
|
|
|
} else { |
|
|
|
this.$error(res.resultMsg) |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
// |
|
|
|
} |
|
|
|
console.log(res) |
|
|
|
}); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
// 倒计时 |
|
|
|
countDown() { |
|
|
|
let app = this |
|
|
|
app.$refs.abtn.$el.innerText = app.st + "秒" |
|
|
|
let qq = app.st |
|
|
|
// console.log(qq) |
|
|
|
setTimeout(function() { |
|
|
|
if (app.st > 1) { |
|
|
|
app.st-- |
|
|
|
app.countDown(app.st) |
|
|
|
//倒计时ing |
|
|
|
app.isCutdown = true |
|
|
|
} else { |
|
|
|
app.st = 0 |
|
|
|
app.$refs.abtn.$el.innerText = "获取验证码" |
|
|
|
} |
|
|
|
}, 1000) |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 表单验证 |
|
|
|
formValidation() { |
|
|
|
const app = this |
|
|
|
// 验证提交登录 |
|
|
|
if (!app.validteMobile(app.mobile) || !app.validtePass(app.vpass) || !app.validteRepass(app.repass) |
|
|
|
|| !app.chkpass() || !app.validteVerify( |
|
|
|
app.chkcode)) { |
|
|
|
return false |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
|
|
|
|
// 验证密码 |
|
|
|
validtePass(str) { |
|
|
|
if (Verify.isEmpty(str)) { |
|
|
|
this.$toast('请先输入登录密码') |
|
|
|
return false |
|
|
|
} |
|
|
|
return true; |
|
|
|
}, |
|
|
|
// |
|
|
|
validteRepass(str){ |
|
|
|
if(Verify.isEmpty(str)){ |
|
|
|
this.$toast("请再次输入密码") |
|
|
|
return false |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
|
|
|
|
// 判读两次密码是否相同 |
|
|
|
chkpass() { |
|
|
|
let that = this |
|
|
|
if (that.vpass != that.repass) { |
|
|
|
this.$toast('两次输入的密码不一样') |
|
|
|
return false |
|
|
|
} |
|
|
|
return true; |
|
|
|
}, |
|
|
|
|
|
|
|
// 验证手机号 |
|
|
|
validteMobile(str) { |
|
|
|
// 防抖 |
|
|
|
if (Verify.isEmpty(str)) { |
|
|
|
this.$toast('请先输入手机号') |
|
|
|
return false |
|
|
|
} |
|
|
|
if (!Verify.isMobile(str)) { |
|
|
|
this.$toast("输入正确格式手机号码") |
|
|
|
return false |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
|
|
|
|
// 验证手机验证码 |
|
|
|
validteVerify(str) { |
|
|
|
if (Verify.isEmpty(str)) { |
|
|
|
this.$toast("请输入手机验证码") |
|
|
|
} |
|
|
|
if (str.length != 6) { |
|
|
|
this.$toast("请输入6位数的验证码") |
|
|
|
} |
|
|
|
return true |
|
|
|
}, |
|
|
|
// 重置密码 |
|
|
|
async handleRestpass() { |
|
|
|
const app = this |
|
|
|
if (!app.isLoading && app.formValidation()) { |
|
|
|
await app.submitReset() |
|
|
|
} |
|
|
|
}, |
|
|
|
// 重置密码 |
|
|
|
submitReset() { |
|
|
|
let app = this |
|
|
|
// doreset |
|
|
|
let data = { |
|
|
|
accountId: app.mobile, |
|
|
|
verifyCode: app.chkcode, |
|
|
|
password: $.md5(app.vpass).toUpperCase(), |
|
|
|
passMd5ed: true, |
|
|
|
st: "2", |
|
|
|
} |
|
|
|
userApi.resetpass(data).then(res=>{ |
|
|
|
if(res.resultCode === "00000000"){ |
|
|
|
app.$toast("重置成功") |
|
|
|
// 跳转回原页面 |
|
|
|
setTimeout(() => app.onNavigateBack(1), 2000) |
|
|
|
}else{ |
|
|
|
app.$toast(res.resultMsg) |
|
|
|
} |
|
|
|
}); |
|
|
|
}, |
|
|
|
/** |
|
|
|
* 跳转回原页面 |
|
|
|
*/ |
|
|
|
onNavigateBack(delta = 1) { |
|
|
|
const pages = getCurrentPages() |
|
|
|
if (pages.length > 1) { |
|
|
|
uni.navigateBack({ |
|
|
|
delta: Number(delta || 1) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
this.$navTo('pages/index/index') |
|
|
|
} |
|
|
|
}, |
|
|
|
// 调整到登录页面 |
|
|
|
gologin(){ |
|
|
|
this.$navTo("pages/login/index") |
|
|
|
gologin() { |
|
|
|
this.$navTo("pages/login/index") |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
|
|
|
|
<style lang="scss" scoped> |
|
|
|
.container { |
|
|
|
padding: 100rpx 60rpx; |
|
|
|
min-height: 100vh; |
|
|
|
background-color: #fff; |
|
|
|
} |
|
|
|
|
|
|
|
// 页面头部 |
|
|
|
.header { |
|
|
|
margin-bottom: 60rpx; |
|
|
|
|
|
|
|
.title { |
|
|
|
color: #191919; |
|
|
|
font-size: 54rpx; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
// 输入框元素 |
|
|
|
.form-item { |
|
|
|
display: flex; |
|
|
|
padding: 18rpx; |
|
|
|
border-bottom: 1rpx solid #f3f1f2; |
|
|
|
margin-bottom: 30rpx; |
|
|
|
height: 96rpx; |
|
|
|
|
|
|
|
&--input { |
|
|
|
font-size: 28rpx; |
|
|
|
letter-spacing: 1rpx; |
|
|
|
flex: 1; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
&--parts { |
|
|
|
min-width: 100rpx; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
&--radgrp{ |
|
|
|
display: flex; |
|
|
|
flex:1; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
.abtn{ |
|
|
|
font-size: 26rpx; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 短信验证码 |
|
|
|
.captcha-sms { |
|
|
|
font-size: 28rpx; |
|
|
|
line-height: 50rpx; |
|
|
|
padding-right: 20rpx; |
|
|
|
|
|
|
|
.activate { |
|
|
|
color: #cea26a; |
|
|
|
} |
|
|
|
|
|
|
|
.un-activate { |
|
|
|
color: #9e9e9e; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 登录按钮 |
|
|
|
.login-button { |
|
|
|
width: 100%; |
|
|
|
height: 86rpx; |
|
|
|
margin-top: 80rpx; |
|
|
|
background: linear-gradient(to right, #242e4b, #242e4b); |
|
|
|
color: #fff; |
|
|
|
// border-radius: 80rpx; |
|
|
|
box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.1); |
|
|
|
letter-spacing: 15rpx; |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
// 找回密码和 立即注册 |
|
|
|
.regtips{ |
|
|
|
display: flex; |
|
|
|
margin-top: 26rpx; |
|
|
|
line-height: 1.4; |
|
|
|
padding-right: 32rpx; |
|
|
|
|
|
|
|
.loginnow{ |
|
|
|
color: #5299dc; |
|
|
|
|
|
|
|
&:hover{ |
|
|
|
color: #a60000; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
</style> |
|
|
|
.container { |
|
|
|
padding: 100rpx 60rpx; |
|
|
|
min-height: 100vh; |
|
|
|
background-color: #fff; |
|
|
|
} |
|
|
|
|
|
|
|
// 页面头部 |
|
|
|
.header { |
|
|
|
margin-bottom: 60rpx; |
|
|
|
|
|
|
|
.title { |
|
|
|
color: #191919; |
|
|
|
font-size: 54rpx; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 输入框元素 |
|
|
|
.form-item { |
|
|
|
display: flex; |
|
|
|
padding: 18rpx; |
|
|
|
border-bottom: 1rpx solid #f3f1f2; |
|
|
|
margin-bottom: 30rpx; |
|
|
|
height: 96rpx; |
|
|
|
|
|
|
|
&--input { |
|
|
|
font-size: 28rpx; |
|
|
|
letter-spacing: 1rpx; |
|
|
|
flex: 1; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
&--parts { |
|
|
|
min-width: 100rpx; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
&--radgrp { |
|
|
|
display: flex; |
|
|
|
flex: 1; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
|
|
|
|
.abtn { |
|
|
|
font-size: 26rpx; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 短信验证码 |
|
|
|
.captcha-sms { |
|
|
|
font-size: 28rpx; |
|
|
|
line-height: 50rpx; |
|
|
|
padding-right: 20rpx; |
|
|
|
|
|
|
|
.activate { |
|
|
|
color: #cea26a; |
|
|
|
} |
|
|
|
|
|
|
|
.un-activate { |
|
|
|
color: #9e9e9e; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 登录按钮 |
|
|
|
.login-button { |
|
|
|
width: 100%; |
|
|
|
height: 86rpx; |
|
|
|
margin-top: 80rpx; |
|
|
|
background: linear-gradient(to right, #242e4b, #242e4b); |
|
|
|
color: #fff; |
|
|
|
// border-radius: 80rpx; |
|
|
|
box-shadow: 0px 10px 20px 0px rgba(0, 0, 0, 0.1); |
|
|
|
letter-spacing: 15rpx; |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
// 找回密码和 立即注册 |
|
|
|
.regtips { |
|
|
|
display: flex; |
|
|
|
margin-top: 26rpx; |
|
|
|
line-height: 1.4; |
|
|
|
padding-right: 32rpx; |
|
|
|
|
|
|
|
.loginnow { |
|
|
|
color: #5299dc; |
|
|
|
|
|
|
|
&:hover { |
|
|
|
color: #a60000; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
</style> |