diff --git a/src/store/modules/permission-store.ts b/src/store/modules/permission-store.ts index 34a6d824..bf67da4e 100644 --- a/src/store/modules/permission-store.ts +++ b/src/store/modules/permission-store.ts @@ -27,8 +27,6 @@ export const usePermissionStore = defineStore("permission", () => { isDynamicRoutesGenerated.value = true; - console.log("dynamicRoutes", dynamicRoutes); - return dynamicRoutes; } catch (error) { console.error("❌ Failed to generate routes:", error); @@ -85,13 +83,17 @@ const parseDynamicRoutes = (rawRoutes: RouteVO[]): RouteRecordRaw[] => { rawRoutes.forEach((route) => { const normalizedRoute = { ...route } as RouteRecordRaw; - // console.log(); - - // 处理组件路径 - normalizedRoute.component = - normalizedRoute.component?.toString() === "Layout" - ? Layout - : modules[`../../views/${normalizedRoute.component}.vue`]; + if (!normalizedRoute.component) { + // 如果没有组件,则将组件设置为 undefined 防止404 例如(多级菜单的父菜单) + normalizedRoute.component = undefined; + } else { + // 处理组件路径 + normalizedRoute.component = + normalizedRoute.component?.toString() === "Layout" + ? Layout + : modules[`../../views/${normalizedRoute.component}.vue`] || + modules[`../../views/error/404.vue`]; // 找不到页面时,返回404页面 + } // 递归解析子路由 if (normalizedRoute.children) { diff --git a/src/store/modules/tags-view-store.ts b/src/store/modules/tags-view-store.ts index 718aae08..310f2cce 100644 --- a/src/store/modules/tags-view-store.ts +++ b/src/store/modules/tags-view-store.ts @@ -97,6 +97,19 @@ export const useTagsViewStore = defineStore("tagsView", () => { } } + /** + * 根据路径更新标签名称 + * @param fullPath 路径 + * @param title 标签名称 + */ + function updateTagName(fullPath: string, title: string) { + const tag = visitedViews.value.find((tag: TagView) => tag.fullPath === fullPath); + + if (tag) { + tag.title = title; + } + } + function addView(view: TagView) { addVisitedView(view); addCachedView(view); @@ -257,5 +270,6 @@ export const useTagsViewStore = defineStore("tagsView", () => { closeCurrentView, isActive, toLastView, + updateTagName, }; }); diff --git a/src/views/demo/multi-level/children/children/detail.ts b/src/views/demo/multi-level/children/children/detail.ts index 29549a7c..39207250 100644 --- a/src/views/demo/multi-level/children/children/detail.ts +++ b/src/views/demo/multi-level/children/children/detail.ts @@ -1,15 +1,21 @@ import router from "@/router"; import { ElButton } from "element-plus"; +import { useTagsViewStore } from "@/store"; export default defineComponent({ name: "ToDetail", setup() { + const route = useRoute(); + const tagsViewStore = useTagsViewStore(); + // 跳转详情 const navigateToDetail = async (id: number) => { await router.push({ path: "/detail/" + id, query: { message: `msg${id}` }, }); + // 更改标题 + tagsViewStore.updateTagName(route.fullPath, `详情页缓存(id=${id})`); }; return () => h("div", null, [