diff --git a/src/config/index.ts b/src/config/index.ts index 4cd3016..d5402ae 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -1,8 +1,8 @@ import { App } from "vue"; import axios from "axios"; +import { configConver } from "@/utils/rootConver"; let config: object = {}; -const { VITE_PUBLIC_PATH } = import.meta.env; const setConfig = (cfg?: unknown) => { config = Object.assign(config, cfg); @@ -31,7 +31,7 @@ export const getServerConfig = async (app: App): Promise => { app.config.globalProperties.$config = getConfig(); return axios({ method: "get", - url: `${VITE_PUBLIC_PATH}serverConfig.json` + url: `${configConver()}serverConfig.json` }) .then(({ data: config }) => { let $config = app.config.globalProperties.$config; diff --git a/src/router/index.ts b/src/router/index.ts index 8565cd2..9df7082 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -158,7 +158,12 @@ router.beforeEach((to: ToRouteType, _from, next) => { getTopMenu(true); // query、params模式路由传参数的标签页不在此处处理 if (route && route.meta?.title) { - if (isAllEmpty(route.parentId) && route.meta?.backstage) { + if ( + isAllEmpty(route.parentId) && + route.meta?.backstage && + route.children && + route.children.length > 0 + ) { // 此处为动态顶级路由(目录) const { path, name, meta } = route.children[0]; useMultiTagsStoreHook().handleTags("push", { diff --git a/src/utils/rootConver.ts b/src/utils/rootConver.ts new file mode 100644 index 0000000..54dc9cc --- /dev/null +++ b/src/utils/rootConver.ts @@ -0,0 +1,22 @@ +const { VITE_PUBLIC_PATH } = import.meta.env; + +export const configConver = () => { + if (VITE_PUBLIC_PATH === "./") { + return window.location.origin + "/"; + } + return window.location.origin + processPath(VITE_PUBLIC_PATH); +}; + +function processPath(str: string): string { + if (str.startsWith("./")) { + str = str.substring(1); + } else if (!str.startsWith("/")) { + str = "/" + str; + } + + if (!str.endsWith("/")) { + str += "/"; + } + + return str; +}