updatePwd.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <sc-dialog v-model="visible" title="修改密码" width="600" :showFullscreen="false" @close="$emit('closed')">
  3. <el-alert title="密码更新成功后,您将被重定向到登录页面,您可以使用新密码重新登录。" type="info" show-icon :closable="false" style="margin-bottom: 20px;"/>
  4. <el-form ref="form" :model="form" :rules="rules" label-width="100px">
  5. <el-form-item label="当前密码:" prop="userPassword">
  6. <el-input v-model="form.userPassword" type="password" show-password placeholder="请输入当前密码"></el-input>
  7. <div class="el-form-item-msg">必须提供当前登录用户密码才能进行更改</div>
  8. </el-form-item>
  9. <el-form-item label="新密码:" prop="newPassword">
  10. <el-input v-model="form.newPassword" type="password" show-password placeholder="请输入新密码"></el-input>
  11. <sc-password-strength v-model="form.newPassword"></sc-password-strength>
  12. </el-form-item>
  13. <el-form-item label="确认新密码:" prop="confirmNewPassword">
  14. <el-input v-model="form.confirmNewPassword" type="password" show-password placeholder="请再次输入新密码"></el-input>
  15. </el-form-item>
  16. </el-form>
  17. <template #footer>
  18. <el-button @click="visible = false">取 消</el-button>
  19. <el-button type="primary" :loading="isSaveing" @click="submit">确 定</el-button>
  20. </template>
  21. </sc-dialog>
  22. </template>
  23. <script>
  24. import scPasswordStrength from "@/components/scPasswordStrength";
  25. export default {
  26. components: {
  27. scPasswordStrength
  28. },
  29. data() {
  30. return {
  31. visible: true,
  32. isSaveing: false,
  33. form: {
  34. userPassword: "",
  35. newPassword: "",
  36. confirmNewPassword: ""
  37. },
  38. rules: {
  39. userPassword: [{ required: true, message: "请输入当前密码" }],
  40. newPassword: [{ required: true, message: "请输入新密码" }],
  41. confirmNewPassword: [
  42. { required: true, message: "请再次输入新密码" },
  43. { validator: (rule, value, callback) => {
  44. if (value !== this.form.newPassword) {
  45. callback(new Error("两次输入密码不一致"));
  46. } else {
  47. callback();
  48. }
  49. }}
  50. ]
  51. }
  52. }
  53. },
  54. methods: {
  55. submit() {
  56. this.$refs.form.validate(valid => {
  57. if (valid) {
  58. this.isSaveing = true;
  59. this.$API.auth.updatePassword.post(this.form).then(() => {
  60. this.$notify.success({
  61. title: "提示",
  62. message: "密码修改成功,请重新登录",
  63. duration: 1500
  64. });
  65. setTimeout(() => {
  66. this.isSaveing = false;
  67. this.$TOOL.cookie.remove("TOKEN");
  68. this.$TOOL.data.remove("USER_INFO");
  69. this.$TOOL.data.remove("OA_USER_INFO");
  70. this.$TOOL.data.remove("APPLY_SQL");
  71. this.$router.replace({ path: "/login" });
  72. }, 1500);
  73. }).catch(() => this.isSaveing = false);
  74. } else {
  75. return false;
  76. }
  77. });
  78. }
  79. }
  80. }
  81. </script>
  82. <style lang="scss" scoped>
  83. .el-alert {
  84. width: fit-content;
  85. margin: auto;
  86. }
  87. .el-form {
  88. width: 80%;
  89. margin: 20px auto 0;
  90. }
  91. </style>