From db2339e341668d14506c114ee88d6d143d4813b0 Mon Sep 17 00:00:00 2001
From: xuyonghao <898441624@qq.com>
Date: 星期三, 27 十一月 2024 15:33:16 +0800
Subject: [PATCH] 图标修改

---
 src/views/login/components/login-form.vue |  320 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 220 insertions(+), 100 deletions(-)

diff --git a/src/views/login/components/login-form.vue b/src/views/login/components/login-form.vue
index 0b874fe..7f5afed 100644
--- a/src/views/login/components/login-form.vue
+++ b/src/views/login/components/login-form.vue
@@ -1,6 +1,6 @@
 <template>
   <div class="login-form-wrapper">
-    <div class="login-form-title">{{ $t("login.form.title") }}</div>
+    <div class="login-form-title">{{ $t('login.form.title') }}</div>
     <!--    <div class="login-form-sub-title">{{ $t('login.form.title') }}</div>-->
     <div class="login-form-error-msg">{{ errorMessage }}</div>
     <a-form
@@ -12,11 +12,11 @@
     >
       <a-form-item
         field="email"
-        :rules="[{ required: true, message: '璇疯緭鍏ラ偖绠�' }]"
+        :rules="[{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕' }]"
         :validate-trigger="['change', 'blur']"
         hide-label
       >
-        <a-input v-model="userInfo.email" placeholder="璇疯緭鍏ラ偖绠�">
+        <a-input v-model="userInfo.email" placeholder="璇疯緭鍏ョ敤鎴峰悕">
           <template #prefix>
             <icon-user />
           </template>
@@ -40,129 +40,249 @@
       </a-form-item>
       <a-space :size="16" direction="vertical">
         <div class="login-form-password-actions">
-          <a-checkbox
+          <!-- <a-checkbox
             checked="rememberPassword"
             :model-value="loginConfig.rememberPassword"
             @change="setRememberPassword as any"
           >
-            {{ $t("login.form.rememberPassword") }}
-          </a-checkbox>
-          <a-link>{{ $t("login.form.forgetPassword") }}</a-link>
+            {{ $t('login.form.rememberPassword') }}
+          </a-checkbox> -->
+          <!-- <a-link>{{ $t("login.form.forgetPassword") }}</a-link> -->
         </div>
         <a-button type="primary" html-type="submit" long :loading="loading">
-          {{ $t("login.form.login") }}
+          {{ $t('login.form.login') }}
         </a-button>
+        <div class="container">
+          娌℃湁璐︽埛锛�
+          <button class="register-button" @click="showRegisterModal = true">
+            <span>
+              娉ㄥ唽
+            </span>
+          </button>
+        </div>
         <!-- <a-button type="text" long class="login-form-register-btn">
           {{ $t('login.form.register') }}
         </a-button> -->
       </a-space>
     </a-form>
   </div>
+  <a-modal
+    v-model:visible="showRegisterModal"
+    title="娉ㄥ唽璐︽埛"
+    @ok="handleRegister()"
+    @cancel="showRegisterModal = false"
+  >
+    <a-form
+      ref="registerForm"
+      :model="registerInfo"
+      class="register-form"
+      layout="vertical"
+    >
+      <a-form-item field="loginName" :rules="[{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕!' }]" hide-label>
+        <a-input v-model="registerInfo.loginName" placeholder="璇疯緭鍏ョ敤鎴峰悕">
+        </a-input>
+      </a-form-item>
+
+      <a-form-item field="email" :rules="[{ required: true, message: '璇疯緭鍏ラ偖绠�!' }]" hide-label>
+        <a-input v-model="registerInfo.email" placeholder="璇疯緭鍏ラ偖绠�">
+        </a-input>
+      </a-form-item>
+
+      <a-form-item field="userName" :rules="[{ required: true, message: '璇疯緭鍏ュ鍚�!' }]" hide-label>
+        <a-input v-model="registerInfo.userName" placeholder="璇疯緭鍏ュ鍚�">
+        </a-input>
+      </a-form-item>
+
+      <a-form-item field="phoneNumber" :rules="[{ required: true, message: '璇疯緭鍏ョ數璇濆彿鐮�!' }]" hide-label>
+        <a-input v-model="registerInfo.phoneNumber" placeholder="璇疯緭鍏ョ數璇濆彿鐮�">
+        </a-input>
+      </a-form-item>
+
+      <a-form-item field="psw" :rules="[{ required: true, message: '璇疯緭鍏ュ瘑鐮�!' }]" hide-label>
+        <a-input-password v-model="registerInfo.psw" placeholder="璇疯緭鍏ュ瘑鐮�">
+        </a-input-password>
+      </a-form-item>
+
+      <a-space direction="vertical" size="large">
+        <a-select :style="{width:'320px'}" placeholder="閫夋嫨Tenant"  v-model="registerInfo.selectedTenant" allow-create>
+          <a-option :value="registerInfo.loginName">{{ registerInfo.loginName }}</a-option>
+          <a-option>1</a-option>
+          <a-option>2</a-option>
+        </a-select>
+      </a-space>
+    </a-form>
+  </a-modal>
 </template>
 
 <script lang="ts" setup>
-import { reactive, ref } from "vue";
-import { useRouter } from "vue-router";
-import { Message } from "@arco-design/web-vue";
-import { ValidatedError } from "@arco-design/web-vue/es/form/interface";
-import { useI18n } from "vue-i18n";
-import { useStorage } from "@vueuse/core";
-import { useUserStore } from "@/store";
-import useLoading from "@/hooks/loading";
-import type { LoginData } from "@/api/user";
-import { rsaPsw } from "@/utils/ras";
+  import { reactive, ref } from 'vue';
+  import { useRouter } from 'vue-router';
+  import { Message } from '@arco-design/web-vue';
+  import { ValidatedError } from '@arco-design/web-vue/es/form/interface';
+  import { useI18n } from 'vue-i18n';
+  import { useStorage } from '@vueuse/core';
+  import { useUserStore, userModelState } from '@/store';
+  import useLoading from '@/hooks/loading';
+  import type { LoginData } from '@/api/user';
+  import { rsaPsw } from '@/utils/ras';
+  import axios from 'axios';
 
-const router = useRouter();
-const { t } = useI18n();
-const errorMessage = ref("");
-const { loading, setLoading } = useLoading();
-const userStore = useUserStore();
+  const router = useRouter();
+  const { t } = useI18n();
+  const errorMessage = ref('');
+  const { loading, setLoading } = useLoading();
+  const userStore = useUserStore();
+  const modelStore = userModelState();
 
-const loginConfig = useStorage("login-config", {
-  rememberPassword: true,
-  email: "", // 婕旂ず榛樿鍊�
-  password: "" // demo default value
-});
-const userInfo = reactive({
-  email: "", // 婕旂ず榛樿鍊�
-  password: "" // demo default value
-});
+  const loginConfig = useStorage('login-config', {
+    rememberPassword: true,
+    email: '', // 婕旂ず榛樿鍊�
+    password: '', // demo default value
+  });
+  const userInfo = reactive({
+    email: '', // 婕旂ず榛樿鍊�
+    password: '', // demo default value
+  });
 
-const handleSubmit = async ({
-                              errors,
-                              values
-                            }: {
-  errors: Record<string, ValidatedError> | undefined;
-  values: Record<string, any>;
-}) => {
-  if (loading.value) return;
-  if (!errors) {
-    setLoading(true);
-    try {
-      const rsaPassWord = rsaPsw(values.password) as string;
-      console.log(values, "鐧诲綍淇℃伅");
-      let goto = await userStore.login({
-        email: values.email,
-        password: rsaPassWord
-      } as LoginData);
-      const { redirect, ...othersQuery } = router.currentRoute.value.query;
-      router.push({
-        name: goto,
-        query: {
-          ...othersQuery
-        }
-      });
-      Message.success(t("鐧诲綍鎴愬姛"));
-      const { rememberPassword } = loginConfig.value;
-      const { email, password } = values;
-      // 瀹為檯鐢熶骇鐜闇�瑕佽繘琛屽姞瀵嗗瓨鍌ㄣ��
-      // The actual production environment requires encrypted storage.
-      loginConfig.value.email = rememberPassword ? email : "";
-      loginConfig.value.password = rememberPassword ? password : "";
-    } catch (err) {
-      errorMessage.value = (err as Error).message;
-    } finally {
-      setLoading(false);
+  const handleSubmit = async ({
+    errors,
+    values,
+  }: {
+    errors: Record<string, ValidatedError> | undefined;
+    values: Record<string, any>;
+  }) => {
+    if (loading.value) return;
+    if (!errors) {
+      setLoading(true);
+      try {
+        const rsaPassWord = rsaPsw(values.password) as string;
+        console.log(values, '鐧诲綍淇℃伅');
+        let goto = await userStore.login({
+          email: values.email,
+          password: rsaPassWord,
+        } as LoginData);
+        const { redirect, ...othersQuery } = router.currentRoute.value.query;
+        router.push({
+          name: goto,
+          query: {
+            ...othersQuery,
+          },
+        });
+
+        const url = window.location.origin;
+        localStorage.setItem('httpUrl', url);
+        modelStore.getHrefUrl(url);
+        Message.success(t('鐧诲綍鎴愬姛'));
+        const { rememberPassword } = loginConfig.value;
+        const { email, password } = values;
+        // 瀹為檯鐢熶骇鐜闇�瑕佽繘琛屽姞瀵嗗瓨鍌ㄣ��
+        // The actual production environment requires encrypted storage.
+        loginConfig.value.email = rememberPassword ? email : '';
+        loginConfig.value.password = rememberPassword ? password : '';
+      } catch (err) {
+        errorMessage.value = (err as Error).message;
+      } finally {
+        setLoading(false);
+      }
     }
-  }
-};
-const setRememberPassword = (value: boolean) => {
-  loginConfig.value.rememberPassword = value;
-};
+  };
+  const setRememberPassword = (value: boolean) => {
+    loginConfig.value.rememberPassword = value;
+  };
+
+  const showRegisterModal = ref(false);
+  const registerInfo = reactive({
+    createTime: '',
+    deptName: '',
+    email: '',
+    loginName: '',
+    nickName: '',
+    phoneNumber: '',
+    psw: '',
+    role: '',
+    status: '',
+    userId: '',
+    userName: '',
+  });
+
+  const handleRegister = async () => {
+    const user = {
+      createTime: registerInfo.createTime,
+      deptName: registerInfo.deptName,
+      email: registerInfo.email,
+      loginName: registerInfo.loginName,
+      nickName: registerInfo.nickName,
+      phoneNumber: registerInfo.phoneNumber,
+      psw: registerInfo.psw,
+      role: registerInfo.role,
+      status: registerInfo.status,
+      userId: registerInfo.userId,
+      userName: registerInfo.userName,
+    };
+    try {
+      const response = await axios.post('base/system/sign_in', { user });
+      console.log('娉ㄥ唽鎴愬姛锛�', response.data);
+      showRegisterModal.value = false;
+    } catch (error) {
+      console.error('娉ㄥ唽澶辫触锛�', error);
+    }
+  };
+
 </script>
 
 <style lang="less" scoped>
-.login-form {
-&-wrapper {
-   width: 320px;
- }
+  .login-form {
+    &-wrapper {
+      width: 320px;
+    }
 
-&-title {
-   color: var(--color-text-1);
-   font-weight: 500;
-   font-size: 24px;
-   line-height: 32px;
- }
+    &-title {
+      color: var(--color-text-1);
+      font-weight: 500;
+      font-size: 24px;
+      line-height: 32px;
+    }
 
-&-sub-title {
-   color: var(--color-text-3);
-   font-size: 16px;
-   line-height: 24px;
- }
+    &-sub-title {
+      color: var(--color-text-3);
+      font-size: 16px;
+      line-height: 24px;
+    }
 
-&-error-msg {
-   height: 32px;
-   color: rgb(var(--red-6));
-   line-height: 32px;
- }
+    &-error-msg {
+      height: 32px;
+      color: rgb(var(--red-6));
+      line-height: 32px;
+    }
 
-&-password-actions {
-   display: flex;
-   justify-content: space-between;
- }
+    &-password-actions {
+      display: flex;
+      justify-content: space-between;
+    }
 
-&-register-btn {
-   color: var(--color-text-3) !important;
- }
-}
+    &-register-btn {
+      color: var(--color-text-3) !important;
+    }
+  }
+  .container {
+    text-align: right;
+    padding: 1px;
+  }
+  .register-button {
+    display: inline-block;
+    padding: 5px 10px;
+    font-size: 13px;
+    color: #ffffff;
+    background-color: #3573f8;
+    border: none;
+    border-radius: 3px;
+    cursor: pointer;
+    transition: background-color 0.3s;
+  }
+  .register-button:hover {
+    background-color: #63a1ef;
+  }
+  .register-form {
+    width: 100%;
+  }
 </style>

--
Gitblit v1.8.0