From c92ca8859b93b857f80d28123791ab7f7f1004b9 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 03 八月 2026 16:35:03 +0800
Subject: [PATCH] 银川 1.部署不同公司切换logo逻辑修改
---
deploy.bat | 2 +-
src/preferences.ts | 4 +++-
vite.config.ts | 24 +++++++++++++++++-------
.env.production | 2 ++
src/types/app.d.ts | 2 ++
src/layouts/auth.vue | 4 +++-
src/main.ts | 15 ++++++++-------
7 files changed, 36 insertions(+), 17 deletions(-)
diff --git a/.env.production b/.env.production
index cd77149..f7d87ea 100644
--- a/.env.production
+++ b/.env.production
@@ -1,3 +1,5 @@
+VITE_COMPANY=TEST
+
VITE_BASE=/
# 璇锋眰璺緞
diff --git a/deploy.bat b/deploy.bat
index 11a1ca0..52e47e9 100644
--- a/deploy.bat
+++ b/deploy.bat
@@ -95,7 +95,7 @@
echo [STEP 1/3] Building project for %COMPANY%...
echo [INFO] Running: pnpm run build
echo.
-set COMPANY=%COMPANY% && call pnpm run build
+set "COMPANY=!COMPANY!" && call pnpm run build
if !errorlevel! neq 0 (
echo [ERROR] Build failed! Check your project configuration.
goto :error_exit
diff --git a/src/layouts/auth.vue b/src/layouts/auth.vue
index 8ba66e8..ad41d1f 100644
--- a/src/layouts/auth.vue
+++ b/src/layouts/auth.vue
@@ -6,8 +6,10 @@
import { $t } from '#/locales';
+declare const __APP_LOGO__: string;
+
const appName = computed(() => preferences.app.name);
-const logo = computed(() => preferences.logo.source);
+const logo = computed(() => __APP_LOGO__ || preferences.logo.source);
const logoDark = computed(() => preferences.logo.sourceDark);
</script>
diff --git a/src/main.ts b/src/main.ts
index dab2d7c..e208cd2 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -3,6 +3,9 @@
import { overridesPreferences, preferencesExtension } from './preferences';
+declare const __APP_LOGO__: string;
+declare const __APP_FAVICON__: string;
+
/**
* 搴旂敤鍒濆鍖栧畬鎴愪箣鍚庡啀杩涜椤甸潰鍔犺浇娓叉煋
*/
@@ -20,16 +23,14 @@
overrides: overridesPreferences,
});
- // 閫氳繃鐜鍙橀噺寮哄埗瑕嗙洊鍏徃 logo 鍜� favicon锛岀粫杩囩紦瀛�
- const envLogo = import.meta.env.VITE_APP_LOGO;
- const envFavicon = import.meta.env.VITE_APP_FAVICON;
- if (envLogo) {
- preferencesManager.updatePreferences({ logo: { source: envLogo } });
+ // 寮哄埗瑕嗙洊鍏徃 logo 鍜� favicon锛岀粫杩� localStorage 缂撳瓨
+ if (__APP_LOGO__) {
+ preferencesManager.updatePreferences({ logo: { source: __APP_LOGO__ } });
}
- if (envFavicon) {
+ if (__APP_FAVICON__) {
const link = document.querySelector('link[rel="icon"]');
if (link) {
- link.setAttribute('href', envFavicon);
+ link.setAttribute('href', __APP_FAVICON__);
}
}
diff --git a/src/preferences.ts b/src/preferences.ts
index f2b5a03..6b87741 100644
--- a/src/preferences.ts
+++ b/src/preferences.ts
@@ -3,6 +3,8 @@
definePreferencesExtension,
} from './packages/preferences/src';
+declare const __APP_LOGO__: string;
+
interface WebAntdPreferencesExtension {
defaultTableSize: number;
enableFormFullscreen: boolean;
@@ -33,7 +35,7 @@
companySiteLink: 'https://gitee.com/yudaocode/yudao-ui-admin-vben',
},
logo: {
- source: import.meta.env.VITE_APP_LOGO || undefined,
+ source: __APP_LOGO__ || undefined,
},
tabbar: {
/** 鍒锋柊娴忚鍣ㄥ悗鍙繚鐣欏綋鍓嶉〉闈紝涓嶆寔涔呭寲鎵�鏈夋爣绛鹃〉 */
diff --git a/src/types/app.d.ts b/src/types/app.d.ts
new file mode 100644
index 0000000..d65d0ad
--- /dev/null
+++ b/src/types/app.d.ts
@@ -0,0 +1,2 @@
+declare const __APP_LOGO__: string;
+declare const __APP_FAVICON__: string;
diff --git a/vite.config.ts b/vite.config.ts
index ef69137..825d4d4 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,17 +1,27 @@
import { resolve } from "node:path";
+import { loadEnv } from "vite";
import { defineConfig } from "./internal/vite-config/src";
-import { companies } from "./company.config";
-const company = companies[process.env.COMPANY || ''];
-if (company) {
- process.env.VITE_APP_LOGO = company.logo;
- process.env.VITE_APP_FAVICON = company.favicon;
-}
+/** 鍏徃閰嶇疆锛氭柊澧炲叕鍙稿彧闇�鍔犱竴琛岋紝logo 鍥剧墖鏀� public/logos/ 鐩綍 */
+const companyConfigs: Record<string, { favicon: string; logo: string; name: string }> = {
+ TEST: { name: '娴嬭瘯鍏徃', logo: '/logos/TEST.png', favicon: '/logos/TEST.ico' },
+};
-export default defineConfig(async () => {
+export default defineConfig(async ({ mode }) => {
+ const env = loadEnv(mode, process.cwd(), 'VITE_');
+ const companyKey = env.VITE_COMPANY || '';
+ const company = companyConfigs[companyKey];
+ const appLogo = company?.logo ?? '';
+ const appFavicon = company?.favicon ?? '';
+ console.log('[company]', companyKey, '-> logo:', appLogo, 'favicon:', appFavicon);
+
return {
application: {},
vite: {
+ define: {
+ __APP_LOGO__: JSON.stringify(appLogo),
+ __APP_FAVICON__: JSON.stringify(appFavicon),
+ },
resolve: {
alias: {
'@vue-office/pdf': resolve(__dirname, 'node_modules/@vue-office/pdf/lib/v3/vue-office-pdf.mjs'),
--
Gitblit v1.9.3