Browse Source

feat(api): new savinng 8

gemercheung 3 years ago
parent
commit
e162c2a100

+ 8 - 0
src/api/sys/model/userModel.ts

@@ -8,6 +8,14 @@ import type { UserInfo } from '/#/store';
 //   captcha: string;
 //   captcha: string;
 // }
 // }
 
 
+export interface RegisterParams {
+  password: string;
+  authCode?: string;
+  companyName?: string;
+  managerPhone: string;
+  managerName: string;
+}
+
 export interface LoginParams {
 export interface LoginParams {
   password: string;
   password: string;
   phoneNum?: string;
   phoneNum?: string;

+ 27 - 5
src/api/sys/user.ts

@@ -20,18 +20,32 @@ enum Api {
   GetUserInfo = '/kankan-api/api/user/getUserInfo',
   GetUserInfo = '/kankan-api/api/user/getUserInfo',
   updatePassword = '/kankan-api/api/manager/user/updatePassword',
   updatePassword = '/kankan-api/api/manager/user/updatePassword',
   GetPermCode = '/getPermCode',
   GetPermCode = '/getPermCode',
+  getEmailAuthCode = '/kankan-api/api/sso/user/getEmailAuthCode',
 }
 }
 
 
 /**
 /**
  * @description: user login api
  * @description: user login api
  */
  */
 export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
 export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
-  // const form = new FormData();
-  // const encryptPassword: string = encodeStr(window.btoa(params.password));
-  // form.append('username', params.username);
-  // form.append('password', encryptPassword);
-  // form.append('captcha', params.captcha);
+  const paramData: LoginParams = {
+    ...params,
+    password: encodeStr(window.btoa(params.password)),
+  };
 
 
+  return defHttp.post<LoginResultModel>(
+    {
+      url: Api.Login,
+      // params,
+      params: paramData,
+      headers: { 'Content-Type': ContentTypeEnum.JSON },
+    },
+    {
+      errorMessageMode: mode,
+    },
+  );
+}
+
+export function RegisterApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
   const paramData: LoginParams = {
   const paramData: LoginParams = {
     ...params,
     ...params,
     password: encodeStr(window.btoa(params.password)),
     password: encodeStr(window.btoa(params.password)),
@@ -60,6 +74,14 @@ export function getUserInfo() {
 export function getPermCode() {
 export function getPermCode() {
   return defHttp.get<string[]>({ url: Api.GetPermCode });
   return defHttp.get<string[]>({ url: Api.GetPermCode });
 }
 }
+export function getEmailAuthCodeApi(email: string) {
+  return defHttp.post<boolean>({
+    url: Api.getEmailAuthCode,
+    params: {
+      email,
+    },
+  });
+}
 
 
 export function doLogout() {
 export function doLogout() {
   return defHttp.get({ url: Api.Logout });
   return defHttp.get({ url: Api.Logout });

+ 2 - 0
src/locales/lang/zh-CN/sys.ts

@@ -101,8 +101,10 @@ export default {
     captcha: '验证码',
     captcha: '验证码',
     registrationLabel: '免费注册?',
     registrationLabel: '免费注册?',
     corporationName: '企业账号',
     corporationName: '企业账号',
+    // corporationName: '企业账号',
     corporationMail: '企业邮箱',
     corporationMail: '企业邮箱',
     fillMail: '请填写您的邮箱!',
     fillMail: '请填写您的邮箱!',
     fillMailCorrect: '请正确填写您的邮箱!',
     fillMailCorrect: '请正确填写您的邮箱!',
+    emailSMS: '邮箱验证码',
   },
   },
 };
 };

+ 1 - 1
src/settings/projectSetting.ts

@@ -48,7 +48,7 @@ const setting: ProjectConfig = {
   contentMode: ContentEnum.FULL,
   contentMode: ContentEnum.FULL,
 
 
   // Whether to display the logo
   // Whether to display the logo
-  showLogo: false,
+  showLogo: true,
 
 
   // Whether to show footer
   // Whether to show footer
   showFooter: false,
   showFooter: false,

+ 31 - 8
src/views/sys/login/RegisterForm.vue

@@ -2,18 +2,18 @@
   <template v-if="getShow">
   <template v-if="getShow">
     <LoginFormTitle class="enter-x" />
     <LoginFormTitle class="enter-x" />
     <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
     <Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef">
-      <FormItem name="account" class="enter-x">
+      <FormItem name="companyName" class="enter-x">
         <Input
         <Input
           class="fix-auto-fill"
           class="fix-auto-fill"
           size="large"
           size="large"
-          v-model:value="formData.account"
+          v-model:value="formData.companyName"
           :placeholder="t('sys.login.corporationName')"
           :placeholder="t('sys.login.corporationName')"
         />
         />
       </FormItem>
       </FormItem>
-      <FormItem name="mobile" class="enter-x">
+      <FormItem name="managerPhone" class="enter-x">
         <Input
         <Input
           size="large"
           size="large"
-          v-model:value="formData.mobile"
+          v-model:value="formData.managerPhone"
           :placeholder="t('sys.login.corporationMail')"
           :placeholder="t('sys.login.corporationMail')"
           class="fix-auto-fill"
           class="fix-auto-fill"
         />
         />
@@ -22,9 +22,11 @@
         <CountdownInput
         <CountdownInput
           size="large"
           size="large"
           class="fix-auto-fill"
           class="fix-auto-fill"
-          v-model:value="formData.sms"
-          :placeholder="t('sys.login.smsCode')"
+          v-model:value="formData.authCode"
+          :placeholder="t('sys.login.emailSMS')"
+          :sendCodeApi="sendEmailCode"
         />
         />
+        <!-- :sendCodeApi="" -->
       </FormItem>
       </FormItem>
       <FormItem name="password" class="enter-x">
       <FormItem name="password" class="enter-x">
         <StrengthMeter
         <StrengthMeter
@@ -73,6 +75,7 @@
   import { CountdownInput } from '/@/components/CountDown';
   import { CountdownInput } from '/@/components/CountDown';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from './useLogin';
   import { useLoginState, useFormRules, useFormValid, LoginStateEnum } from './useLogin';
+  import { RegisterApi, getEmailAuthCodeApi } from '/@/api/sys/user';
 
 
   const FormItem = Form.Item;
   const FormItem = Form.Item;
   const InputPassword = Input.Password;
   const InputPassword = Input.Password;
@@ -83,11 +86,12 @@
   const loading = ref(false);
   const loading = ref(false);
 
 
   const formData = reactive({
   const formData = reactive({
-    account: '',
+    companyName: '',
+    managerPhone: '',
     password: '',
     password: '',
     confirmPassword: '',
     confirmPassword: '',
     mobile: '',
     mobile: '',
-    sms: '',
+    authCode: '',
     policy: false,
     policy: false,
   });
   });
 
 
@@ -96,9 +100,28 @@
 
 
   const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER);
   const getShow = computed(() => unref(getLoginState) === LoginStateEnum.REGISTER);
 
 
+  async function sendEmailCode(): Promise<boolean> {
+    const form = unref(formRef);
+    if (!form) {
+      return Promise.resolve(false);
+    }
+    if (formData.managerPhone?.length > 0) {
+      try {
+        await getEmailAuthCodeApi(formData.managerPhone);
+        return Promise.resolve(true);
+      } catch (error) {
+        return Promise.resolve(false);
+      }
+    } else {
+      return Promise.resolve(false);
+    }
+  }
+
   async function handleRegister() {
   async function handleRegister() {
     const data = await validForm();
     const data = await validForm();
     if (!data) return;
     if (!data) return;
     console.log(data);
     console.log(data);
+    const res = await RegisterApi(formData);
+    console.log(res);
   }
   }
 </script>
 </script>

+ 17 - 5
src/views/sys/login/useLogin.ts

@@ -44,7 +44,7 @@ export function useFormRules(formData?: Recordable) {
   const getAccountFormRule = computed(() => createRule(t('sys.login.accountPlaceholder')));
   const getAccountFormRule = computed(() => createRule(t('sys.login.accountPlaceholder')));
   const getPasswordFormRule = computed(() => createRule(t('sys.login.passwordPlaceholder')));
   const getPasswordFormRule = computed(() => createRule(t('sys.login.passwordPlaceholder')));
   const getSmsFormRule = computed(() => createRule(t('sys.login.smsPlaceholder')));
   const getSmsFormRule = computed(() => createRule(t('sys.login.smsPlaceholder')));
-  const getMobileFormRule = computed(() => createRule(t('sys.login.mobilePlaceholder')));
+  // const getMobileFormRule = computed(() => createRule(t('sys.login.fillMail')));
 
 
   const validatePolicy = async (_: RuleObject, value: boolean) => {
   const validatePolicy = async (_: RuleObject, value: boolean) => {
     return !value ? Promise.reject(t('sys.login.policyPlaceholder')) : Promise.resolve();
     return !value ? Promise.reject(t('sys.login.policyPlaceholder')) : Promise.resolve();
@@ -62,21 +62,33 @@ export function useFormRules(formData?: Recordable) {
     };
     };
   };
   };
 
 
+  const validateEmail = (_: RuleObject, value: string) => {
+    const mail_reg = /\S+@\S+\.\S+/;
+    if (!value) {
+      return Promise.reject(t('sys.login.fillMail'));
+    }
+    if (!value.match(mail_reg)) {
+      return Promise.reject(t('sys.login.fillMailCorrect'));
+    }
+
+    return Promise.resolve();
+  };
+
   const getFormRules = computed((): { [k: string]: ValidationRule | ValidationRule[] } => {
   const getFormRules = computed((): { [k: string]: ValidationRule | ValidationRule[] } => {
     const accountFormRule = unref(getAccountFormRule);
     const accountFormRule = unref(getAccountFormRule);
     const passwordFormRule = unref(getPasswordFormRule);
     const passwordFormRule = unref(getPasswordFormRule);
     const smsFormRule = unref(getSmsFormRule);
     const smsFormRule = unref(getSmsFormRule);
-    const mobileFormRule = unref(getMobileFormRule);
+    // const mobileFormRule = unref(getMobileFormRule);
 
 
     const mobileRule = {
     const mobileRule = {
-      sms: smsFormRule,
-      mobile: mobileFormRule,
+      authCode: smsFormRule,
+      managerPhone: [{ validator: validateEmail, trigger: 'change' }],
     };
     };
     switch (unref(currentState)) {
     switch (unref(currentState)) {
       // register form rules
       // register form rules
       case LoginStateEnum.REGISTER:
       case LoginStateEnum.REGISTER:
         return {
         return {
-          account: accountFormRule,
+          companyName: accountFormRule,
           password: passwordFormRule,
           password: passwordFormRule,
           confirmPassword: [
           confirmPassword: [
             { validator: validateConfirmPassword(formData?.password), trigger: 'change' },
             { validator: validateConfirmPassword(formData?.password), trigger: 'change' },