|
|
@@ -1,39 +1,21 @@
|
|
|
<template>
|
|
|
<div class="login">
|
|
|
- <div class="tabs">
|
|
|
- <div class="tab active">设置新密码</div>
|
|
|
+ <div class="phone" v-if="step === 0">
|
|
|
+ <div class="text1">{{ phone }}</div>
|
|
|
+ <div class="text2">修改密码需先验证当前手机号</div>
|
|
|
</div>
|
|
|
-
|
|
|
<van-form ref="form" @submit="submit">
|
|
|
- <van-field
|
|
|
- type="tel"
|
|
|
- name="手机号码"
|
|
|
- placeholder="请输入手机号码"
|
|
|
- v-model="form.phone"
|
|
|
- :maxlength="11"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请输入手机号码' },
|
|
|
- {
|
|
|
- pattern: phonePattern,
|
|
|
- message: '手机号码格式错误'
|
|
|
- }
|
|
|
- ]"
|
|
|
- >
|
|
|
- <template #left-icon>
|
|
|
- <img :src="require('@assets/login_icon_zhanghao.png')" class="icon" />
|
|
|
- </template>
|
|
|
- </van-field>
|
|
|
-
|
|
|
<van-field
|
|
|
type="digit"
|
|
|
name="验证码"
|
|
|
+ v-if="step === 0"
|
|
|
placeholder="请输入验证码"
|
|
|
v-model="form.code"
|
|
|
:maxlength="4"
|
|
|
:rules="[{ required: true, message: '请输入验证码' }]"
|
|
|
>
|
|
|
<template #left-icon>
|
|
|
- <img :src="require('@assets/login_icon_mima (1).png')" class="icon" />
|
|
|
+ <img :src="require('@assets/svgs/login_icon_code.svg')" class="icon" />
|
|
|
</template>
|
|
|
<template #button>
|
|
|
<van-button
|
|
|
@@ -41,59 +23,56 @@
|
|
|
class="sub-code"
|
|
|
size="small"
|
|
|
plain
|
|
|
+ type="warning"
|
|
|
:disabled="isSend"
|
|
|
- type="primary"
|
|
|
>
|
|
|
{{ isSend ? `已发送(${sendNum})S` : '发送验证码' }}
|
|
|
</van-button>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
|
|
|
- <van-field
|
|
|
- type="password"
|
|
|
- name="密码"
|
|
|
- placeholder="请输入密码"
|
|
|
- v-model="form.password"
|
|
|
- :rules="[{ required: true, message: '请填写密码' }]"
|
|
|
- >
|
|
|
- <template #left-icon>
|
|
|
- <img :src="require('@assets/login_icon_mima.png')" class="icon" />
|
|
|
- </template>
|
|
|
- </van-field>
|
|
|
-
|
|
|
- <van-field
|
|
|
- type="password"
|
|
|
- name="密码"
|
|
|
- placeholder="请再次输入密码"
|
|
|
- v-model="form.password2"
|
|
|
- :rules="[
|
|
|
- { required: true, message: '请再次填写密码' },
|
|
|
- {
|
|
|
- validator: val => {
|
|
|
- if (val == form.password) {
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- return false;
|
|
|
- }
|
|
|
- },
|
|
|
- message: '两次密码输入不一致'
|
|
|
- }
|
|
|
- ]"
|
|
|
- >
|
|
|
- <template #left-icon>
|
|
|
- <img :src="require('@assets/login_icon_mima.png')" class="icon" />
|
|
|
- </template>
|
|
|
- </van-field>
|
|
|
+ <template v-else>
|
|
|
+ <van-field
|
|
|
+ type="password"
|
|
|
+ name="密码"
|
|
|
+ placeholder="请输入密码"
|
|
|
+ v-model="form.password"
|
|
|
+ :rules="[{ required: true, message: '请填写密码' }]"
|
|
|
+ >
|
|
|
+ <template #left-icon>
|
|
|
+ <img :src="require('@assets/svgs/login_icon_mima.svg')" class="icon" />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+
|
|
|
+ <van-field
|
|
|
+ type="password"
|
|
|
+ name="密码"
|
|
|
+ placeholder="请再次输入密码"
|
|
|
+ v-model="form.password2"
|
|
|
+ :rules="[
|
|
|
+ { required: true, message: '请再次填写密码' },
|
|
|
+ {
|
|
|
+ validator: val => {
|
|
|
+ if (val == form.password) {
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ message: '两次密码输入不一致'
|
|
|
+ }
|
|
|
+ ]"
|
|
|
+ >
|
|
|
+ <template #left-icon>
|
|
|
+ <img :src="require('@assets/svgs/login_icon_mima.svg')" class="icon" />
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ </template>
|
|
|
|
|
|
<div class="button">
|
|
|
- <van-button
|
|
|
- round
|
|
|
- block
|
|
|
- native-type="submit"
|
|
|
- :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
|
|
|
- class="sure"
|
|
|
- >确定修改</van-button
|
|
|
- >
|
|
|
+ <van-button round block native-type="submit" type="primary" class="sure">
|
|
|
+ {{ step === 0 ? '下一步' : '确定修改' }}
|
|
|
+ </van-button>
|
|
|
<!-- <van-button
|
|
|
class="del"
|
|
|
round
|
|
|
@@ -108,6 +87,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapState } from 'vuex';
|
|
|
import phone from '../../mixins/phone';
|
|
|
export default {
|
|
|
mixins: [phone],
|
|
|
@@ -119,22 +99,35 @@ export default {
|
|
|
password: '',
|
|
|
password2: '',
|
|
|
code: ''
|
|
|
- }
|
|
|
+ },
|
|
|
+ step: 0
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ ...mapState(['userInfo']),
|
|
|
+ phone() {
|
|
|
+ let phone = this.userInfo.phone || '';
|
|
|
+ return phone.substr(0, 3) + '****' + phone.substr(-4, 4);
|
|
|
+ }
|
|
|
+ },
|
|
|
methods: {
|
|
|
sendPhone() {
|
|
|
- this.$refs.form.validate('手机号码').then(() => {
|
|
|
- this.sendMsg(this.form.phone);
|
|
|
- });
|
|
|
+ this.sendMsg(this.userInfo.phone);
|
|
|
},
|
|
|
submit() {
|
|
|
+ if (this.step === 0) {
|
|
|
+ this.step = 1;
|
|
|
+ return;
|
|
|
+ }
|
|
|
this.$toast.loading({
|
|
|
message: '加载中...',
|
|
|
forbidClick: true
|
|
|
});
|
|
|
this.$http
|
|
|
- .post(`/user/changePassword?password=${this.form.password}&code=${this.form.code}`)
|
|
|
+ .post('/user/userChangePassword', {
|
|
|
+ password: this.form.password,
|
|
|
+ code: this.form.code
|
|
|
+ })
|
|
|
.then(res => {
|
|
|
this.$toast.success('修改成功');
|
|
|
setTimeout(() => {
|
|
|
@@ -219,4 +212,20 @@ export default {
|
|
|
padding-right: 0;
|
|
|
border-width: 0;
|
|
|
}
|
|
|
+
|
|
|
+.phone {
|
|
|
+ .flex-col();
|
|
|
+ align-items: center;
|
|
|
+ .text1 {
|
|
|
+ font-size: 24px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 34px;
|
|
|
+ }
|
|
|
+ .text2 {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #6a6d83;
|
|
|
+ margin-top: 10px;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|