1
lzhe
2024-10-10 d1b6cd8e5270b15546c94587fe2648453d525eee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<template>
    <common-page title="重置密码">
        <el-steps :active="stepActive" simple finish-status="success">
            <el-step title="填写新密码" />
            <el-step title="完成重置" />
        </el-steps>
        <el-form v-if="stepActive==0" ref="form" :model="form" :rules="rules" :label-width="120">
            <el-form-item label="登录账号" prop="user">
                <el-input v-model="form.user" placeholder="请输入登录账号"></el-input>
                <div class="el-form-item-msg">请输入注册时填写的登录账号</div>
            </el-form-item>
            <el-form-item label="手机号码" prop="phone">
                <el-input v-model="form.phone" placeholder="请输入手机号码"></el-input>
            </el-form-item>
            <el-form-item label="短信验证码" prop="yzm">
                <div class="yzm">
                    <el-input v-model="form.yzm" placeholder="请输入6位短信验证码"></el-input>
                    <el-button @click="getYzm" :disabled="disabled">获取验证码<span v-if="disabled"> ({{time}})</span></el-button>
                </div>
            </el-form-item>
            <el-form-item label="新密码" prop="newpw">
                <el-input v-model="form.newpw" show-password placeholder="请输入新密码"></el-input>
                <div class="el-form-item-msg">请输入包含英文、数字的8位以上密码</div>
            </el-form-item>
            <el-form-item label="确认新密码" prop="newpw2">
                <el-input v-model="form.newpw2" show-password placeholder="请再一次输入新密码"></el-input>
            </el-form-item>
 
            <el-form-item>
                <el-button type="primary" @click="save">提交</el-button>
            </el-form-item>
        </el-form>
        <el-result v-if="stepActive==1" icon="success" title="密码重置成功" sub-title="请牢记自己的新密码,返回登录后使用新密码登录">
            <template #extra>
                <el-button type="primary" @click="backLogin">返回登录</el-button>
            </template>
        </el-result>
    </common-page>
</template>
 
<script>
    import commonPage from './components/commonPage'
 
    export default {
        components: {
            commonPage
        },
        data() {
            return {
                stepActive: 0,
                form: {
                    user: "",
                    phone: "",
                    yzm: "",
                    newpw: "",
                    newpw2: ""
                },
                rules: {
                    user: [
                        { required: true, message: '请输入登录账号'}
                    ],
                    phone: [
                        { required: true, message: '请输入手机号'}
                    ],
                    yzm: [
                        { required: true, message: '请输入短信验证码'}
                    ],
                    newpw: [
                        { required: true, message: '请输入新的密码'}
                    ],
                    newpw2: [
                        { required: true, message: '请再次输入新的密码'},
                        {validator: (rule, value, callback) => {
                            if (value !== this.form.newpw) {
                                callback(new Error('两次输入密码不一致'));
                            }else{
                                callback();
                            }
                        }}
                    ],
                },
                disabled: false,
                time: 0
            }
        },
        mounted() {
 
        },
        methods: {
            async getYzm(){
                var validate = await this.$refs.form.validateField("phone").catch(()=>{})
                if(!validate){ return false }
 
                this.$message.success("已发送短信至手机号码")
                this.disabled = true
                this.time = 60
                var t = setInterval(() => {
                    this.time -= 1
                    if(this.time < 1){
                        clearInterval(t)
                        this.disabled = false
                        this.time = 0
                    }
                },1000)
            },
            async save(){
                var validate = await this.$refs.form.validate().catch(()=>{})
                if(!validate){ return false }
 
                this.stepActive = 1
            },
            backLogin(){
                this.$router.push({
                    path: '/login'
                })
            }
        }
    }
</script>
 
<style scoped>
 
 
</style>