From 77ee7ba1af08b857a8e0f1231a2d9d72ac1ba35c Mon Sep 17 00:00:00 2001 From: wang_fan_w <2547096351@qq.com> Date: Thu, 18 Apr 2024 00:24:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8F=9C=E5=8D=95=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=EF=BC=8C=E5=85=B3=E8=81=94tags=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/Main/index.vue | 66 +++--- src/layout/components/Menu/index.vue | 18 +- src/layout/components/Menu/menu-item.vue | 2 +- src/layout/components/Tabs/index.vue | 251 ++++++++++++----------- src/router/route-output.ts | 2 +- src/router/route.ts | 19 +- src/store/route-list.ts | 15 +- 7 files changed, 197 insertions(+), 176 deletions(-) diff --git a/src/layout/components/Main/index.vue b/src/layout/components/Main/index.vue index 4c4e8e8..5e75534 100644 --- a/src/layout/components/Main/index.vue +++ b/src/layout/components/Main/index.vue @@ -1,35 +1,31 @@ - - - - - + + + + + diff --git a/src/layout/components/Menu/index.vue b/src/layout/components/Menu/index.vue index 8fa6e71..a04d72f 100644 --- a/src/layout/components/Menu/index.vue +++ b/src/layout/components/Menu/index.vue @@ -1,5 +1,5 @@ @@ -9,13 +9,25 @@ import MenuItem from "@/layout/components/Menu/menu-item.vue"; import { storeToRefs } from "pinia"; import { useThemeConfig } from "@/store/theme-config"; import { useRoutesListStore } from "@/store/route-list"; - +import { useRouter } from "vue-router"; +const router = useRouter(); const routerStore = useRoutesListStore(); -const { routeTree } = storeToRefs(routerStore); +const { routeTree, routeList } = storeToRefs(routerStore); const themeStore = useThemeConfig(); const { collapsed } = storeToRefs(themeStore); console.log("路由树", routeTree.value); + +const onMenuItem = (key: string) => { + let find = routeList.value.find((item: Menu.MenuOptions) => item.name === key); + console.log("当前", find); + if (find) { + routerStore.setTagsList(find); + router.push(find.path); + } else { + router.push("/404"); + } +}; diff --git a/src/layout/components/Menu/menu-item.vue b/src/layout/components/Menu/menu-item.vue index e48cb57..0276f47 100644 --- a/src/layout/components/Menu/menu-item.vue +++ b/src/layout/components/Menu/menu-item.vue @@ -7,7 +7,7 @@ - + diff --git a/src/layout/components/Tabs/index.vue b/src/layout/components/Tabs/index.vue index 1f620ea..26dfc5b 100644 --- a/src/layout/components/Tabs/index.vue +++ b/src/layout/components/Tabs/index.vue @@ -1,122 +1,129 @@ - - - - - + + + + + diff --git a/src/router/route-output.ts b/src/router/route-output.ts index 26f4ef3..9266f3e 100644 --- a/src/router/route-output.ts +++ b/src/router/route-output.ts @@ -39,7 +39,7 @@ export async function initSetRouter() { export function setCacheName(flattenedArray: any) { const store = useRoutesListStore(pinia); const cacheName = flattenedArray.map((item: any) => item.name); - store.setrouteNames(cacheName); // 缓存路由name + store.setRouteNames(cacheName); // 缓存路由name store.setRouteList(flattenedArray); // 缓存路由 } diff --git a/src/router/route.ts b/src/router/route.ts index a5768e7..e71ffda 100644 --- a/src/router/route.ts +++ b/src/router/route.ts @@ -191,16 +191,6 @@ export const staticRoutes = [ * @link 参考:https://router.vuejs.org/zh/guide/essentials/history-mode.html#netlify */ export const notFoundAndNoPower = [ - // 未找到页面的时候跳转该页面 - { - path: "/:path(.*)*", - name: "notFound", - component: () => import("@/views/error/404.vue"), - meta: { - title: "notFound", - isHide: true - } - }, { path: "/401", name: "noPower", @@ -209,5 +199,14 @@ export const notFoundAndNoPower = [ title: "notFound", isHide: true } + }, + { + path: "/:path(.*)*", // 匹配任意路由,兜底,未找到页面的时候跳转该页面 + name: "notFound", + component: () => import("@/views/error/404.vue"), + meta: { + title: "notFound", + isHide: true + } } ]; diff --git a/src/store/route-list.ts b/src/store/route-list.ts index 35b8bee..2f89ceb 100644 --- a/src/store/route-list.ts +++ b/src/store/route-list.ts @@ -4,13 +4,14 @@ import { defineStore } from "pinia"; * 路由列表 * @methods setRouteTree 设置路由树 * @methods setRoutesList 设置路由一维数据 - * @methods setrouteNames 设置路由名称集合 + * @methods setRouteNames 设置路由名称集合 */ export const useRoutesListStore = defineStore("routeList", { state: (): any => ({ routeTree: [], // 路由树 - routeList: [], // 路由数据 - routeNames: [] // 路由名称 + routeList: [], // 路由数据-一维 + routeNames: [], // 路由名称 + tagsList: [] // 标签页数据 }), actions: { setRouteTree(data: any) { @@ -19,8 +20,14 @@ export const useRoutesListStore = defineStore("routeList", { setRouteList(data: any) { this.routeList = data; }, - setrouteNames(data: Array) { + setRouteNames(data: Array) { this.routeNames = data; + }, + setTagsList(data: Menu.MenuOptions) { + let isExist = this.tagsList.some((item: Menu.MenuOptions) => item.name === data.name); + if (!isExist) { + this.tagsList.push(data); + } } } });