feat(ui): logo和菜单调整
parent
04e8cdb80b
commit
8b54b73b1d
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
|
|
@ -1,15 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="china-mobile-icon" style="display: flex; align-items: center; margin-right: 16px;">
|
<div class="china-mobile-icon" aria-label="China Mobile">
|
||||||
<div style="display: flex; align-items: center;">
|
<img src="/aiot-header-logo.png" alt="China Mobile" />
|
||||||
<div style="display: flex; align-items: center;">
|
|
||||||
<div>
|
|
||||||
<div style="font-size: 14px; font-weight: 600; color: #1E71C7;">中国移动</div>
|
|
||||||
<div style="font-size: 12px; color: #1E71C7;">China Mobile</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div style="margin: 0 12px; height: 20px; width: 1px; background-color: #E8E8E8;"></div>
|
|
||||||
<div style="font-size: 14px; font-weight: 600; color: #6B47E5;">CMIOT</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -19,6 +10,20 @@ defineOptions({ name: 'ChinaMobileIcon' })
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.china-mobile-icon {
|
.china-mobile-icon {
|
||||||
height: 40px;
|
width: var(--china-mobile-icon-width, 176px);
|
||||||
|
height: var(--china-mobile-icon-height, 22px);
|
||||||
|
/* margin-right: var(--china-mobile-icon-gap, 14px); */
|
||||||
|
flex-shrink: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.china-mobile-icon img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
object-fit: cover;
|
||||||
|
object-position: center;
|
||||||
|
display: block;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,66 +1,120 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="sidebar" style="display: flex; flex-direction: column; height: 100%; background-color: #F9FAFB; width: 240px;">
|
<div
|
||||||
<!-- 顶部 Logo 区 -->
|
class="sidebar"
|
||||||
<div style="padding: 16px;">
|
style="display: flex; flex-direction: column; height: 100%; background-color: #f9fafb; width: 240px;"
|
||||||
</div>
|
>
|
||||||
|
<div style="padding: 16px;"></div>
|
||||||
|
|
||||||
<!-- 业务菜单或系统管理菜单 -->
|
|
||||||
<div style="padding: 0 16px;">
|
<div style="padding: 0 16px;">
|
||||||
<!-- 业务菜单 -->
|
|
||||||
<div v-if="!isSystemManagement" style="display: flex; flex-direction: column; gap: 8px;">
|
<div v-if="!isSystemManagement" style="display: flex; flex-direction: column; gap: 8px;">
|
||||||
<router-link to="/application" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeMainMenu === '/application' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
应用
|
to="/application"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeMainMenu === '/application' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
AI应用
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/mindmap" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeMainMenu === '/mindmap' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
|
to="/mindmap"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeMainMenu === '/mindmap' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
思维导图
|
思维导图
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/knowledge" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeMainMenu === '/knowledge' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
|
to="/knowledge"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeMainMenu === '/knowledge' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
知识库
|
知识库
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/tool" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeMainMenu === '/tool' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
工具
|
to="/tool"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeMainMenu === '/tool' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
工具管理
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/model" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeMainMenu === '/model' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
模型
|
to="/model"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeMainMenu === '/model' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
模型管理
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 系统管理菜单 -->
|
|
||||||
<div v-else style="display: flex; flex-direction: column; gap: 8px;">
|
<div v-else style="display: flex; flex-direction: column; gap: 8px;">
|
||||||
<router-link to="/system/user" style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;" :style="activeSystemMenu === '/system/user' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
|
to="/system/user"
|
||||||
|
style="display: block; padding: 10px 16px; border-radius: 8px; text-decoration: none; color: #333; font-size: 14px;"
|
||||||
|
:style="activeSystemMenu === '/system/user' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
用户管理
|
用户管理
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<!-- 资源授权(下拉展开) -->
|
|
||||||
<div>
|
<div>
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; border-radius: 8px; cursor: pointer;" :style="activeSystemMenu.startsWith('/system/authorization') ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}" @click="toggleResourceAuth">
|
<div
|
||||||
|
style="display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; border-radius: 8px; cursor: pointer;"
|
||||||
|
:style="activeSystemMenu.startsWith('/system/authorization') ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
@click="toggleResourceAuth"
|
||||||
|
>
|
||||||
<span>资源授权</span>
|
<span>资源授权</span>
|
||||||
<span>{{ resourceAuthExpanded ? '▼' : '▶' }}</span>
|
<span>{{ resourceAuthExpanded ? '▾' : '▸' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="resourceAuthExpanded" style="padding-left: 32px; margin-top: 4px; display: flex; flex-direction: column; gap: 4px;">
|
<div
|
||||||
<router-link to="/system/authorization/application" style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;" :style="activeSystemMenu === '/system/authorization/application' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
v-if="resourceAuthExpanded"
|
||||||
应用
|
style="padding-left: 32px; margin-top: 4px; display: flex; flex-direction: column; gap: 4px;"
|
||||||
|
>
|
||||||
|
<router-link
|
||||||
|
to="/system/authorization/application"
|
||||||
|
style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;"
|
||||||
|
:style="activeSystemMenu === '/system/authorization/application' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
AI应用
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/system/authorization/knowledge" style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;" :style="activeSystemMenu === '/system/authorization/knowledge' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
|
to="/system/authorization/knowledge"
|
||||||
|
style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;"
|
||||||
|
:style="activeSystemMenu === '/system/authorization/knowledge' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
知识库
|
知识库
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/system/authorization/tool" style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;" :style="activeSystemMenu === '/system/authorization/tool' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
工具
|
to="/system/authorization/tool"
|
||||||
|
style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;"
|
||||||
|
:style="activeSystemMenu === '/system/authorization/tool' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
工具管理
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link to="/system/authorization/model" style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;" :style="activeSystemMenu === '/system/authorization/model' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
<router-link
|
||||||
模型
|
to="/system/authorization/model"
|
||||||
|
style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;"
|
||||||
|
:style="activeSystemMenu === '/system/authorization/model' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
|
模型管理
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 系统设置(下拉展开) -->
|
|
||||||
<div>
|
<div>
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; border-radius: 8px; cursor: pointer;" :style="activeSystemMenu.startsWith('/system/email') ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}" @click="toggleSystemSettings">
|
<div
|
||||||
|
style="display: flex; justify-content: space-between; align-items: center; padding: 10px 16px; border-radius: 8px; cursor: pointer;"
|
||||||
|
:style="activeSystemMenu.startsWith('/system/email') ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
@click="toggleSystemSettings"
|
||||||
|
>
|
||||||
<span>系统设置</span>
|
<span>系统设置</span>
|
||||||
<span>{{ systemSettingsExpanded ? '▼' : '▶' }}</span>
|
<span>{{ systemSettingsExpanded ? '▾' : '▸' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="systemSettingsExpanded" style="padding-left: 32px; margin-top: 4px; display: flex; flex-direction: column; gap: 4px;">
|
<div
|
||||||
<router-link to="/system/email" style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;" :style="activeSystemMenu === '/system/email' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}">
|
v-if="systemSettingsExpanded"
|
||||||
|
style="padding-left: 32px; margin-top: 4px; display: flex; flex-direction: column; gap: 4px;"
|
||||||
|
>
|
||||||
|
<router-link
|
||||||
|
to="/system/email"
|
||||||
|
style="display: block; padding: 8px 16px; border-radius: 8px; text-decoration: none; color: #666; font-size: 13px;"
|
||||||
|
:style="activeSystemMenu === '/system/email' ? { backgroundColor: '#e6f0ff', color: '#1890ff' } : {}"
|
||||||
|
>
|
||||||
邮件设置
|
邮件设置
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -68,7 +122,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 底部用户信息区 -->
|
|
||||||
<div style="margin-top: auto; padding: 16px; border-top: 1px solid #e5e7eb;">
|
<div style="margin-top: auto; padding: 16px; border-top: 1px solid #e5e7eb;">
|
||||||
<UserAvatar />
|
<UserAvatar />
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -76,19 +129,17 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, ref, onMounted } from 'vue'
|
import { computed, onMounted, ref } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import UserAvatar from '@/layout/layout-header/avatar/index.vue'
|
import UserAvatar from '@/layout/layout-header/avatar/index.vue'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
// 判断是否在系统管理页面
|
|
||||||
const isSystemManagement = computed(() => {
|
const isSystemManagement = computed(() => {
|
||||||
const path = route.path
|
const path = route.path
|
||||||
return path.startsWith('/system')
|
return path.startsWith('/system') || path.startsWith('/admin/system')
|
||||||
})
|
})
|
||||||
|
|
||||||
// 业务菜单激活状态
|
|
||||||
const activeMainMenu = computed(() => {
|
const activeMainMenu = computed(() => {
|
||||||
const path = route.path
|
const path = route.path
|
||||||
if (path.startsWith('/application')) return '/application'
|
if (path.startsWith('/application')) return '/application'
|
||||||
|
|
@ -99,44 +150,33 @@ const activeMainMenu = computed(() => {
|
||||||
return '/application'
|
return '/application'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 系统管理菜单激活状态
|
|
||||||
const activeSystemMenu = computed(() => {
|
const activeSystemMenu = computed(() => {
|
||||||
const path = route.path
|
const path = route.path
|
||||||
if (path.startsWith('/system/user')) return '/system/user'
|
if (path.startsWith('/system/user') || path.startsWith('/admin/system/user')) return '/system/user'
|
||||||
if (path.startsWith('/system/authorization')) return path
|
if (path.startsWith('/system/authorization') || path.startsWith('/admin/system/authorization')) {
|
||||||
if (path.startsWith('/system/email')) return path
|
return path.replace('/admin', '')
|
||||||
|
}
|
||||||
|
if (path.startsWith('/system/email') || path.startsWith('/admin/system/email')) {
|
||||||
|
return path.replace('/admin', '')
|
||||||
|
}
|
||||||
return '/system/user'
|
return '/system/user'
|
||||||
})
|
})
|
||||||
|
|
||||||
// 资源授权下拉菜单展开状态
|
|
||||||
const resourceAuthExpanded = ref(false)
|
const resourceAuthExpanded = ref(false)
|
||||||
// 系统设置下拉菜单展开状态
|
|
||||||
const systemSettingsExpanded = ref(false)
|
const systemSettingsExpanded = ref(false)
|
||||||
|
|
||||||
// 切换资源授权下拉菜单
|
|
||||||
const toggleResourceAuth = () => {
|
const toggleResourceAuth = () => {
|
||||||
resourceAuthExpanded.value = !resourceAuthExpanded.value
|
resourceAuthExpanded.value = !resourceAuthExpanded.value
|
||||||
// 关闭其他下拉菜单
|
|
||||||
systemSettingsExpanded.value = false
|
systemSettingsExpanded.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 切换系统设置下拉菜单
|
|
||||||
const toggleSystemSettings = () => {
|
const toggleSystemSettings = () => {
|
||||||
systemSettingsExpanded.value = !systemSettingsExpanded.value
|
systemSettingsExpanded.value = !systemSettingsExpanded.value
|
||||||
// 关闭其他下拉菜单
|
|
||||||
resourceAuthExpanded.value = false
|
resourceAuthExpanded.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
const activeSubMenu = computed(() => {
|
|
||||||
const path = route.path
|
|
||||||
return path
|
|
||||||
})
|
|
||||||
|
|
||||||
// 确保组件挂载时下拉菜单保持折叠状态
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
resourceAuthExpanded.value = false
|
resourceAuthExpanded.value = false
|
||||||
systemSettingsExpanded.value = false
|
systemSettingsExpanded.value = false
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,21 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="app-top-bar-container border-b flex-center">
|
<div class="app-top-bar-container border-b flex-center">
|
||||||
<div class="flex-between w-full align-center" style="padding: 0 16px;">
|
<div class="header-content flex-between w-full align-center">
|
||||||
<div style="display: flex; align-items: center;">
|
<div class="header-left">
|
||||||
<ChinaMobileIcon />
|
<ChinaMobileIcon class="header-icon" />
|
||||||
<h1 style="font-size: 18px; font-weight: 600; margin: 0; background: linear-gradient(90deg, #6B47E5, #1E71C7); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">{{ isSystemManagement ? 'AI-RAG | 系统管理' : 'AI-RAG' }}</h1>
|
<!-- <h1 class="header-title">{{ isSystemManagement ? 'AI-RAG | 系统管理' : 'AI-RAG' }}</h1> -->
|
||||||
|
<h1 class="header-title">AI-RAG</h1>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex; align-items: center;">
|
<div class="header-right">
|
||||||
<router-link v-if="isSystemManagement" to="/application" style="display: flex; align-items: center; padding: 6px 12px; border-radius: 6px; text-decoration: none; color: #1890ff; border: 1px solid #1890ff;">
|
<router-link v-if="isSystemManagement" to="/application" class="back-link">
|
||||||
<span style="margin-right: 4px;">←</span>
|
<span class="back-icon">←</span>
|
||||||
返回工作空间
|
返回工作空间
|
||||||
</router-link>
|
</router-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
|
|
@ -21,16 +23,62 @@ import ChinaMobileIcon from '@/components/china-mobile-icon/index.vue'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
// 判断是否在系统管理页面
|
|
||||||
const isSystemManagement = computed(() => {
|
const isSystemManagement = computed(() => {
|
||||||
const path = route.path
|
const path = route.path
|
||||||
return path.startsWith('/system') || path.startsWith('/admin/system')
|
return path.startsWith('/system') || path.startsWith('/admin/system')
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.app-top-bar-container {
|
.app-top-bar-container {
|
||||||
height: var(--app-header-height);
|
height: var(--app-header-height);
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: var(--app-header-padding);
|
// padding: var(--app-header-padding);
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-content {
|
||||||
|
// padding: 0 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.header-icon) {
|
||||||
|
--china-mobile-icon-width: 192px;
|
||||||
|
--china-mobile-icon-height: 24px;
|
||||||
|
--china-mobile-icon-gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.3px;
|
||||||
|
background: linear-gradient(90deg, #6b47e5, #1e71c7);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-link {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding: 6px 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
text-decoration: none;
|
||||||
|
color: #1890ff;
|
||||||
|
border: 1px solid #1890ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.back-icon {
|
||||||
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex-between w-full">
|
<div class="flex-between w-full">
|
||||||
<div class="ml-24 flex align-center w-120">
|
<div class="ml-24 flex align-center">
|
||||||
<ChinaMobileIcon />
|
<ChinaMobileIcon class="user-header-icon" />
|
||||||
<!-- 企业版: 工作空间下拉框-->
|
<!-- 企业版: 工作空间下拉框-->
|
||||||
<el-divider
|
<el-divider
|
||||||
class="mr-8"
|
class="mr-8"
|
||||||
|
|
@ -66,4 +66,10 @@ function changeWorkspace(item: WorkspaceItem) {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: var(--app-header-padding);
|
padding: var(--app-header-padding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.user-header-icon) {
|
||||||
|
--china-mobile-icon-width: 176px;
|
||||||
|
--china-mobile-icon-height: 22px;
|
||||||
|
--china-mobile-icon-gap: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,9 @@
|
||||||
>
|
>
|
||||||
<div class="app-top-bar-container border-b flex-center">
|
<div class="app-top-bar-container border-b flex-center">
|
||||||
<div class="flex-between w-full align-center" style="padding: 0 16px;">
|
<div class="flex-between w-full align-center" style="padding: 0 16px;">
|
||||||
<div style="display: flex; align-items: center;">
|
<div class="chat-header-brand">
|
||||||
<ChinaMobileIcon />
|
<ChinaMobileIcon class="chat-header-icon" />
|
||||||
<h1 style="font-size: 18px; font-weight: 600; margin: 0;">AI-RAG</h1>
|
<h1 class="chat-header-title">AI-RAG</h1>
|
||||||
</div>
|
</div>
|
||||||
<div style="display: flex; align-items: center;">
|
<div style="display: flex; align-items: center;">
|
||||||
<span class="flex align-center" v-if="currentRecordList.length">
|
<span class="flex align-center" v-if="currentRecordList.length">
|
||||||
|
|
@ -543,6 +543,25 @@ function closeExecutionDetail() {
|
||||||
background: var(--app-header-bg-color);
|
background: var(--app-header-bg-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.chat-header-brand {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.chat-header-icon) {
|
||||||
|
--china-mobile-icon-width: 192px;
|
||||||
|
--china-mobile-icon-height: 24px;
|
||||||
|
--china-mobile-icon-gap: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-header-title {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 22px;
|
||||||
|
line-height: 1;
|
||||||
|
font-weight: 700;
|
||||||
|
letter-spacing: 0.3px;
|
||||||
|
}
|
||||||
|
|
||||||
.chat-pc {
|
.chat-pc {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@
|
||||||
<login-layout v-if="!loading" v-loading="loading">
|
<login-layout v-if="!loading" v-loading="loading">
|
||||||
<LoginContainer :subTitle="newDefaultSlogan">
|
<LoginContainer :subTitle="newDefaultSlogan">
|
||||||
<template #logo>
|
<template #logo>
|
||||||
<div style="display: flex; align-items: center; justify-content: center;">
|
<div class="login-brand">
|
||||||
<ChinaMobileIcon />
|
<ChinaMobileIcon class="login-brand-icon" />
|
||||||
<h1 style="font-size: 18px; font-weight: 600; margin: 0; background: linear-gradient(90deg, #6B47E5, #1E71C7); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">AI-RAG</h1>
|
<h1 class="login-brand-title">AI-RAG</h1>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<h2 class="mb-24" v-if="!showQrCodeTab" >{{ loginMode || $t('views.login.title') }}</h2>
|
<h2 class="mb-24" v-if="!showQrCodeTab" >{{ loginMode || $t('views.login.title') }}</h2>
|
||||||
|
|
@ -496,6 +496,63 @@ onMounted(() => {
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<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;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.login-title .sub-title .el-text) {
|
||||||
|
font-size: 13px;
|
||||||
|
padding-left: 38px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.login-gradient-divider {
|
.login-gradient-divider {
|
||||||
position: relative;
|
position: relative;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
|
||||||
|
|
@ -36,37 +36,37 @@ export default defineConfig((conf: any) => {
|
||||||
const ENV = loadEnv(mode, envDir)
|
const ENV = loadEnv(mode, envDir)
|
||||||
const proxyConf: Record<string, string | ProxyOptions> = {}
|
const proxyConf: Record<string, string | ProxyOptions> = {}
|
||||||
proxyConf['/admin/api'] = {
|
proxyConf['/admin/api'] = {
|
||||||
target: 'http://127.0.0.1:8080',
|
target: 'http://10.100.52.43:8080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
}
|
}
|
||||||
proxyConf['/chat/api'] = {
|
proxyConf['/chat/api'] = {
|
||||||
target: 'http://127.0.0.1:8080',
|
target: 'http://10.100.52.43:8080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
}
|
}
|
||||||
proxyConf['/doc'] = {
|
proxyConf['/doc'] = {
|
||||||
target: 'http://127.0.0.1:8080',
|
target: 'http://10.100.52.43:8080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
||||||
}
|
}
|
||||||
proxyConf['/schema'] = {
|
proxyConf['/schema'] = {
|
||||||
target: 'http://127.0.0.1:8080',
|
target: 'http://10.100.52.43:8080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
||||||
}
|
}
|
||||||
proxyConf['/static'] = {
|
proxyConf['/static'] = {
|
||||||
target: 'http://127.0.0.1:8080',
|
target: 'http://10.100.52.43:8080',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
|
||||||
}
|
}
|
||||||
|
|
||||||
// 前端静态资源转发到本身
|
// 前端静态资源转发到本身
|
||||||
proxyConf[`^${ENV.VITE_BASE_PATH}.+\/oss\/file\/.*$`] = {
|
proxyConf[`^${ENV.VITE_BASE_PATH}.+\/oss\/file\/.*$`] = {
|
||||||
target: `http://127.0.0.1:8080`,
|
target: `http://10.100.52.43:8080`,
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
}
|
}
|
||||||
// 前端静态资源转发到本身
|
// 前端静态资源转发到本身
|
||||||
proxyConf[`^${ENV.VITE_BASE_PATH}oss\/file\/.*$`] = {
|
proxyConf[`^${ENV.VITE_BASE_PATH}oss\/file\/.*$`] = {
|
||||||
target: `http://127.0.0.1:8080`,
|
target: `http://10.100.52.43:8080`,
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
}
|
}
|
||||||
// 前端静态资源转发到本身
|
// 前端静态资源转发到本身
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue