|
@@ -1,14 +1,14 @@
|
|
|
<script setup lang="ts">
|
|
|
import {ref} from 'vue';
|
|
|
-import {ElInput, ElIcon, ElButton} from 'element-plus';
|
|
|
+import {ElIcon, ElButton} from 'element-plus';
|
|
|
import userIcon from '@assets/images/login/user.webp';
|
|
|
import posswordIcon from '@assets/images/login/passowrd.webp';
|
|
|
import enterpriseIcon from '@assets/images/login/enterprise.webp';
|
|
|
import {PreviewOpen, PreviewCloseOne} from '@icon-park/vue-next';
|
|
|
import {useToggle} from '@vueuse/core';
|
|
|
import {RouterLink} from 'vue-router';
|
|
|
-import {useFieldItem} from './hooks';
|
|
|
import {useI18n} from 'vue-i18n';
|
|
|
+import {LoginField} from '@components';
|
|
|
|
|
|
defineOptions({name: 'LoginInfo'});
|
|
|
|
|
@@ -20,12 +20,6 @@ function onTabClick(value: number) {
|
|
|
const [isPassword, togglePassword] = useToggle(true);
|
|
|
const [remberPassword, toggleRemberPassword] = useToggle();
|
|
|
|
|
|
-const {value: nameValue, errorMessage: nameErrorMessage} = useFieldItem('name');
|
|
|
-const {value: passwordValue, errorMessage: passwordErrorMessage}
|
|
|
- = useFieldItem('password');
|
|
|
-const {value: companyValue, errorMessage: companyErrorMessage}
|
|
|
- = useFieldItem('company');
|
|
|
-
|
|
|
const {t} = useI18n();
|
|
|
</script>
|
|
|
|
|
@@ -48,21 +42,16 @@ const {t} = useI18n();
|
|
|
</div>
|
|
|
|
|
|
<div class="info">
|
|
|
- <ElInput
|
|
|
- v-model="nameValue"
|
|
|
- name="userName"
|
|
|
+ <LoginField
|
|
|
+ name="name"
|
|
|
:placeholder="t('login.placeholder.userName')"
|
|
|
>
|
|
|
<template #prefix>
|
|
|
<img :src="userIcon" class="input-icon" />
|
|
|
</template>
|
|
|
- </ElInput>
|
|
|
- <p :class="['error-tip', {'error-top-hidden': !nameErrorMessage}]">
|
|
|
- {{nameErrorMessage}}
|
|
|
- </p>
|
|
|
+ </LoginField>
|
|
|
|
|
|
- <ElInput
|
|
|
- v-model="passwordValue"
|
|
|
+ <LoginField
|
|
|
name="password"
|
|
|
:placeholder="t('login.placeholder.password')"
|
|
|
:type="isPassword ? 'password' : 'text'"
|
|
@@ -80,23 +69,16 @@ const {t} = useI18n();
|
|
|
<PreviewCloseOne v-if="isPassword" theme="filled" fill="#B6B6B6" />
|
|
|
</ElIcon>
|
|
|
</template>
|
|
|
- </ElInput>
|
|
|
- <p :class="['error-tip', {'error-top-hidden': !passwordErrorMessage}]">
|
|
|
- {{passwordErrorMessage}}
|
|
|
- </p>
|
|
|
+ </LoginField>
|
|
|
|
|
|
- <ElInput
|
|
|
- v-model="companyValue"
|
|
|
- name="userName"
|
|
|
+ <LoginField
|
|
|
+ name="company"
|
|
|
:placeholder="t('login.placeholder.company')"
|
|
|
>
|
|
|
<template #prefix>
|
|
|
<img :src="enterpriseIcon" class="input-icon" />
|
|
|
</template>
|
|
|
- </ElInput>
|
|
|
- <p :class="['error-tip', {'error-top-hidden': !companyErrorMessage}]">
|
|
|
- {{companyErrorMessage}}
|
|
|
- </p>
|
|
|
+ </LoginField>
|
|
|
|
|
|
<div class="operation">
|
|
|
<span
|