系统各配置优化
This commit is contained in:
parent
0e890d96c5
commit
dbc9d8b458
2
.env
2
.env
|
@ -2,7 +2,7 @@
|
||||||
VITE_PORT = 3100
|
VITE_PORT = 3100
|
||||||
|
|
||||||
# 网站标题
|
# 网站标题
|
||||||
VITE_GLOB_APP_TITLE = JeecgBoot 企业级低代码平台
|
VITE_GLOB_APP_TITLE = 哈尔滨师范大学评阅人员管理系统
|
||||||
|
|
||||||
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
|
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
|
||||||
VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin
|
VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin
|
||||||
|
|
|
@ -157,7 +157,7 @@
|
||||||
</style>
|
</style>
|
||||||
<div class="app-loading">
|
<div class="app-loading">
|
||||||
<div class="app-loading-wrap">
|
<div class="app-loading-wrap">
|
||||||
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
|
<!--<img src="/logo.png" class="app-loading-logo" alt="Logo" />-->
|
||||||
<div class="app-loading-dots">
|
<div class="app-loading-dots">
|
||||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 5.3 KiB |
|
@ -4,9 +4,10 @@
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="anticon" :class="getAppLogoClass" @click="goHome">
|
<div class="anticon" :class="getAppLogoClass" @click="goHome">
|
||||||
<img src="../../../assets/images/logo.png" />
|
<img style="width: 100%;" src="../../../assets/images/logo-red.png" />
|
||||||
<div class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
|
<div style="display: flex;" class="ml-2 truncate md:opacity-100" :class="getTitleClass" v-show="showTitle">
|
||||||
{{ title }}
|
<!-- {{ title }} -->
|
||||||
|
<!-- <span>英语四六级综合管理平台</span> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -62,10 +63,13 @@
|
||||||
padding-left: 7px;
|
padding-left: 7px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: all 0.2s ease;
|
transition: all 0.2s ease;
|
||||||
|
|
||||||
//左侧菜单模式和左侧菜单混合模式加渐变背景色
|
//左侧菜单模式和左侧菜单混合模式加渐变背景色
|
||||||
&.jeecg-layout-mix-sider-logo,&.jeecg-layout-menu-logo{
|
&.jeecg-layout-mix-sider-logo,
|
||||||
|
&.jeecg-layout-menu-logo {
|
||||||
background: @sider-logo-bg-color;
|
background: @sider-logo-bg-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
// &.light {
|
// &.light {
|
||||||
// border-bottom: 1px solid @border-color-base;
|
// border-bottom: 1px solid @border-color-base;
|
||||||
// }
|
// }
|
||||||
|
|
|
@ -1,6 +1,20 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="scrollbar">
|
<div class="scrollbar">
|
||||||
<div ref="wrap" :class="[wrapClass, 'scrollbar__wrap', native ? '' : 'scrollbar__wrap--hidden-default']" :style="style" @scroll="handleScroll">
|
<div ref="wrap" :class="[wrapClass, 'scrollbar__wrap', native ? '' : 'scrollbar__wrap--hidden-default']"
|
||||||
|
:style="style" @scroll="handleScroll">
|
||||||
|
<div style="display: flex; justify-content: center; align-items: center">
|
||||||
|
<span style="
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 700;
|
||||||
|
transition: all 0.5s;
|
||||||
|
line-height: normal;
|
||||||
|
padding: 5px;
|
||||||
|
">
|
||||||
|
评阅人员管理系统
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
<component :is="tag" ref="resize" :class="['scrollbar__view', viewClass]" :style="viewStyle">
|
<component :is="tag" ref="resize" :class="['scrollbar__view', viewClass]" :style="viewStyle">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
@ -11,12 +11,8 @@
|
||||||
|
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
<Menu @click="handleMenuClick">
|
<Menu @click="handleMenuClick">
|
||||||
<MenuItem key="doc" :text="t('layout.header.dropdownItemDoc')" icon="ion:document-text-outline" v-if="getShowDoc" />
|
<MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')"
|
||||||
<MenuDivider v-if="getShowDoc" />
|
icon="ant-design:edit-outlined" />
|
||||||
<MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" />
|
|
||||||
<MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" />
|
|
||||||
<MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" />
|
|
||||||
<MenuItem key="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" />
|
|
||||||
<!-- <MenuItem
|
<!-- <MenuItem
|
||||||
v-if="getUseLockPage"
|
v-if="getUseLockPage"
|
||||||
key="lock"
|
key="lock"
|
||||||
|
@ -242,6 +238,7 @@
|
||||||
&-dropdown-overlay {
|
&-dropdown-overlay {
|
||||||
// update-begin--author:liaozhiyang---date:20231226---for:【QQYUN-7512】顶部账号划过首次弹出时位置会变更一下
|
// update-begin--author:liaozhiyang---date:20231226---for:【QQYUN-7512】顶部账号划过首次弹出时位置会变更一下
|
||||||
width: 160px;
|
width: 160px;
|
||||||
|
|
||||||
// update-end--author:liaozhiyang---date:20231226---for:【QQYUN-7512】顶部账号划过首次弹出时位置会变更一下
|
// update-end--author:liaozhiyang---date:20231226---for:【QQYUN-7512】顶部账号划过首次弹出时位置会变更一下
|
||||||
.ant-dropdown-menu-item {
|
.ant-dropdown-menu-item {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
|
|
|
@ -3,15 +3,11 @@
|
||||||
<!-- left start -->
|
<!-- left start -->
|
||||||
<div :class="`${prefixCls}-left`">
|
<div :class="`${prefixCls}-left`">
|
||||||
<!-- logo -->
|
<!-- logo -->
|
||||||
<AppLogo v-if="getShowHeaderLogo || getIsMobile" :class="`${prefixCls}-logo`" :theme="getHeaderTheme" :style="getLogoWidth" />
|
<AppLogo v-if="getShowHeaderLogo || getIsMobile" :class="`${prefixCls}-logo`" :theme="getHeaderTheme"
|
||||||
<LayoutTrigger
|
:style="getLogoWidth" />
|
||||||
v-if="(getShowContent && getShowHeaderTrigger && !getSplit && !getIsMixSidebar) || getIsMobile"
|
<LayoutTrigger v-if="(getShowContent && getShowHeaderTrigger && !getSplit && !getIsMixSidebar) || getIsMobile"
|
||||||
:theme="getHeaderTheme"
|
:theme="getHeaderTheme" :sider="false" />
|
||||||
:sider="false"
|
|
||||||
/>
|
|
||||||
<LayoutBreadcrumb v-if="getShowContent && getShowBread" :theme="getHeaderTheme" />
|
<LayoutBreadcrumb v-if="getShowContent && getShowBread" :theme="getHeaderTheme" />
|
||||||
<!-- 欢迎语 -->
|
|
||||||
<span v-if="getShowContent && getShowBreadTitle && !getIsMobile" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> {{t('layout.header.welcomeIn')}} {{ title }} </span>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- left end -->
|
<!-- left end -->
|
||||||
|
|
||||||
|
@ -23,24 +19,13 @@
|
||||||
|
|
||||||
<!-- action -->
|
<!-- action -->
|
||||||
<div :class="`${prefixCls}-action`">
|
<div :class="`${prefixCls}-action`">
|
||||||
<AppSearch :class="`${prefixCls}-action__item `" v-if="getShowSearch" />
|
|
||||||
|
|
||||||
<ErrorAction v-if="getUseErrorHandle" :class="`${prefixCls}-action__item error-action`" />
|
<ErrorAction v-if="getUseErrorHandle" :class="`${prefixCls}-action__item error-action`" />
|
||||||
|
|
||||||
<Notify v-if="getShowNotice" :class="`${prefixCls}-action__item notify-item`" />
|
|
||||||
|
|
||||||
<FullScreen v-if="getShowFullScreen" :class="`${prefixCls}-action__item fullscreen-item`" />
|
<FullScreen v-if="getShowFullScreen" :class="`${prefixCls}-action__item fullscreen-item`" />
|
||||||
|
|
||||||
<LockScreen v-if="getUseLockPage" />
|
|
||||||
|
|
||||||
<AppLocalePicker v-if="getShowLocalePicker" :reload="true" :showText="false" :class="`${prefixCls}-action__item`" />
|
|
||||||
|
|
||||||
<UserDropDown :theme="getHeaderTheme" />
|
<UserDropDown :theme="getHeaderTheme" />
|
||||||
|
|
||||||
<SettingDrawer v-if="getShowSetting" :class="`${prefixCls}-action__item`" />
|
<SettingDrawer v-if="getShowSetting" :class="`${prefixCls}-action__item`" />
|
||||||
<!-- ai助手 -->
|
|
||||||
<Aide></Aide>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</Header>
|
</Header>
|
||||||
<LoginSelect ref="loginSelectRef" @success="loginSelectOk"></LoginSelect>
|
<LoginSelect ref="loginSelectRef" @success="loginSelectOk"></LoginSelect>
|
||||||
</template>
|
</template>
|
||||||
|
@ -249,10 +234,13 @@
|
||||||
.headerIntroductionClass {
|
.headerIntroductionClass {
|
||||||
color: rgba(255, 255, 255, 0.6);
|
color: rgba(255, 255, 255, 0.6);
|
||||||
}
|
}
|
||||||
.anticon, .truncate {
|
|
||||||
|
.anticon,
|
||||||
|
.truncate {
|
||||||
color: rgba(255, 255, 255, 0.8);
|
color: rgba(255, 255, 255, 0.8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//update-end---author:scott ---date::2022-09-30 for:默认隐藏顶部菜单面包屑--------------
|
//update-end---author:scott ---date::2022-09-30 for:默认隐藏顶部菜单面包屑--------------
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -65,13 +65,13 @@ const setting: ProjectConfig = {
|
||||||
// 头部配置
|
// 头部配置
|
||||||
headerSetting: {
|
headerSetting: {
|
||||||
// 背景色
|
// 背景色
|
||||||
bgColor: HEADER_PRESET_BG_COLOR_LIST[0],
|
bgColor: HEADER_PRESET_BG_COLOR_LIST[5],
|
||||||
// 固定头部
|
// 固定头部
|
||||||
fixed: true,
|
fixed: true,
|
||||||
// 是否显示顶部
|
// 是否显示顶部
|
||||||
show: true,
|
show: true,
|
||||||
// 主题
|
// 主题
|
||||||
theme: ThemeEnum.LIGHT,
|
theme: ThemeEnum.DARK,
|
||||||
// 开启锁屏功能
|
// 开启锁屏功能
|
||||||
useLockPage: true,
|
useLockPage: true,
|
||||||
// 显示全屏按钮
|
// 显示全屏按钮
|
||||||
|
@ -87,7 +87,7 @@ const setting: ProjectConfig = {
|
||||||
// 菜单配置
|
// 菜单配置
|
||||||
menuSetting: {
|
menuSetting: {
|
||||||
// 背景色
|
// 背景色
|
||||||
bgColor: SIDE_BAR_BG_COLOR_LIST[0],
|
bgColor: SIDE_BAR_BG_COLOR_LIST[3],
|
||||||
// 是否固定住左侧菜单
|
// 是否固定住左侧菜单
|
||||||
fixed: true,
|
fixed: true,
|
||||||
// 菜单折叠
|
// 菜单折叠
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<h1>学生信息</h1>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style></style>
|
|
|
@ -1,5 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<IndexDef v-if="indexStyle === 0"></IndexDef>
|
<div class="mod-home">
|
||||||
|
<h3>欢迎使用评阅人员管理系统</h3>
|
||||||
|
</div>
|
||||||
|
<!--<IndexDef v-if="indexStyle === 0"></IndexDef>
|
||||||
<IndexChart v-if="indexStyle === 1"></IndexChart>
|
<IndexChart v-if="indexStyle === 1"></IndexChart>
|
||||||
<IndexBdc v-if="indexStyle == 2"></IndexBdc>
|
<IndexBdc v-if="indexStyle == 2"></IndexBdc>
|
||||||
<IndexTask v-if="indexStyle == 3"></IndexTask>
|
<IndexTask v-if="indexStyle == 3"></IndexTask>
|
||||||
|
@ -11,14 +14,20 @@
|
||||||
<a-radio :value="2">业务统计</a-radio>
|
<a-radio :value="2">业务统计</a-radio>
|
||||||
<a-radio :value="3">我的任务</a-radio>
|
<a-radio :value="3">我的任务</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</div>
|
</div>-->
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { ref } from 'vue';
|
//import { ref } from 'vue';
|
||||||
import IndexDef from './homePage/IndexDef.vue';
|
//import IndexDef from './homePage/IndexDef.vue';
|
||||||
import IndexChart from './homePage/IndexChart.vue';
|
//import IndexChart from './homePage/IndexChart.vue';
|
||||||
import IndexBdc from './homePage/IndexBdc.vue';
|
//import IndexBdc from './homePage/IndexBdc.vue';
|
||||||
import IndexTask from './homePage/IndexTask.vue';
|
//import IndexTask from './homePage/IndexTask.vue';
|
||||||
|
|
||||||
const indexStyle = ref(0);
|
//const indexStyle = ref(0);
|
||||||
</script>
|
</script>
|
||||||
|
<style>
|
||||||
|
.mod-home {
|
||||||
|
line-height: 2.5;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -1,29 +1,30 @@
|
||||||
<template>
|
<template>
|
||||||
<LoginFormTitle v-show="getShow" class="enter-x" />
|
<LoginFormTitle v-show="getShow" class="enter-x" />
|
||||||
<Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef" v-show="getShow" @keypress.enter="handleLogin">
|
<Form class="p-4 enter-x" :model="formData" :rules="getFormRules" ref="formRef" v-show="getShow"
|
||||||
|
@keypress.enter="handleLogin">
|
||||||
<FormItem name="account" class="enter-x">
|
<FormItem name="account" class="enter-x">
|
||||||
<Input size="large" v-model:value="formData.account" :placeholder="t('sys.login.userName')" class="fix-auto-fill" />
|
<Input size="large" v-model:value="formData.account" :placeholder="t('sys.login.userName')"
|
||||||
|
class="fix-auto-fill" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem name="password" class="enter-x">
|
<FormItem name="password" class="enter-x">
|
||||||
<InputPassword size="large" visibilityToggle v-model:value="formData.password" :placeholder="t('sys.login.password')" />
|
<InputPassword size="large" visibilityToggle v-model:value="formData.password"
|
||||||
|
:placeholder="t('sys.login.password')" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<!--验证码-->
|
<!--验证码-->
|
||||||
<ARow class="enter-x">
|
<ARow class="enter-x">
|
||||||
<ACol :span="12">
|
<ACol :span="12">
|
||||||
<FormItem name="inputCode" class="enter-x">
|
<FormItem name="inputCode" class="enter-x">
|
||||||
<Input size="large" v-model:value="formData.inputCode" :placeholder="t('sys.login.inputCode')" style="min-width: 100px" />
|
<Input size="large" v-model:value="formData.inputCode" :placeholder="t('sys.login.inputCode')"
|
||||||
|
style="min-width: 100px" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</ACol>
|
</ACol>
|
||||||
<ACol :span="8">
|
<ACol :span="8">
|
||||||
<FormItem :style="{ 'text-align': 'right', 'margin-left': '20px' }" class="enter-x">
|
<FormItem :style="{ 'text-align': 'right', 'margin-left': '20px' }" class="enter-x">
|
||||||
<img
|
<img v-if="randCodeData.requestCodeSuccess" style="margin-top: 2px; max-width: initial"
|
||||||
v-if="randCodeData.requestCodeSuccess"
|
:src="randCodeData.randCodeImage" @click="handleChangeCheckCode" />
|
||||||
style="margin-top: 2px; max-width: initial"
|
<img v-else style="margin-top: 2px; max-width: initial" src="../../../assets/images/checkcode.png"
|
||||||
:src="randCodeData.randCodeImage"
|
@click="handleChangeCheckCode" />
|
||||||
@click="handleChangeCheckCode"
|
|
||||||
/>
|
|
||||||
<img v-else style="margin-top: 2px; max-width: initial" src="../../../assets/images/checkcode.png" @click="handleChangeCheckCode" />
|
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</ACol>
|
</ACol>
|
||||||
</ARow>
|
</ARow>
|
||||||
|
@ -76,10 +77,17 @@
|
||||||
<Divider class="enter-x">{{ t('sys.login.otherSignIn') }}</Divider>
|
<Divider class="enter-x">{{ t('sys.login.otherSignIn') }}</Divider>
|
||||||
|
|
||||||
<div class="flex justify-evenly enter-x" :class="`${prefixCls}-sign-in-way`">
|
<div class="flex justify-evenly enter-x" :class="`${prefixCls}-sign-in-way`">
|
||||||
<a @click="onThirdLogin('github')" title="github"><GithubFilled /></a>
|
<a @click="onThirdLogin('github')" title="github">
|
||||||
<a @click="onThirdLogin('wechat_enterprise')" title="企业微信"> <icon-font class="item-icon" type="icon-qiyeweixin3" /></a>
|
<GithubFilled />
|
||||||
<a @click="onThirdLogin('dingtalk')" title="钉钉"><DingtalkCircleFilled /></a>
|
</a>
|
||||||
<a @click="onThirdLogin('wechat_open')" title="微信"><WechatFilled /></a>
|
<a @click="onThirdLogin('wechat_enterprise')" title="企业微信"> <icon-font class="item-icon"
|
||||||
|
type="icon-qiyeweixin3" /></a>
|
||||||
|
<a @click="onThirdLogin('dingtalk')" title="钉钉">
|
||||||
|
<DingtalkCircleFilled />
|
||||||
|
</a>
|
||||||
|
<a @click="onThirdLogin('wechat_open')" title="微信">
|
||||||
|
<WechatFilled />
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</Form>
|
</Form>
|
||||||
<!-- 第三方登录相关弹框 -->
|
<!-- 第三方登录相关弹框 -->
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-loading">
|
<div class="app-loading">
|
||||||
<div class="app-loading-wrap">
|
<div class="app-loading-wrap">
|
||||||
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo">
|
<!--<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo">-->
|
||||||
<div class="app-loading-dots">
|
<div class="app-loading-dots">
|
||||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="app-loading-title">JeecgBoot 企业级低代码平台</div>
|
<div class="app-loading-title">哈尔滨师范大学</div>
|
||||||
|
<div class="app-loading-title">评阅人员管理系统</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -88,7 +89,6 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
html[data-theme='dark'] .app-loading {
|
html[data-theme='dark'] .app-loading {
|
||||||
background-color: #2c344a;
|
background-color: #2c344a;
|
||||||
}
|
}
|
||||||
|
@ -192,27 +192,30 @@
|
||||||
-webkit-animation-delay: 1.2s;
|
-webkit-animation-delay: 1.2s;
|
||||||
animation-delay: 1.2s;
|
animation-delay: 1.2s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes antRotate {
|
@keyframes antRotate {
|
||||||
to {
|
to {
|
||||||
-webkit-transform: rotate(405deg);
|
-webkit-transform: rotate(405deg);
|
||||||
transform: rotate(405deg);
|
transform: rotate(405deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes antRotate {
|
@-webkit-keyframes antRotate {
|
||||||
to {
|
to {
|
||||||
-webkit-transform: rotate(405deg);
|
-webkit-transform: rotate(405deg);
|
||||||
transform: rotate(405deg);
|
transform: rotate(405deg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes antSpinMove {
|
@keyframes antSpinMove {
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes antSpinMove {
|
@-webkit-keyframes antSpinMove {
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
|
@ -2,85 +2,64 @@
|
||||||
<div :class="prefixCls" class="login-background-img">
|
<div :class="prefixCls" class="login-background-img">
|
||||||
<AppLocalePicker class="absolute top-4 right-4 enter-x xl:text-gray-600" :showText="false" />
|
<AppLocalePicker class="absolute top-4 right-4 enter-x xl:text-gray-600" :showText="false" />
|
||||||
<AppDarkModeToggle class="absolute top-3 right-7 enter-x" />
|
<AppDarkModeToggle class="absolute top-3 right-7 enter-x" />
|
||||||
<div class="aui-logo" v-if="!getIsMobile">
|
|
||||||
<div>
|
|
||||||
<h3>
|
|
||||||
<img :src="logoImg" alt="jeecg" />
|
|
||||||
</h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-else class="aui-phone-logo">
|
|
||||||
<img :src="logoImg" alt="jeecg" />
|
|
||||||
</div>
|
|
||||||
<div v-show="type === 'login'">
|
<div v-show="type === 'login'">
|
||||||
<div class="aui-content">
|
<div class="aui-content">
|
||||||
<div class="aui-container">
|
<div class="aui-container">
|
||||||
<div class="aui-form">
|
<div class="aui-form">
|
||||||
<div class="aui-image">
|
<div class="aui-image">
|
||||||
<div class="aui-image-text">
|
<div class="aui-image-text">
|
||||||
<img :src="adTextImg" />
|
<div>
|
||||||
|
<span class="introduce-text1">哈尔滨师范大学</span>
|
||||||
|
<br>
|
||||||
|
<span class="introduce-text">评阅人员管理系统</span>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<!--<span class="introduce-text" style="font-size: 18px;">深入分析 多维展示</span>-->
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-formBox">
|
<div class="aui-formBox">
|
||||||
<div class="aui-formWell">
|
<div class="aui-formWell">
|
||||||
<div class="aui-flex aui-form-nav investment_title">
|
<div class="aui-flex aui-form-nav investment_title">
|
||||||
<div class="aui-flex-box" :class="activeIndex === 'accountLogin' ? 'activeNav on' : ''" @click="loginClick('accountLogin')"
|
<div class="aui-flex-box" :class="activeIndex === 'accountLogin' ? 'activeNav on' : ''"
|
||||||
>{{ t('sys.login.signInFormTitle') }}
|
@click="loginClick('accountLogin')">{{ t('sys.login.signInFormTitle') }}
|
||||||
</div>
|
|
||||||
<div class="aui-flex-box" :class="activeIndex === 'phoneLogin' ? 'activeNav on' : ''" @click="loginClick('phoneLogin')"
|
|
||||||
>{{ t('sys.login.mobileSignInFormTitle') }}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-form-box" style="height: 180px">
|
<div class="aui-form-box" style="height: 140px">
|
||||||
<a-form ref="loginRef" :model="formData" v-if="activeIndex === 'accountLogin'" @keyup.enter.native="loginHandleClick">
|
<a-form ref="loginRef" :model="formData" v-if="activeIndex === 'accountLogin'"
|
||||||
|
@keyup.enter.native="loginHandleClick">
|
||||||
<div class="aui-account">
|
<div class="aui-account">
|
||||||
<div class="aui-inputClear">
|
<div class="aui-inputClear">
|
||||||
<i class="icon icon-code"></i>
|
<i class="icon icon-code"></i>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-input class="fix-auto-fill" :placeholder="t('sys.login.userName')" v-model:value="formData.username" />
|
<a-input class="fix-auto-fill" :placeholder="t('sys.login.userName')"
|
||||||
|
v-model:value="formData.username" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-inputClear">
|
<div class="aui-inputClear">
|
||||||
<i class="icon icon-password"></i>
|
<i class="icon icon-password"></i>
|
||||||
<a-form-item>
|
<a-form-item>
|
||||||
<a-input class="fix-auto-fill" type="password" :placeholder="t('sys.login.password')" v-model:value="formData.password" />
|
<a-input class="fix-auto-fill" type="password" :placeholder="t('sys.login.password')"
|
||||||
|
v-model:value="formData.password" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-inputClear">
|
|
||||||
<i class="icon icon-code"></i>
|
|
||||||
<a-form-item>
|
|
||||||
<a-input class="fix-auto-fill" type="text" :placeholder="t('sys.login.inputCode')" v-model:value="formData.inputCode" />
|
|
||||||
</a-form-item>
|
|
||||||
<div class="aui-code">
|
|
||||||
<img v-if="randCodeData.requestCodeSuccess" :src="randCodeData.randCodeImage" @click="handleChangeCheckCode" />
|
|
||||||
<img v-else style="margin-top: 2px; max-width: initial" :src="codeImg" @click="handleChangeCheckCode" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-flex">
|
|
||||||
<div class="aui-flex-box">
|
|
||||||
<div class="aui-choice">
|
|
||||||
<a-input class="fix-auto-fill" type="checkbox" v-model:value="rememberMe" />
|
|
||||||
<span style="margin-left: 5px">{{ t('sys.login.rememberMe') }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-forget">
|
|
||||||
<a @click="forgetHandelClick"> {{ t('sys.login.forgetPassword') }}</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</a-form>
|
</a-form>
|
||||||
<a-form v-else ref="phoneFormRef" :model="phoneFormData" @keyup.enter.native="loginHandleClick">
|
<a-form v-else ref="phoneFormRef" :model="phoneFormData" @keyup.enter.native="loginHandleClick">
|
||||||
<div class="aui-account phone">
|
<div class="aui-account phone">
|
||||||
<div class="aui-inputClear phoneClear">
|
<div class="aui-inputClear phoneClear">
|
||||||
<a-input class="fix-auto-fill" :placeholder="t('sys.login.mobile')" v-model:value="phoneFormData.mobile" />
|
<a-input class="fix-auto-fill" :placeholder="t('sys.login.mobile')"
|
||||||
|
v-model:value="phoneFormData.mobile" />
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-inputClear">
|
<div class="aui-inputClear">
|
||||||
<a-input class="fix-auto-fill" :maxlength="6" :placeholder="t('sys.login.smsCode')" v-model:value="phoneFormData.smscode" />
|
<a-input class="fix-auto-fill" :maxlength="6" :placeholder="t('sys.login.smsCode')"
|
||||||
|
v-model:value="phoneFormData.smscode" />
|
||||||
<div v-if="showInterval" class="aui-code" @click="getLoginCode">
|
<div v-if="showInterval" class="aui-code" @click="getLoginCode">
|
||||||
<a>{{ t('component.countdown.normalText') }}</a>
|
<a>{{ t('component.countdown.normalText') }}</a>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="aui-code">
|
<div v-else class="aui-code">
|
||||||
<span class="aui-get-code code-shape">{{ t('component.countdown.sendText', [unref(timeRuning)]) }}</span>
|
<span class="aui-get-code code-shape">{{ t('component.countdown.sendText',
|
||||||
|
[unref(timeRuning)]) }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -92,42 +71,11 @@
|
||||||
{{ t('sys.login.loginButton') }}</a-button>
|
{{ t('sys.login.loginButton') }}</a-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="aui-flex">
|
<div class="aui-flex">
|
||||||
<a class="aui-linek-code aui-flex-box" @click="codeHandleClick">{{ t('sys.login.qrSignInFormTitle') }}</a>
|
<a class="aui-linek-code aui-flex-box" @click="registerHandleClick">{{ t('sys.login.registerButton')
|
||||||
</div>
|
}}</a>
|
||||||
<div class="aui-flex">
|
|
||||||
<a class="aui-linek-code aui-flex-box" @click="registerHandleClick">{{ t('sys.login.registerButton') }}</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a-form @keyup.enter.native="loginHandleClick">
|
|
||||||
<div class="aui-flex aui-third-text">
|
|
||||||
<div class="aui-flex-box aui-third-border">
|
|
||||||
<span>{{ t('sys.login.otherSignIn') }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-flex" :class="`${prefixCls}-sign-in-way`">
|
|
||||||
<div class="aui-flex-box">
|
|
||||||
<div class="aui-third-login">
|
|
||||||
<a title="github" @click="onThirdLogin('github')"><GithubFilled /></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-flex-box">
|
|
||||||
<div class="aui-third-login">
|
|
||||||
<a title="企业微信" @click="onThirdLogin('wechat_enterprise')"><icon-font class="item-icon" type="icon-qiyeweixin3" /></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-flex-box">
|
|
||||||
<div class="aui-third-login">
|
|
||||||
<a title="钉钉" @click="onThirdLogin('dingtalk')"><DingtalkCircleFilled /></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="aui-flex-box">
|
|
||||||
<div class="aui-third-login">
|
|
||||||
<a title="微信" @click="onThirdLogin('wechat_open')"><WechatFilled /></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a-form>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -148,9 +96,7 @@
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup name="login-mini">
|
<script lang="ts" setup name="login-mini">
|
||||||
import { getCaptcha, getCodeInfo } from '/@/api/sys/user';
|
import { getCaptcha, getCodeInfo } from '/@/api/sys/user';
|
||||||
import { computed, onMounted, reactive, ref, toRaw, unref } from 'vue';
|
import { onMounted, reactive, ref, toRaw, unref } from 'vue';
|
||||||
import codeImg from '/@/assets/images/checkcode.png';
|
|
||||||
import { Rule } from '/@/components/Form';
|
|
||||||
import { useUserStore } from '/@/store/modules/user';
|
import { useUserStore } from '/@/store/modules/user';
|
||||||
import { useMessage } from '/@/hooks/web/useMessage';
|
import { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import { useI18n } from '/@/hooks/web/useI18n';
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
|
@ -159,29 +105,22 @@
|
||||||
import MiniForgotpad from './MiniForgotpad.vue';
|
import MiniForgotpad from './MiniForgotpad.vue';
|
||||||
import MiniRegister from './MiniRegister.vue';
|
import MiniRegister from './MiniRegister.vue';
|
||||||
import MiniCodelogin from './MiniCodelogin.vue';
|
import MiniCodelogin from './MiniCodelogin.vue';
|
||||||
import logoImg from '/@/assets/loginmini/icon/jeecg_logo.png';
|
|
||||||
import adTextImg from '/@/assets/loginmini/icon/jeecg_ad_text.png';
|
import adTextImg from '/@/assets/loginmini/icon/jeecg_ad_text.png';
|
||||||
import { AppLocalePicker, AppDarkModeToggle } from '/@/components/Application';
|
import { AppLocalePicker, AppDarkModeToggle } from '/@/components/Application';
|
||||||
import { useLocaleStore } from '/@/store/modules/locale';
|
import { useLocaleStore } from '/@/store/modules/locale';
|
||||||
import { useDesign } from "/@/hooks/web/useDesign";
|
import { useDesign } from "/@/hooks/web/useDesign";
|
||||||
import { useAppInject } from "/@/hooks/web/useAppInject";
|
import { useAppInject } from "/@/hooks/web/useAppInject";
|
||||||
import { GithubFilled, WechatFilled, DingtalkCircleFilled, createFromIconfontCN } from '@ant-design/icons-vue';
|
|
||||||
|
|
||||||
const IconFont = createFromIconfontCN({
|
|
||||||
scriptUrl: '//at.alicdn.com/t/font_2316098_umqusozousr.js',
|
|
||||||
});
|
|
||||||
const { prefixCls } = useDesign('mini-login');
|
const { prefixCls } = useDesign('mini-login');
|
||||||
const { notification, createMessage } = useMessage();
|
const { notification, createMessage } = useMessage();
|
||||||
const userStore = useUserStore();
|
const userStore = useUserStore();
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const localeStore = useLocaleStore();
|
const localeStore = useLocaleStore();
|
||||||
const showLocale = localeStore.getShowPicker;
|
|
||||||
const randCodeData = reactive<any>({
|
const randCodeData = reactive<any>({
|
||||||
randCodeImage: '',
|
randCodeImage: '',
|
||||||
requestCodeSuccess: false,
|
requestCodeSuccess: false,
|
||||||
checkKey: null,
|
checkKey: null,
|
||||||
});
|
});
|
||||||
const rememberMe = ref<string>('0');
|
|
||||||
//手机号登录还是账号登录
|
//手机号登录还是账号登录
|
||||||
const activeIndex = ref<string>('accountLogin');
|
const activeIndex = ref<string>('accountLogin');
|
||||||
const type = ref<string>('login');
|
const type = ref<string>('login');
|
||||||
|
@ -214,11 +153,6 @@
|
||||||
const loginLoading = ref<boolean>(false);
|
const loginLoading = ref<boolean>(false);
|
||||||
const { getIsMobile } = useAppInject();
|
const { getIsMobile } = useAppInject();
|
||||||
|
|
||||||
defineProps({
|
|
||||||
sessionTimeout: {
|
|
||||||
type: Boolean,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取验证码
|
* 获取验证码
|
||||||
|
@ -355,23 +289,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 第三方登录
|
|
||||||
* @param type
|
|
||||||
*/
|
|
||||||
function onThirdLogin(type) {
|
|
||||||
thirdModalRef.value.onThirdLogin(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 忘记密码
|
|
||||||
*/
|
|
||||||
function forgetHandelClick() {
|
|
||||||
type.value = 'forgot';
|
|
||||||
setTimeout(() => {
|
|
||||||
forgotRef.value.initForm();
|
|
||||||
}, 300);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回登录页面
|
* 返回登录页面
|
||||||
|
@ -403,29 +321,35 @@
|
||||||
}, 300);
|
}, 300);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 注册
|
|
||||||
*/
|
|
||||||
function codeHandleClick() {
|
|
||||||
type.value = 'codeLogin';
|
|
||||||
setTimeout(() => {
|
|
||||||
codeRef.value.initFrom();
|
|
||||||
}, 300);
|
|
||||||
}
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
//加载验证码
|
//加载验证码
|
||||||
handleChangeCheckCode();
|
handleChangeCheckCode();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
@import '/@/assets/loginmini/style/home.less';
|
@import '/@/assets/loginmini/style/home.less';
|
||||||
@import '/@/assets/loginmini/style/base.less';
|
@import '/@/assets/loginmini/style/base.less';
|
||||||
|
|
||||||
|
// 介绍文字
|
||||||
|
.introduce-text1 {
|
||||||
|
font-size: 30px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.introduce-text {
|
||||||
|
font-size: 40px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
|
||||||
:deep(.ant-input:focus) {
|
:deep(.ant-input:focus) {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-get-code {
|
.aui-get-code {
|
||||||
float: right;
|
float: right;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -452,6 +376,7 @@
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-link-login {
|
.aui-link-login {
|
||||||
height: 42px;
|
height: 42px;
|
||||||
padding: 10px 15px;
|
padding: 10px 15px;
|
||||||
|
@ -462,6 +387,7 @@
|
||||||
flex: 1;
|
flex: 1;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-phone-logo {
|
.aui-phone-logo {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
|
@ -469,6 +395,7 @@
|
||||||
top: 2px;
|
top: 2px;
|
||||||
z-index: 4;
|
z-index: 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-3 {
|
.top-3 {
|
||||||
top: 0.45rem;
|
top: 0.45rem;
|
||||||
}
|
}
|
||||||
|
@ -486,9 +413,11 @@ html[data-theme='dark'] {
|
||||||
&::before {
|
&::before {
|
||||||
background-image: url(/@/assets/svg/login-bg-dark.svg);
|
background-image: url(/@/assets/svg/login-bg-dark.svg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-inputClear {
|
.aui-inputClear {
|
||||||
background-color: #232a3b !important;
|
background-color: #232a3b !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ant-input,
|
.ant-input,
|
||||||
.ant-input-password {
|
.ant-input-password {
|
||||||
background-color: #232a3b !important;
|
background-color: #232a3b !important;
|
||||||
|
@ -505,16 +434,21 @@ html[data-theme='dark'] {
|
||||||
.app-iconify {
|
.app-iconify {
|
||||||
color: #fff !important;
|
color: #fff !important;
|
||||||
}
|
}
|
||||||
.aui-inputClear input,.aui-input-line input,.aui-choice{
|
|
||||||
|
.aui-inputClear input,
|
||||||
|
.aui-input-line input,
|
||||||
|
.aui-choice {
|
||||||
color: #c9d1d9 !important;
|
color: #c9d1d9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-formBox {
|
.aui-formBox {
|
||||||
background-color: @dark-bg !important;
|
background-color: @dark-bg !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-third-text span {
|
.aui-third-text span {
|
||||||
background-color: @dark-bg !important;
|
background-color: @dark-bg !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-form-nav .aui-flex-box {
|
.aui-form-nav .aui-flex-box {
|
||||||
color: #c9d1d9 !important;
|
color: #c9d1d9 !important;
|
||||||
}
|
}
|
||||||
|
@ -523,12 +457,16 @@ html[data-theme='dark'] {
|
||||||
background: @dark-bg !important;
|
background: @dark-bg !important;
|
||||||
color: white !important;
|
color: white !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-code-line {
|
.aui-code-line {
|
||||||
border-left: none !important;
|
border-left: none !important;
|
||||||
}
|
}
|
||||||
.ant-checkbox-inner,.aui-success h3{
|
|
||||||
|
.ant-checkbox-inner,
|
||||||
|
.aui-success h3 {
|
||||||
border-color: #c9d1d9;
|
border-color: #c9d1d9;
|
||||||
}
|
}
|
||||||
|
|
||||||
//update-begin---author:wangshuai ---date:20230828 for:【QQYUN-6363】这个样式代码有问题,不在里面,导致表达式有问题------------
|
//update-begin---author:wangshuai ---date:20230828 for:【QQYUN-6363】这个样式代码有问题,不在里面,导致表达式有问题------------
|
||||||
&-sign-in-way {
|
&-sign-in-way {
|
||||||
.anticon {
|
.anticon {
|
||||||
|
@ -541,6 +479,7 @@ html[data-theme='dark'] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//update-end---author:wangshuai ---date:20230828 for:【QQYUN-6363】这个样式代码有问题,不在里面,导致表达式有问题------------
|
//update-end---author:wangshuai ---date:20230828 for:【QQYUN-6363】这个样式代码有问题,不在里面,导致表达式有问题------------
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -554,6 +493,7 @@ html[data-theme='dark'] {
|
||||||
font-size: 12px !important;
|
font-size: 12px !important;
|
||||||
color: @text-color-secondary !important;
|
color: @text-color-secondary !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.aui-third-login a {
|
.aui-third-login a {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue