odc.xiaohui
2023-01-11 d942877495ceea1575e64fb6d4e2972f6da10cac
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
<template>
    <div class="password">
        <el-form ref="pwd" label-width="140px" autoComplete="on" :model="user" :rules="passrules">
            <!-- 初始密码 -->
            <el-form-item class="optionItem" label="初始密码:" prop="password">
                <el-input v-model="user.password" type="password" placeholder="请填写初始密码"  show-password></el-input>
            </el-form-item>
            <!-- 新密码 -->
            <el-form-item class="optionItem" label="新密码:" prop="newPwd">
                <el-input v-model="user.newPwd" type="password" placeholder="请填写新密码"  show-password></el-input>
            </el-form-item>
            <!-- 新密码 -->
            <el-form-item class="optionItem" label="确认新密码:" prop="secondPwd">
                <el-input v-model="user.secondPwd" type="password" placeholder="确认您的新密码"  show-password></el-input>
            </el-form-item>
 
        </el-form>
        <div class="pwd-footer">
            <el-button @click="resetForm">取消</el-button>
            <el-button type="primary" @click="handleSubmit">提交</el-button>
        </div>
    </div>
</template>
<script>
export default {
    data() {
        const checkPwd = (rule, value, callback) => {
            if (!value) {
                callback(new Error('初始密码不能为空'))
            } else {
                callback();
            }
        }
        const checkNewPwd = (rule, value, callback) => {
          var rep =/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$/;
          if (!rep.test(value) ) {
            callback(new Error("密码长度8到16位且密码中的字符必须包含字母大写和字母小写和必须包含数字,不能包含空格"));
          } else {
            callback();
          }
    };
        
        const checkSame = (rule, value, callback) => {
            var rep =/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$/;
          if (!rep.test(value) ) {
            callback(new Error("密码长度8到16位且密码中的字符必须包含字母大写和字母小写和必须包含数字,不能包含空格"));
          } else {
            callback();
          }
        }
        return {
            user: {
                password: '',
                secondPwd: '',
                newPwd: '',
            },
            passrules: {
                password: [
                    {
                        required: true,
                        trigger: 'blur',
                        validator: checkPwd
                    },
                ],
                secondPwd: [
                    {
                        required: true,
                        trigger: 'blur',
                        validator: checkSame
                    }
                ],
                newPwd: [
                    {
                        required: true,
                        trigger: 'blur',
                        validator: checkNewPwd
                    }
                ]
            }
        }
    },
    props: ['userInfo', 'closeDialog'],
    created() {
 
    },
    methods: {
        // 提交
        handleSubmit() {
            const { userInfo, user } = this;
            this.$refs.pwd.validate((valid) => {
                if (valid) {
                    this.$axios({
                        method: 'post',
                        url: 'sccg/admin/updatePassword',
                        data: {
                            newPassword: user.newPwd,
                            oldPassword: user.password,
                            username: userInfo.username
                        }
                    })
                        .then(res => {
                            if (res.code === 200) {
                                this.$emit('closeDialog', { flag: false });
                                this.$message({
                                    type: 'success',
                                    message: '密码修改成功'
                                })
                            } else {
                                this.$message({
                                    type: 'warning',
                                    message: res.message
                                })
                            }
                        })
                } else {
                    return false;
                }
            })
        },
        // 清空表单
        resetForm() {
            this.$refs.pwd.resetFields();
            this.$emit('closeDialog', { flag: false });
        }
    }
}
</script>
<style lang="scss" scoped>
.password {
    padding: 50px 100px;
 
    // ::v-deep .el-input__inner {
    //     background-color: #09152f;
    //     border: 1px solid #17324c;
    // }
 
    .pwd-footer {
        display: flex;
        justify-content: center;
    }
}
</style>