| <template> | 
|   <el-form ref="form" :model="user" :rules="rules" label-width="80px"> | 
|     <el-form-item label="旧密码" prop="oldPassword"> | 
|       <el-input | 
|         v-model="user.oldPassword" | 
|         placeholder="请输入旧密码" | 
|         type="password" | 
|         show-password | 
|       /> | 
|     </el-form-item> | 
|     <el-form-item label="新密码" prop="newPassword"> | 
|       <el-input | 
|         v-model="user.newPassword" | 
|         placeholder="请输入新密码" | 
|         type="password" | 
|         show-password | 
|       /> | 
|     </el-form-item> | 
|     <el-form-item label="确认密码" prop="confirmPassword"> | 
|       <el-input | 
|         v-model="user.confirmPassword" | 
|         placeholder="请确认密码" | 
|         type="password" | 
|         show-password | 
|       /> | 
|     </el-form-item> | 
|     <el-form-item> | 
|       <el-button type="primary" size="mini" @click="submit">保存</el-button> | 
|       <el-button type="danger" size="mini" @click="close">关闭</el-button> | 
|     </el-form-item> | 
|   </el-form> | 
| </template> | 
|   | 
| <script> | 
| import { updateUserPwd } from "@/api/system/user"; | 
|   | 
| export default { | 
|   data() { | 
|     const equalToPassword = (rule, value, callback) => { | 
|       if (this.user.newPassword !== value) { | 
|         callback(new Error("两次输入的密码不一致")); | 
|       } else { | 
|         callback(); | 
|       } | 
|     }; | 
|     const checkMixPwd = (rule, value, callback) => { | 
|       if (!this.checkPwdLeagal(value)) { | 
|         callback(new Error("密码必须同时包含大写、小写、数字和特殊字符其中三项")); | 
|       } else { | 
|         callback(); | 
|       } | 
|     }; | 
|     return { | 
|       test: "1test", | 
|       user: { | 
|         oldPassword: undefined, | 
|         newPassword: undefined, | 
|         confirmPassword: undefined, | 
|       }, | 
|       // 表单校验 | 
|       rules: { | 
|         oldPassword: [ | 
|           { required: true, message: "旧密码不能为空", trigger: "blur" }, | 
|         ], | 
|         newPassword: [ | 
|           { required: true, message: "新密码不能为空", trigger: "blur" }, | 
|           { | 
|             min: 8, | 
|             max: 20, | 
|             message: "长度在 8 到 20 个字符", | 
|             trigger: "blur", | 
|           }, | 
|           { required: true, validator: checkMixPwd, trigger: "blur" }, | 
|         ], | 
|         confirmPassword: [ | 
|           { required: true, message: "确认密码不能为空", trigger: "blur" }, | 
|           { required: true, validator: equalToPassword, trigger: "blur" }, | 
|         ], | 
|       }, | 
|     }; | 
|   }, | 
|   methods: { | 
|     submit() { | 
|       this.$refs["form"].validate((valid) => { | 
|         if (valid) { | 
|           updateUserPwd(this.user.oldPassword, this.user.newPassword).then( | 
|             (response) => { | 
|               this.$modal.msgSuccess("修改成功"); | 
|             } | 
|           ); | 
|         } | 
|       }); | 
|     }, | 
|     close() { | 
|       this.$store.dispatch("tagsView/delView", this.$route); | 
|       this.$router.push({ path: "/index" }); | 
|     }, | 
|     checkPwdLeagal(pwd) { | 
|       let pwdRegex = new RegExp( | 
|         "^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\\W_]+$)(?![a-z0-9]+$)(?![a-z\\W_]+$)(?![0-9\\W_]+$)[a-zA-Z0-9\\W_]{8,20}$" | 
|       ); | 
|       if (!pwdRegex.test(pwd)) { | 
|         // alert( | 
|         //   "您的密码复杂度太低(密码中必须包含大小写字母、数字、特殊字符),请及时修改密码!" | 
|         // ); | 
|         return false; | 
|       } else { | 
|         return true; | 
|       } | 
|     }, | 
|   }, | 
| }; | 
| </script> |