189 lines
4.7 KiB
Vue
189 lines
4.7 KiB
Vue
<template>
|
||
<view class="body">
|
||
<view class="wrap">
|
||
<u--form :model="form" :rules="rules" ref="uForm">
|
||
<u-form-item label-width="160" :label-position="labelPosition" label="手机号" prop='userInfo.phone'>
|
||
<u--input :password-icon="true" :border="border" placeholder=""
|
||
v-model="form.userInfo.phone"></u--input>
|
||
</u-form-item>
|
||
|
||
<u-form-item label="" prop="userInfo.code">
|
||
<u--input placeholder='请输入验证码' maxlength="6" type='number' v-model="form.userInfo.code" />
|
||
<u-button slot="right" size="mini" @click="getCode" plain>
|
||
<block v-if="!timeTick">
|
||
获取验证码
|
||
</block>
|
||
<block v-else>
|
||
剩余{{timeTick}}秒
|
||
</block>
|
||
</u-button>
|
||
</u-form-item>
|
||
|
||
<u-form-item label-width="160" :label-position="labelPosition" label="新密码" prop='userInfo.password'>
|
||
<u--input :password-icon="true" type="password" :border="border" placeholder="请输入新密码"
|
||
v-model="form.password"></u--input>
|
||
</u-form-item>
|
||
|
||
<view class="desc">
|
||
<view class="notice">
|
||
密码6-18位英文字母,数字或字符
|
||
</view>
|
||
<view class="forget">
|
||
忘记密码?
|
||
</view>
|
||
</view>
|
||
<u-form-item label-width="160" :label-position="labelPosition" label="确认密码" prop="userInfo.re_password">
|
||
<u--input :password-icon="true" type="password" :border="border" placeholder="请再次输入新密码确认"
|
||
v-model="form.re_password"></u--input>
|
||
</u-form-item>
|
||
|
||
</u--form>
|
||
|
||
<view style="margin-top: 30rpx;">
|
||
<u-button :disabled="false" class="button" @click="submit">提交</u-button>
|
||
</view>
|
||
</view>
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
var _this, that;
|
||
export default {
|
||
data() {
|
||
return {
|
||
form: {
|
||
userInfo: {
|
||
phone: "",
|
||
password: "",
|
||
re_password: "",
|
||
code: ""
|
||
}
|
||
},
|
||
timeTick: 0,
|
||
border: false,
|
||
labelPosition: 'top',
|
||
errorType: ['message'],
|
||
rules: {
|
||
'userInfo.password': [{
|
||
required: true,
|
||
message: '请输入密码',
|
||
trigger: 'blur',
|
||
},
|
||
{
|
||
min: 6,
|
||
max: 18,
|
||
message: '密码长度在6到18个字符',
|
||
trigger: ['change', 'blur'],
|
||
},
|
||
{
|
||
validator: (rule, value, callback) => {
|
||
// 调用uView自带的js验证规则,详见:https://www.uviewui.com/js/test.html
|
||
|
||
let reg = /^([a-zA-z0-9!@#$%%^&*()_+-=}{\[\]};'":\\\/.,<>?])+$/;
|
||
|
||
return reg.test(value);
|
||
},
|
||
message: '密码必须为英文字母、数字或字符',
|
||
trigger: ['change', 'blur'],
|
||
},
|
||
],
|
||
'userInfo.re_password': {
|
||
required: true,
|
||
message: '请再次输入密码',
|
||
trigger: 'blur',
|
||
},
|
||
'userInfo.code': {
|
||
required: true,
|
||
message: '请输入验证码',
|
||
trigger: 'blur',
|
||
},
|
||
},
|
||
|
||
}
|
||
},
|
||
onLoad() {
|
||
that = this
|
||
_this = that
|
||
// let userData = uni.getStorageSync(getApp().globalData.config.userDataKey)
|
||
// _this.form.mobile = userData.mobile
|
||
},
|
||
onReady() {
|
||
this.$refs.uForm.setRules(this.rules)
|
||
},
|
||
methods: {
|
||
getCode() {
|
||
//获取验证码
|
||
if (_this.form.mobile.length != 11) {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
position: 'bottom',
|
||
title: '手机号不正确'
|
||
});
|
||
return false;
|
||
}
|
||
if (that.timeTick > 0) {
|
||
uni.showToast({
|
||
title: '发送太频繁啦',
|
||
duration: 2000
|
||
});
|
||
return;
|
||
}
|
||
// 发送验证码
|
||
getApp().globalData.util.request({
|
||
s: 'Merch.User.getSMSCode',
|
||
mobile: _this.form.mobile
|
||
}).then(res => {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
position: 'bottom',
|
||
title: '验证码发送成功'
|
||
});
|
||
that.timeTick = 60;
|
||
// 开始倒计时
|
||
let timeTick = setInterval(function() {
|
||
if (that.timeTick > 0) {
|
||
that.timeTick = that.timeTick - 1
|
||
}
|
||
}, 1000);
|
||
|
||
setTimeout(function() {
|
||
clearInterval(timeTick)
|
||
}, 1000 * 60)
|
||
});
|
||
},
|
||
submit() {
|
||
this.$refs.uForm.validate(valid => {
|
||
if (valid) {
|
||
if (that.form.re_password != that.form.password) {
|
||
uni.showModal({
|
||
title: '提示',
|
||
content: '两次输入密码不一致'
|
||
});
|
||
return;
|
||
}
|
||
getApp().globalData.util.request({
|
||
s: 'Merch.Mershop_Account.changePassword',
|
||
mobile: _this.form.mobile,
|
||
code: that.form.code,
|
||
password: that.form.password,
|
||
re_password: that.form.re_password,
|
||
}).then(res => {
|
||
if (res.data.ret == 200) {
|
||
uni.showToast({
|
||
icon: 'none',
|
||
position: 'bottom',
|
||
title: '密码修改成功'
|
||
});
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
},
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
@import "./modify_password.scss";
|
||
</style> |