fix: 修复子路径部署静态资源引用

- 修复 admin 与 usercenter 登录验证码资源在 /flow 子路径下的加载路径

- 统一 logo、空状态图、兜底头像与模型服务商图标的 BASE_URL 处理

- 补齐 usercenter 公共布局与 loading 注入的子路径兼容
This commit is contained in:
2026-03-20 13:02:39 +08:00
parent 39a6daf8fe
commit 07d8193e80
15 changed files with 102 additions and 19 deletions

View File

@@ -1,5 +1,7 @@
import type { Preferences } from './types';
const assetBase = import.meta.env.BASE_URL || '/';
const defaultPreferences: Preferences = {
app: {
accessMode: 'frontend',
@@ -65,8 +67,9 @@ const defaultPreferences: Preferences = {
logo: {
enable: true,
fit: 'contain',
source: '/logo.svg',
sourceDark: '/logoDark.svg',
source: `${assetBase}logo.svg`,
sourceDark: `${assetBase}logoDark.svg`,
sourceMini: `${assetBase}logoMini.svg`,
},
navigation: {
accordion: true,

View File

@@ -148,6 +148,10 @@ interface LogoPreferences {
source: string;
/** 暗色主题logo地址 (可选,若不设置则使用 source) */
sourceDark?: string;
/** 侧边栏收起时 logo 地址 (可选,若不设置则使用 source) */
sourceMini?: string;
/** 暗色主题下侧边栏收起 logo 地址 (可选,若不设置则按 sourceMini/sourceDark/source 回退) */
sourceMiniDark?: string;
}
interface NavigationPreferences {

View File

@@ -30,6 +30,14 @@ interface Props {
* @zh_CN 暗色主题 Logo 图标 (可选,若不设置则使用 src)
*/
srcDark?: string;
/**
* @zh_CN 侧边栏收起时 Logo 图标 (可选,若不设置则使用 src)
*/
srcMini?: string;
/**
* @zh_CN 暗色主题下侧边栏收起时 Logo 图标 (可选,若不设置则按 srcMini/srcDark/src 回退)
*/
srcMiniDark?: string;
/**
* @zh_CN Logo 文本
*/
@@ -50,6 +58,8 @@ const props = withDefaults(defineProps<Props>(), {
logoSize: 120,
src: '',
srcDark: '',
srcMini: '',
srcMiniDark: '',
theme: 'light',
fit: 'cover',
});
@@ -59,7 +69,10 @@ const props = withDefaults(defineProps<Props>(), {
*/
const logoSrc = computed(() => {
if (props.collapsed) {
return '/logoMini.svg';
if (props.theme === 'dark' && props.srcMiniDark) {
return props.srcMiniDark;
}
return props.srcMini || props.src;
}
// 如果是暗色主题且提供了 srcDark则使用暗色主题的 logo
if (props.theme === 'dark' && props.srcDark) {

View File

@@ -260,6 +260,14 @@ const headerSlots = computed(() => {
:collapsed="logoCollapsed"
:src="preferences.logo.source"
:src-dark="preferences.logo.sourceDark"
:src-mini="preferences.logo.sourceMini ?? preferences.logo.source ?? ''"
:src-mini-dark="
preferences.logo.sourceMiniDark ??
preferences.logo.sourceMini ??
preferences.logo.sourceDark ??
preferences.logo.source ??
''
"
:text="preferences.app.name"
:theme="showHeaderNav ? headerTheme : theme"
@click="clickLogo"
@@ -353,6 +361,14 @@ const headerSlots = computed(() => {
:fit="preferences.logo.fit"
:src="preferences.logo.source"
:src-dark="preferences.logo.sourceDark"
:src-mini="preferences.logo.sourceMini ?? preferences.logo.source ?? ''"
:src-mini-dark="
preferences.logo.sourceMiniDark ??
preferences.logo.sourceMini ??
preferences.logo.sourceDark ??
preferences.logo.source ??
''
"
:text="preferences.app.name"
:theme="theme"
>