You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

248 lines
6.7 KiB

11 months ago
<template>
<div :class="prefixCls" class="relative w-full h-full px-4">
<div class="flex items-center absolute right-4 top-4">
<AppDarkModeToggle class="enter-x mr-2" v-if="!sessionTimeout" />
<AppLocalePicker
class="text-white enter-x xl:text-gray-600"
:show-text="false"
v-if="!sessionTimeout && showLocale"
/>
</div>
<span class="-enter-x xl:hidden">
<AppLogo :alwaysShowTitle="true" />
</span>
<div class="container relative h-full py-2 mx-auto sm:px-10">
<div class="flex h-full">
<div class="hidden min-h-full pl-4 mr-4 xl:flex xl:flex-col xl:w-6/12">
7 months ago
<!-- <AppLogo class="-enter-x" /> -->
<img src="../../../assets/images/logomini.png" class="w-8/12 mt-20 mx-auto" />
11 months ago
<div class="my-auto">
<img :alt="title" src="../../../assets/svg/login-box-bg.png" class="w-full mx-auto mb-15" />
<div class="mb-10 font-medium text-white -enter-x">
7 months ago
<!-- <span class="inline-block mt-4 text-3xl"> {{ t('sys.login.signInTitle') }}</span> -->
<span class="inline-block text-3xl text-black">AI辅助方案审核系统</span>
<div class="mb-15 font-normal text-red-600 -enter-x text-black">
本平台为互联网非涉密平台严禁处理传输国家秘密
</div>
11 months ago
</div>
7 months ago
<!-- <div class="mt-5 font-normal text-white dark:text-gray-500 -enter-x">
11 months ago
{{ t('sys.login.signInDesc') }}
7 months ago
</div> -->
11 months ago
</div>
</div>
<div class="flex w-full h-full py-5 xl:h-auto xl:py-0 xl:my-0 xl:w-6/12">
<div
:class="`${prefixCls}-form`"
class="relative w-full px-5 py-8 mx-auto my-auto rounded-md shadow-md xl:ml-16 xl:bg-transparent sm:px-8 xl:p-4 xl:shadow-none sm:w-3/4 lg:w-2/4 xl:w-auto enter-x"
>
<LoginForm />
<ForgetPasswordForm />
<RegisterForm />
<MobileForm />
<QrCodeForm />
</div>
</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { AppDarkModeToggle, AppLocalePicker, AppLogo } from '@/components/Application';
import { useGlobSetting } from '@/hooks/setting';
import { useDesign } from '@/hooks/web/useDesign';
7 months ago
// import { useI18n } from '@/hooks/web/useI18n';
11 months ago
import { useLocaleStore } from '@/store/modules/locale';
import { computed } from 'vue';
import ForgetPasswordForm from './ForgetPasswordForm.vue';
import LoginForm from './LoginForm.vue';
import MobileForm from './MobileForm.vue';
import QrCodeForm from './QrCodeForm.vue';
import RegisterForm from './RegisterForm.vue';
defineProps({
sessionTimeout: {
type: Boolean,
},
});
const globSetting = useGlobSetting();
const { prefixCls } = useDesign('login');
7 months ago
// const { t } = useI18n();
11 months ago
const localeStore = useLocaleStore();
const showLocale = localeStore.getShowPicker;
const title = computed(() => globSetting?.title ?? '');
</script>
<style lang="less">
@prefix-cls: ~'@{namespace}-login';
@logo-prefix-cls: ~'@{namespace}-app-logo';
@countdown-prefix-cls: ~'@{namespace}-countdown-input';
@dark-bg: #293146;
html[data-theme='dark'] {
.@{prefix-cls} {
background-color: @dark-bg;
&::before {
background-image: url('@/assets/svg/login-bg-dark.svg');
}
.ant-input,
.ant-input-password {
background-color: #232a3b;
}
/** 租户选择框颜色 */
.ant-select-selector {
background-color: #232a3b;
}
/** 记住我 */
.ant-checkbox-inner {
background-color: #232a3b;
}
.ant-btn:not(.ant-btn-link, .ant-btn-primary) {
border: 1px solid #4a5569;
}
&-form {
background: transparent !important;
}
.app-iconify {
color: #fff;
}
.ant-divider-inner-text {
color: @text-color-secondary;
}
}
}
.@{prefix-cls} {
min-height: 100%;
overflow: hidden;
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-xl) {
background-color: #293146;
.@{prefix-cls}-form {
background-color: #fff;
}
}
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin-left: -48%;
7 months ago
// background-image: url('@/assets/svg/login-bg.svg');
background-image: url('@/assets/svg/login-bg1.png');
11 months ago
background-repeat: no-repeat;
background-position: 100%;
background-size: auto 100%;
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-xl) {
display: none;
}
}
.@{logo-prefix-cls} {
position: absolute;
top: 12px;
height: 30px;
&__title {
color: #fff;
font-size: 16px;
}
img {
width: 32px;
}
}
.container {
.@{logo-prefix-cls} {
display: flex;
width: 60%;
height: 80px;
&__title {
color: #fff;
font-size: 24px;
}
img {
width: 48px;
}
}
}
&-sign-in-way {
.anticon {
color: #888;
font-size: 22px;
cursor: pointer;
&:hover {
color: @primary-color;
}
}
}
input:not([type='checkbox']) {
min-width: 360px;
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-xl) {
min-width: 320px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-lg) {
min-width: 260px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-md) {
min-width: 240px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-sm) {
min-width: 160px;
}
}
.@{countdown-prefix-cls} input {
min-width: unset;
}
}
// 有验证码图片 min-width要减小
.@{prefix-cls}:has(.ant-input-group-addon) {
input:not([type='checkbox']) {
min-width: 295px;
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-xl) {
min-width: 215px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-lg) {
min-width: 155px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-md) {
min-width: 135px;
}
/* stylelint-disable-next-line media-query-no-invalid */
@media (max-width: @screen-sm) {
min-width: 95px;
}
}
}
</style>