feat(login): 添加登录页面品牌标识和导航功能

- 在忘记密码和重置密码页面添加中国移動图标和AI-RAG标题
- 集成ChinaMobileIcon组件并配置样式
- 添加响应式设计适配不同屏幕尺寸
- 在知识库列表中增加问题和命中测试导航选项
- 移除思维导图配置错误提示信息
v3.2
tanlianwang 2026-03-30 09:41:05 +08:00
parent e84aaa1698
commit 3013efb93c
4 changed files with 142 additions and 5 deletions

View File

@ -251,6 +251,28 @@
{{ $t('views.document.generateQuestion.title') }}
</el-dropdown-item>
<el-dropdown-item
@click.stop="
router.push({
path: `/knowledge/${item.id}/${folder.currentFolder.id || 'shared'}/problem`,
})
"
v-if="permissionPrecise.edit(item.id)"
>
<AppIcon iconName="app-problems" class="color-secondary"></AppIcon>
{{ $t('views.problem.title') }}
</el-dropdown-item>
<el-dropdown-item
@click.stop="
router.push({
path: `/knowledge/${item.id}/${folder.currentFolder.id || 'shared'}/hit-test`,
})
"
v-if="permissionPrecise.edit(item.id)"
>
<AppIcon iconName="app-hit-test" class="color-secondary"></AppIcon>
{{ $t('views.application.hitTest.title') }}
</el-dropdown-item>
<el-dropdown-item
v-if="isSystemShare"
@click.stop="openAuthorizedWorkspaceDialog(item)"

View File

@ -3,6 +3,12 @@
<LoginContainer
:subTitle="theme.themeInfo?.slogan ? theme.themeInfo?.slogan : $t('theme.defaultSlogan')"
>
<template #logo>
<div class="login-brand">
<ChinaMobileIcon class="login-brand-icon" />
<h1 class="login-brand-title">AI-RAG</h1>
</div>
</template>
<h2 class="mb-24">{{ $t('views.login.forgotPassword') }}</h2>
<el-form
class="register-form"
@ -77,6 +83,7 @@ import UserApi from '@/api/user/user'
import {MsgSuccess} from '@/utils/message'
import {t} from '@/locales'
import useStore from '@/stores'
import ChinaMobileIcon from '@/components/china-mobile-icon/index.vue';
const router = useRouter()
const {theme, user} = useStore()
@ -151,4 +158,56 @@ onBeforeMount(() => {
})
})
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.login-brand {
display: flex;
align-items: center;
justify-content: center;
min-height: 48px;
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 268px;
--china-mobile-icon-height: 34px;
--china-mobile-icon-gap: 20px;
}
}
.login-brand-title {
margin: 0;
font-size: 24px;
line-height: 1;
font-weight: 800;
letter-spacing: 0.8px;
background: linear-gradient(90deg, #6b47e5, #1e71c7);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (max-width: 1400px) {
.login-brand {
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 236px;
--china-mobile-icon-height: 30px;
--china-mobile-icon-gap: 16px;
}
}
.login-brand-title {
font-size: 34px;
}
}
@media (max-width: 1200px) {
.login-brand {
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 210px;
--china-mobile-icon-height: 28px;
--china-mobile-icon-gap: 14px;
}
}
.login-brand-title {
font-size: 30px;
}
}
</style>

View File

@ -1,6 +1,12 @@
<template>
<login-layout>
<LoginContainer :subTitle="$t('theme.defaultSlogan')">
<template #logo>
<div class="login-brand">
<ChinaMobileIcon class="login-brand-icon" />
<h1 class="login-brand-title">AI-RAG</h1>
</div>
</template>
<h2 class="mb-24">{{ $t('views.login.resetPassword') }}</h2>
<el-form
class="reset-password-form"
@ -63,6 +69,7 @@ import { MsgSuccess } from '@/utils/message'
import type { FormInstance, FormRules } from 'element-plus'
import UserApi from '@/api/user/user'
import { t } from '@/locales'
import ChinaMobileIcon from '@/components/china-mobile-icon/index.vue';
const router = useRouter()
const route = useRoute()
const {
@ -134,4 +141,56 @@ const resetPassword = () => {
})
}
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
.login-brand {
display: flex;
align-items: center;
justify-content: center;
min-height: 48px;
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 268px;
--china-mobile-icon-height: 34px;
--china-mobile-icon-gap: 20px;
}
}
.login-brand-title {
margin: 0;
font-size: 24px;
line-height: 1;
font-weight: 800;
letter-spacing: 0.8px;
background: linear-gradient(90deg, #6b47e5, #1e71c7);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (max-width: 1400px) {
.login-brand {
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 236px;
--china-mobile-icon-height: 30px;
--china-mobile-icon-gap: 16px;
}
}
.login-brand-title {
font-size: 34px;
}
}
@media (max-width: 1200px) {
.login-brand {
:deep(.china-mobile-icon) {
--china-mobile-icon-width: 210px;
--china-mobile-icon-height: 28px;
--china-mobile-icon-gap: 14px;
}
}
.login-brand-title {
font-size: 30px;
}
}
</style>

View File

@ -3,9 +3,6 @@
<div v-if="loading" class="loading">
加载中...
</div>
<div v-else-if="!mindmapUrl" class="error">
思维导图配置未设置请联系管理员
</div>
<div v-else class="mindmap-content">
<iframe
:src="mindmapUrl"