updatePsw.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <template>
  2. <el-form ref="form" :model="data" label-width="90px">
  3. <div class="stop-psw">
  4. <input type="text" />
  5. <input type="password" name="" id="" />
  6. </div>
  7. <el-form-item label="手机号:" class="mandatory">
  8. <el-input
  9. v-model="data.phone"
  10. placeholder="请输入手机号码"
  11. disabled
  12. ></el-input>
  13. </el-form-item>
  14. <el-form-item label="旧密码:" class="mandatory">
  15. <!-- <el-input v-model="data.oldPassword" placeholder="请输入旧密码"> </el-input> -->
  16. <el-input
  17. autocomplete="off"
  18. readonly
  19. onfocus="this.removeAttribute('readonly');"
  20. v-model="data.oldPassword"
  21. :type="addPassoldFlag ? 'text' : 'password'"
  22. :maxlength="16"
  23. placeholder="请输入旧密码"
  24. >
  25. <template #suffix>
  26. <span @click="addPassoldFlag = !addPassoldFlag" style="cursor: pointer">
  27. <el-icon v-if="addPassoldFlag">
  28. <View />
  29. </el-icon>
  30. <el-icon v-else>
  31. <Hide />
  32. </el-icon>
  33. </span>
  34. </template>
  35. </el-input>
  36. </el-form-item>
  37. <el-form-item label="新密码:" class="mandatory">
  38. <!-- <el-input
  39. v-model="data.password"
  40. type="password"
  41. :maxlength="16"
  42. placeholder="请输入8-16位数字、英文大小写组合"
  43. >
  44. </el-input> -->
  45. <el-input
  46. autocomplete="off"
  47. readonly
  48. onfocus="this.removeAttribute('readonly');"
  49. v-model="data.password"
  50. :type="addPassFlag ? 'text' : 'password'"
  51. :maxlength="16"
  52. placeholder="请输入8-16位数字、字母大小写组合"
  53. >
  54. <template #suffix>
  55. <span @click="addPassFlag = !addPassFlag" style="cursor: pointer">
  56. <el-icon v-if="addPassFlag">
  57. <View />
  58. </el-icon>
  59. <el-icon v-else>
  60. <Hide />
  61. </el-icon>
  62. </span>
  63. </template>
  64. </el-input>
  65. </el-form-item>
  66. <el-form-item label="密码确认:" class="mandatory">
  67. <!-- <el-input
  68. v-model="data.confimPsw"
  69. type="password"
  70. placeholder="请输入8-16位数字、英文大小写组合"
  71. ></el-input> -->
  72. <el-input
  73. autocomplete="off"
  74. readonly
  75. onfocus="this.removeAttribute('readonly');"
  76. v-model="data.confimPsw"
  77. :type="addPassPwFlag ? 'text' : 'password'"
  78. :maxlength="16"
  79. placeholder="请输入8-16位数字、字母大小写组合"
  80. >
  81. <template #suffix>
  82. <span @click="addPassPwFlag = !addPassPwFlag" style="cursor: pointer">
  83. <el-icon v-if="addPassPwFlag">
  84. <View />
  85. </el-icon>
  86. <el-icon v-else>
  87. <Hide />
  88. </el-icon>
  89. </span>
  90. </template>
  91. </el-input>
  92. </el-form-item>
  93. </el-form>
  94. </template>
  95. <script setup lang="ts">
  96. import { encodePwd } from "@/util";
  97. import { openErrorMsg } from "@/request";
  98. import {
  99. CountdownStore,
  100. CountdownStuts,
  101. sendPhoneCode,
  102. updatePassword,
  103. user,
  104. } from "@/store/user";
  105. import { ref, reactive } from "vue";
  106. import { PSW } from "@/constant/REG";
  107. import { QuiskExpose } from "@/helper/mount";
  108. const addPassoldFlag = ref(false);
  109. const addPassFlag = ref(false);
  110. const addPassPwFlag = ref(false);
  111. const data = ref({
  112. oldPassword: "",
  113. password: "",
  114. confimPsw: "",
  115. phone: user.value.info.userName,
  116. // code: "",
  117. });
  118. const msgStatus = ref<CountdownStore>();
  119. const sendCode = async () => {
  120. msgStatus.value = await sendPhoneCode(data.value.phone);
  121. };
  122. defineExpose<QuiskExpose>({
  123. async submit() {
  124. if (data.value.password !== data.value.confimPsw) {
  125. openErrorMsg("两次密码不一致!");
  126. throw "两次密码不一致!";
  127. }
  128. if (!PSW.REG.test(data.value.password)) {
  129. openErrorMsg(PSW.tip);
  130. throw PSW.tip;
  131. }
  132. // if (!data.value.code || !data.value.code.trim()) {
  133. // openErrorMsg("请输入验证码");
  134. // throw "请输入验证码";
  135. // }
  136. await updatePassword({
  137. userName: data.value.phone,
  138. // code: data.value.code,
  139. oldPassword: data.value.oldPassword,
  140. password: data.value.password,
  141. });
  142. // data.value.oldPassword = data.value.password = data.value.confimPsw = "";
  143. },
  144. });
  145. </script>