Просмотр исходного кода

feat: 注册以及修改密码的校验

Lambert 1 неделя назад
Родитель
Сommit
1b46ff99c0
3 измененных файлов с 31 добавлено и 12 удалено
  1. 3 0
      src/api/login/index.ts
  2. 13 7
      src/view/register/index.vue
  3. 15 5
      src/view/user/password.vue

+ 3 - 0
src/api/login/index.ts

@@ -40,5 +40,8 @@ export function useLoginApi() {
     checkUserNamePhoneExists: (query?: object) => {
       return request.postRequest(basePath, 'Personnel', 'CheckUserNamePhoneExists', query)
     },
+    validatePassword: (query?: object) => {
+      return request.postRequest(basePath, 'Personnel', 'ValidatePassword', query);
+    },
   }
 }

+ 13 - 7
src/view/register/index.vue

@@ -26,8 +26,8 @@
         <van-cell-group inset>
           <van-field v-model="state.form.userName" label="登录账号" placeholder="登录账号"
             @blur="checkUserNamePhoneExists('userName')" :rules="[{ required: true, message: '请填写登录账号' }]" />
-          <van-field v-model="state.form.password" type="password" label="密码" placeholder="密码"
-            :rules="[{ required: true, validator: checkPassword, }]" />
+          <van-field v-model="state.form.password" type="password" label="密码" placeholder="密码" @blur="checkPassword"
+            :rules="[{ required: true, message: '请输入密码'}]" />
           <van-field v-model="state.form.confirmPassword" type="password" label="确认密码" placeholder="确认密码"
             :rules="[{ required: true, validator: confirmPasswordSame, message: '两次输入的密码不一致' }]" />
         </van-cell-group>
@@ -448,11 +448,17 @@ const nextStep = async () => {
   }
 }
 
-const checkPassword = (value: any) => {
-  let checkResult = isPasswordValid(value)
-  if (!checkResult.isPassed) {
-    return checkResult.errorMsg
-  }
+// const checkPassword = (value: any) => {
+  // let checkResult = isPasswordValid(value)
+  // if (!checkResult.isPassed) {
+  //   return checkResult.errorMsg
+  // }
+// }
+
+const checkPassword = async() => {
+  let resquest = loginApi.validatePassword({ password: state.form.password })
+
+  await to(resquest)
 }
 
 const confirmPasswordSame = (value: any) => {

+ 15 - 5
src/view/user/password.vue

@@ -45,6 +45,7 @@
   import 'cropperjs/dist/cropper.css'
   import axios from 'axios' 
   import crypto from 'sm-crypto';
+  import { useLoginApi } from '/@/api/login'
   const sm3 = crypto.sm3;
   const router = useRouter()
   const storesUseUserInfo = useUserInfo()
@@ -53,6 +54,7 @@
   const formRef = ref()
   const dictApi = useDictApi()
   const userSexList = ref(<RowDicDataType[]>[])
+  const loginApi = useLoginApi()
   const state = reactive({
     form: {
       oldPassword: '',
@@ -67,11 +69,19 @@
     }
   })
   const checkPassword = (value: string) => {
-    if (/^[\w\S]{6,18}$/.test(value) && /[a-z]+/.test(value) && /[A-Z]+/.test(value) && /\d+/.test(value) && /[^a-zA-Z0-9]+/.test(value)) {
-      return true
-    } else {
-      return '密码必须包含大小写字母、数字和特殊字符,长度在6~18之间'
-    }
+    // if (/^[\w\S]{6,18}$/.test(value) && /[a-z]+/.test(value) && /[A-Z]+/.test(value) && /\d+/.test(value) && /[^a-zA-Z0-9]+/.test(value)) {
+    //   return true
+    // } else {
+    //   return '密码必须包含大小写字母、数字和特殊字符,长度在6~18之间'
+    // }
+
+    loginApi.validatePassword({ password: value })
+      .then(res => {
+        return true
+      })
+      .catch(() => {
+        return "密码不合法"
+      })
   }
   const checkConfirmPassword = (value: string) => {
     if (value !== state.form.newPassword) {