瀏覽代碼

:sparkles: 忘记密码

Ritchie 1 年之前
父節點
當前提交
63e0f47f09

+ 1 - 1
src/assets/language/zh.json

@@ -939,7 +939,7 @@
     "email": "邮箱",
     "emailChina": "国内邮箱",
     "emailAbroad": "海外邮箱",
-    "phoneWordSpan": "输入注册时的手机号",
+    "phoneWordSpan": "输入注册时的手机号",
     "emailWordSpanChina": "输入注册时的国内邮箱",
     "phoneLabel": "手机号码",
     "phonePlaceholder": "请输入手机号码",

+ 6 - 3
src/service/login/forget-password.js

@@ -1,12 +1,15 @@
-import axios from '../../utils/axios'
+import axios from "../../utils/axios";
 // import { stringToUrl } from '@/common/js/utils';
 
 // 发送验证码
 export function sentForgetCode(params) {
-  return axios.get(`/userLogin/sendVerificationCodeMessage?phone=${params.phone}`, params);
+  return axios.get(
+    `/userLogin/sendVerificationCodeMessage?phone=${params.phone}`,
+    params
+  );
 }
 
 // 忘记密码提交
 export function checkForgetCode(params) {
-  return axios.post(`/SZWL-SERVER/tMessageCode/checkForgetCode?ifForeign=${params.ifForeign}&phoneOrEmail=${params.phoneOrEmail}&code=${params.code}`, params);
+  return axios.post(`/userLogin/updatePassword`, params);
 }

+ 38 - 17
src/views/login/ForgetPassword.vue

@@ -4,15 +4,12 @@
     <s-header :name="$t('forgetPassword.header')" :noback="false"></s-header>
     <div class="forgetPasswordFormBox">
       <van-form @submit="forgetPasswordSubmit">
-        <van-field v-model="username" name="username" placeholder="请输入账户手机号"
-          :rules="[{ required: true, message: '请输入账户手机号' }]" />
-        <br/>
-        <div >
+        <div>
           <span class="word2">{{ $t('forgetPassword.phoneWordSpan') }}</span>
           <van-field v-model="phone" name="phone" type="tel" :placeholder="$t('forgetPassword.phonePlaceholder')"
-            :rules="[{ required: true, message: $t('forgetPassword.phoneRequired') }]" />
+            :rules="[{ required: true, pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号' }]" />
         </div>
-        
+
         <van-field v-model="code" name="code" :placeholder="$t('forgetPassword.codePlaceholder')"
           :rules="[{ required: true, message: $t('forgetPassword.codeRequired') }]">
           <template #button>
@@ -20,8 +17,16 @@
               $t('forgetPassword.seedVerCode') : time + '秒后可重发' }}</van-button>
           </template>
         </van-field>
+
+        <van-field v-model="password" name="password" type="password" placeholder="输入新密码"
+          :rules="[{ required: true, message: $t('changePassword.passwordRequired') }]" />
+
+        <van-field v-model="passwordCheck" name="passwordCheck" type="password" placeholder="确认新密码"
+          :rules="[{ required: true, message: $t('changePassword.passwordCheckRequired') }]" />
+
         <van-button round type="primary" class="register" native-type="submit">{{ $t('forgetPassword.registerButton')
-        }}</van-button>
+          }}</van-button>
+
       </van-form>
     </div>
   </div>
@@ -29,27 +34,29 @@
 
 <script>
 import { ref, reactive, toRefs, onMounted } from 'vue';
-import { showToast, showFailToast  } from 'vant';
+import { showToast, showFailToast } from 'vant';
 import { setLocal, getLocal, styleUrl } from '@/common/js/utils';
 import sHeader from "@/components/SimpleHeader";
 import { useRouter } from "vue-router";
 import { sentForgetCode, checkForgetCode } from '@/service/login/forget-password';
+import md5 from 'js-md5';
 
 export default {
   setup() {
-    const username = ref(''); // 用户名
     const phone = ref(''); // 手机号
     const code = ref(''); // 验证码
     const verCodeTime = reactive({
       time: 0
     }); // 验证码间隔时间及状态
+
+    const password = ref('');
+    const passwordCheck = ref('');
+
     const router = useRouter();
     // 发送验证码
     const seedVerCode = async () => {
       const { data } = await sentForgetCode({
-        username: username.value,
         phone: phone.value,
-        hostName: 'Sunzee'
       });
       if (data.code === '00000') {
         showToast('验证码发送成功');
@@ -65,13 +72,22 @@ export default {
     }
     // 验证-表单
     const forgetPasswordSubmit = async () => {
+      if (password.value !== passwordCheck.value) {
+        showFailToast('两次密码不一致,请确认密码正确');
+        return false;
+      }
       const { data } = await checkForgetCode({
         phone: phone.value,
-        code: code.value
+        code: code.value,
+        password: md5(password.value)
       });
+
       if (data.code === '00000') {
-        showToast('校验成功');
-        router.push({ path: '/changepassword', query: { name: username.value } });
+        showToast('修改成功');
+        setTimeout(() => {
+          // router.push({ path: '/changepassword', query: { name: username.value } });
+          router.push({ path: '/login' });
+        }, 1500);
       } else {
         showFailToast(data.message);
       }
@@ -83,14 +99,19 @@ export default {
       verCodeTime.time = getLocal('forgetVerCodeTime');
       if (verCodeTime.time && verCodeTime.time !== '') {
         verCodeTime.time = parseInt(verCodeTime.time);
-        if (verCodeTime.time > 0) { verCodeTimeInterval(); }
-      } else { verCodeTime.time = 0; }
+        if (verCodeTime.time > 0) {
+          verCodeTimeInterval();
+        }
+      } else {
+        verCodeTime.time = 0;
+      }
     });
 
     return {
       ...toRefs(verCodeTime),
-      username,
       phone,
+      password,
+      passwordCheck,
       code,
       seedVerCode,
       forgetPasswordSubmit

+ 0 - 4
src/views/user/ChangePassword.vue

@@ -57,8 +57,6 @@ export default {
     // 引入语言
     const { t } = useI18n();
     const router = useRouter();
-    // const route = useRoute();
-    // const user = getLoginUser();
     const password = ref('');
     const passwordCheck = ref('');
     const phone = ref('');
@@ -72,9 +70,7 @@ export default {
 
     // 发送验证码
     const seedVerCode = async () => {
-
       reqApi.value = true;
-
       try {
         const { data } = await sentRegisterCode({
           phone: phone.value,