resetPwd.vue 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <el-form ref="form" :model="user" :rules="rules" label-width="80px">
  3. <el-form-item label="旧密码" prop="oldPassword" style="width: 360px;">
  4. <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" autocomplete="new-password"/>
  5. </el-form-item>
  6. <el-form-item label="新密码" prop="newPassword" style="width: 360px;">
  7. <el-input v-model="user.newPassword" placeholder="请输入新密码" type="password" autocomplete="new-password"/>
  8. </el-form-item>
  9. <el-form-item label="确认密码" prop="confirmPassword" style="width: 360px;">
  10. <el-input v-model="user.confirmPassword" placeholder="请确认密码" type="password" autocomplete="new-password"/>
  11. </el-form-item>
  12. <el-form-item>
  13. <el-button type="primary" size="mini" @click="submit">保存</el-button>
  14. <el-button type="danger" size="mini" @click="close">关闭</el-button>
  15. </el-form-item>
  16. </el-form>
  17. </template>
  18. <script>
  19. import { updateUserPwd } from "@/api/system/user";
  20. import Global from "@/layout/components/global.js";
  21. export default {
  22. data() {
  23. const equalToPassword = (rule, value, callback) => {
  24. if (this.user.newPassword !== value) {
  25. callback(new Error("两次输入的密码不一致"));
  26. } else {
  27. callback();
  28. }
  29. };
  30. return {
  31. test: "1test",
  32. user: {
  33. oldPassword: undefined,
  34. newPassword: undefined,
  35. confirmPassword: undefined
  36. },
  37. // 表单校验
  38. rules: {
  39. oldPassword: [
  40. { required: true, message: "旧密码不能为空", trigger: "blur" }
  41. ],
  42. newPassword: [
  43. { required: true, message: "新密码不能为空", trigger: "blur" },
  44. {
  45. pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/,
  46. message: "密码请包含数字,英文,字符中的两种以上,长度6-20位",
  47. trigger: ["blur", "change"],
  48. }
  49. // { min: 6, max: 20, message: "长度在 6 到 20 个字符", trigger: "blur" }
  50. ],
  51. confirmPassword: [
  52. { required: true, message: "确认密码不能为空", trigger: "blur" },
  53. { required: true, validator: equalToPassword, trigger: "blur" }
  54. ]
  55. }
  56. };
  57. },
  58. methods: {
  59. submit() {
  60. this.$refs["form"].validate(valid => {
  61. if (valid) {
  62. const loading = this.$loading({
  63. lock: true,
  64. text: "Loading",
  65. spinner: "el-icon-loading",
  66. background: "rgba(0, 0, 0, 0.7)",
  67. })
  68. updateUserPwd(this.user.oldPassword, this.user.newPassword).then(
  69. response => {
  70. loading.close();
  71. this.msgSuccess("修改成功");
  72. this.$store.dispatch('LogOut').then(() => {
  73. location.href = '/home';
  74. })
  75. }
  76. ).catch((response)=>{
  77. loading.close();
  78. });
  79. }
  80. });
  81. },
  82. close() {
  83. Global.$emit("removeCache", "closeSelectedTag", this.$route);
  84. this.$store.dispatch("tagsView/delView", this.$route);
  85. this.$router.push({ path: "/home" });
  86. }
  87. }
  88. };
  89. </script>