ResetPwd.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. <template>
  2. <el-dialog
  3. class="reset-pwd"
  4. :visible.sync="modalIsShow"
  5. title="修改密码"
  6. top="10vh"
  7. width="500px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. append-to-body
  11. @open="visibleChange"
  12. >
  13. <div class="part-box part-box-pad part-box-border">
  14. <el-form
  15. ref="modalFormComp"
  16. :model="resetModel"
  17. :rules="resetRules"
  18. label-width="100px"
  19. >
  20. <el-form-item prop="oldPassword" label="旧密码:">
  21. <el-input
  22. size="large"
  23. type="password"
  24. v-model="resetModel.oldPassword"
  25. placeholder="请输入旧密码"
  26. clearable
  27. ></el-input>
  28. </el-form-item>
  29. <el-form-item prop="password" label="新密码:">
  30. <el-input
  31. size="large"
  32. type="password"
  33. v-model="resetModel.password"
  34. placeholder="请输入新密码"
  35. clearable
  36. ></el-input>
  37. </el-form-item>
  38. <el-form-item prop="rePassword" label="再次密码:">
  39. <el-input
  40. size="large"
  41. type="password"
  42. v-model="resetModel.rePassword"
  43. placeholder="请再次输入新密码"
  44. clearable
  45. ></el-input>
  46. </el-form-item>
  47. </el-form>
  48. </div>
  49. <div slot="footer">
  50. <el-button type="primary" :disabled="isSubmit" @click="submit"
  51. >确认</el-button
  52. >
  53. <el-button @click="cancel">取消</el-button>
  54. </div>
  55. </el-dialog>
  56. </template>
  57. <script>
  58. import { updatePwd } from "../api";
  59. import { password } from "@/plugins/formRules";
  60. import { Base64 } from "@/plugins/crypto";
  61. const initModalForm = {
  62. id: "",
  63. oldPassword: "",
  64. password: "",
  65. rePassword: ""
  66. };
  67. export default {
  68. name: "reset-pwd",
  69. props: {
  70. userPassword: {
  71. type: String
  72. }
  73. },
  74. data() {
  75. const equalToPswd = (rule, value, callback) => {
  76. if (value !== this.resetModel.password) {
  77. callback(new Error("两次输入的密码不一致"));
  78. } else {
  79. callback();
  80. }
  81. };
  82. return {
  83. modalIsShow: false,
  84. isSubmit: false,
  85. resetModel: { ...initModalForm },
  86. resetRules: {
  87. oldPassword: password,
  88. password,
  89. rePassword: [
  90. ...password,
  91. {
  92. validator: equalToPswd,
  93. trigger: "blur"
  94. }
  95. ]
  96. }
  97. };
  98. },
  99. methods: {
  100. initData(val) {
  101. this.resetModel = { ...initModalForm };
  102. this.resetModel.oldPassword = this.userPassword || "";
  103. this.resetModel.id = this.$ls.get("user", { id: "" }).id;
  104. },
  105. visibleChange() {
  106. this.initData(this.instance);
  107. },
  108. cancel() {
  109. this.modalIsShow = false;
  110. },
  111. open() {
  112. this.modalIsShow = true;
  113. },
  114. async submit() {
  115. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  116. if (!valid) return;
  117. if (this.isSubmit) return;
  118. this.isSubmit = true;
  119. const datas = {
  120. id: this.resetModel.id,
  121. oldPassword: Base64(this.resetModel.oldPassword),
  122. password: Base64(this.resetModel.password)
  123. };
  124. const data = await updatePwd(datas).catch(() => {
  125. this.isSubmit = false;
  126. });
  127. if (!data) return;
  128. this.isSubmit = false;
  129. this.$message.success("修改成功,请重新登录!");
  130. this.$emit("modified");
  131. this.cancel();
  132. }
  133. }
  134. };
  135. </script>