forgetPwd.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <view class="page-container">
  3. <vb-cell-group outset>
  4. <uni-forms ref="formRef" :modelValue="form" :label-width="75" border validate-trigger="blur">
  5. <uni-forms-item
  6. required
  7. label="手机号码"
  8. name="phonenumber"
  9. :rules="[
  10. { required: true, errorMessage: '请填写手机号码' },
  11. { pattern: /^1[3-9]\d{9}$/, errorMessage: '请填写正确的手机号码' },
  12. ]"
  13. >
  14. <uni-easyinput type="text" v-model="form.phonenumber" :inputBorder="false" placeholder="请输入手机号码" />
  15. </uni-forms-item>
  16. <uni-forms-item
  17. required
  18. label="用户姓名"
  19. name="name"
  20. :rules="[{ required: true, errorMessage: '请填写用户姓名' }]"
  21. >
  22. <uni-easyinput type="text" v-model="form.name" :inputBorder="false" placeholder="请填写真实姓名" />
  23. </uni-forms-item>
  24. <uni-forms-item
  25. label="验证码"
  26. required
  27. name="smsCode"
  28. :rules="[{ required: true, errorMessage: '请填写验证码' }]"
  29. >
  30. <uni-easyinput type="text" v-model="form.smsCode" :inputBorder="false" placeholder="请填写验证码">
  31. <template #right>
  32. <view class="d-fc w-100px h-35px" :class="codeClass" @click="getCode">{{ codeText }}</view>
  33. </template>
  34. </uni-easyinput>
  35. </uni-forms-item>
  36. <uni-forms-item
  37. required
  38. label="用户密码"
  39. name="password"
  40. :rules="[{ required: true, errorMessage: '请填写用户密码' }]"
  41. >
  42. <uni-easyinput type="password" v-model="form.password" :inputBorder="false" placeholder="请填写用户密码" />
  43. </uni-forms-item>
  44. </uni-forms>
  45. </vb-cell-group>
  46. <vb-cell-group>
  47. <vb-button round block custom-class="mb-15" @click="onSubmit" size="large">重置密码</vb-button>
  48. <vb-button round block plain class="mt" @click="onBack" size="large">返回登录</vb-button>
  49. </vb-cell-group>
  50. </view>
  51. </template>
  52. <script lang="ts" setup>
  53. import apis from "@/api"
  54. import route from "@/route"
  55. const formRef = ref()
  56. const form = ref({
  57. phonenumber: "",
  58. name: "",
  59. smsCode: "",
  60. password: "",
  61. username: "000",
  62. })
  63. const codeText = ref("获取验证码")
  64. const canGetCode = computed(() => {
  65. return codeText.value == "获取验证码"
  66. })
  67. const codeClass = computed(() => {
  68. return canGetCode.value ? "bg-vb text-white" : "bg-gray-2 text-gray-6"
  69. })
  70. let timer: any
  71. function disabledGetCode() {
  72. let second = 60
  73. clearTimeout(Number(timer))
  74. function changeText() {
  75. second--
  76. if (second == 0) {
  77. codeText.value = "获取验证码"
  78. second = 60
  79. return
  80. }
  81. codeText.value = `${second}s 后获取`
  82. timer = setTimeout(changeText, 1000)
  83. }
  84. changeText()
  85. }
  86. function onSubmit() {
  87. formRef.value.validate().then(() => {
  88. // 提交注册表单
  89. apis.loginApi.resetPwd(form.value).then(() => {
  90. message.msgSuccess("重置成功")
  91. setTimeout(() => {
  92. route.navigate("login")
  93. }, 1500)
  94. })
  95. })
  96. }
  97. function onBack() {
  98. route.navigate("login")
  99. }
  100. function getCode() {
  101. // if (!canGetCode.value) {
  102. // return
  103. // }
  104. if (form.value.phonenumber == "") {
  105. message.msgError("请填写手机号")
  106. return
  107. }
  108. if (form.value.name == "") {
  109. message.msgError("请填写用户名")
  110. return
  111. }
  112. disabledGetCode()
  113. apis.loginApi.getPhoneCode(form.value.phonenumber, form.value.name).then((res: any) => {
  114. message.msgSuccess("发送成功")
  115. })
  116. }
  117. </script>
  118. <style scoped></style>