From bcc0c53ba186954499d214f6f8a3ca5f4b1da7c3 Mon Sep 17 00:00:00 2001 From: zhaoweijie Date: Sun, 21 Dec 2025 20:26:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(config):=20=E6=94=AF=E6=8C=81=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=20API=20=E5=9F=BA=E7=A1=80=E8=B7=AF=E5=BE=84=E5=92=8C?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E7=8E=AF=E5=A2=83=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在配置存储中新增 dev 和 apiBaseUrl 字段 - 设置默认配置对象,包含基础 URL 构造逻辑 - 更新请求工具以使用动态配置的 baseURL - 调整应用初始化顺序确保配置先行加载 - 移除指令中不必要的调试日志输出 --- frontend/src/ directive/devOnly/index.ts | 1 - frontend/src/main.ts | 4 ++-- frontend/src/stores/modules/config.ts | 13 +++++++++++-- frontend/src/utils/request.ts | 4 +++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/frontend/src/ directive/devOnly/index.ts b/frontend/src/ directive/devOnly/index.ts index 0f20554..6b141b0 100644 --- a/frontend/src/ directive/devOnly/index.ts +++ b/frontend/src/ directive/devOnly/index.ts @@ -35,7 +35,6 @@ function checkAndRemoveElement(el: HTMLElement, binding: DirectiveBinding) { const shouldEnable = binding.value !== false // 如果不是开发模式或者明确禁用,移除该元素 if (!isDev && shouldEnable) { - console.log(1111) if (el.parentNode) { el.parentNode.removeChild(el) } diff --git a/frontend/src/main.ts b/frontend/src/main.ts index b59ac2c..18306b3 100644 --- a/frontend/src/main.ts +++ b/frontend/src/main.ts @@ -11,12 +11,12 @@ import { setupStore, useConfigStore } from '@/stores' import { setupDirective } from '@/ directive' async function init() { + const configStore = useConfigStore() + await configStore.initConfig() const app = createApp(App) setupStore(app) setupDirective(app) initService() - const configStore = useConfigStore() - await configStore.initConfig() document.title = configStore.config.centerTitle app.use(router) app.mount('#app') diff --git a/frontend/src/stores/modules/config.ts b/frontend/src/stores/modules/config.ts index d72ec7b..9086cd9 100644 --- a/frontend/src/stores/modules/config.ts +++ b/frontend/src/stores/modules/config.ts @@ -11,16 +11,25 @@ export interface Config { agentRepository: { storageVersionIdentifier: string } + // 是否是开发环境 dev?: boolean + // api base url + apiBaseUrl?: string } - +const defaultConfig: Config = { + apiBaseUrl: `${import.meta.env.BASE_URL || '/'}api` +} as Config export const useConfigStore = defineStore('config', () => { const config = ref({} as Config) // 异步调用readConfig async function initConfig() { - config.value = await readConfig('config.json') + const data = await readConfig('config.json') + config.value = { + ...defaultConfig, + ...data + } } diff --git a/frontend/src/utils/request.ts b/frontend/src/utils/request.ts index 5bbc16d..aa59d59 100644 --- a/frontend/src/utils/request.ts +++ b/frontend/src/utils/request.ts @@ -10,6 +10,7 @@ import qs from 'qs' import type { Ref } from 'vue' import { ElNotification } from 'element-plus' import { ref } from 'vue' +import { useConfigStoreHook } from '@/stores' // 创建 axios 实例 let service: AxiosInstance @@ -20,8 +21,9 @@ export interface AxiosResponseData { } export function initService() { + const configStore = useConfigStoreHook() service = axios.create({ - baseURL: '/api', + baseURL: configStore.config.apiBaseUrl, headers: { 'Content-Type': 'application/json;charset=utf-8' }, paramsSerializer: (params) => { return qs.stringify(params)