diff --git a/src/layout/components/Aside/index.vue b/src/layout/components/Aside/index.vue
index 8831d19..1b64175 100644
--- a/src/layout/components/Aside/index.vue
+++ b/src/layout/components/Aside/index.vue
@@ -2,7 +2,7 @@
@@ -12,9 +12,11 @@ import Logo from "@/layout/components/Logo/index.vue";
import Menu from "@/layout/components/Menu/index.vue";
import { storeToRefs } from "pinia";
import { useThemeConfig } from "@/store/modules/theme-config";
-
+import { useRoutesListStore } from "@/store/modules/route-list";
const themeStore = useThemeConfig();
const { collapsed, asideDark } = storeToRefs(themeStore);
+const routerStore = useRoutesListStore();
+const { routeTree } = storeToRefs(routerStore);
diff --git a/src/layout/components/Menu/index.vue b/src/layout/components/Menu/index.vue
index 47cce20..d5f1152 100644
--- a/src/layout/components/Menu/index.vue
+++ b/src/layout/components/Menu/index.vue
@@ -10,7 +10,7 @@
:selected-keys="[currentRoute.name]"
@menu-item-click="onMenuItem"
>
-
+
@@ -23,10 +23,19 @@ import { useRouter } from "vue-router";
import { useRoutingMethod } from "@/hooks/useRoutingMethod";
const router = useRouter();
const routerStore = useRoutesListStore();
-const { routeTree, currentRoute } = storeToRefs(routerStore);
+const { currentRoute } = storeToRefs(routerStore);
const themeStore = useThemeConfig();
const { collapsed, isAccordion, layoutType, asideDark } = storeToRefs(themeStore);
+interface Props {
+ routeTree: Menu.MenuOptions[];
+}
+// props的数据类型
+// type类型参考:https://cn.vuejs.org/guide/typescript/composition-api.html#typing-component-props
+const props = withDefaults(defineProps(), {
+ routeTree: () => []
+});
+
/**
* @description 菜单点击事件
* @param {String} key
@@ -41,14 +50,6 @@ const onMenuItem = (key: string) => {
router.push("/404");
}
};
-
-// const mode = computed(() => {
-// if (layoutType.value === "layoutDefaults") {
-// return "vertical";
-// } else {
-// return "horizontal";
-// }
-// });
diff --git a/src/layout/layout-mixing/index.vue b/src/layout/layout-mixing/index.vue
index 597c462..890c789 100644
--- a/src/layout/layout-mixing/index.vue
+++ b/src/layout/layout-mixing/index.vue
@@ -3,7 +3,7 @@
@@ -19,22 +19,13 @@
-
-
-
-
-
-
- {{ $t(`language.${item.meta.title}`) }}
-
-
-
-
-
-
- {{ $t(`language.${item.meta.title}`) }}
-
-
+
+
+
+
+
+ {{ $t(`language.${item.meta.title}`) }}
+
@@ -52,7 +43,6 @@ import Main from "@/layout/components/Main/index.vue";
import Footer from "@/layout/components/Footer/index.vue";
import Menu from "@/layout/components/Menu/index.vue";
import HeaderRight from "@/layout/components/Header/components/header-right/index.vue";
-import MenuItem from "@/layout/components/Menu/menu-item.vue";
import MenuItemIcon from "@/layout/components/Menu/menu-item-icon.vue";
import { useRouter } from "vue-router";
import { useRoutesListStore } from "@/store/modules/route-list";
@@ -60,27 +50,47 @@ import { useRoutingMethod } from "@/hooks/useRoutingMethod";
import { storeToRefs } from "pinia";
import { useThemeConfig } from "@/store/modules/theme-config";
defineOptions({ name: "LayoutMixing" });
-
-const themeStore = useThemeConfig();
-const { isFooter, collapsed, asideDark } = storeToRefs(themeStore);
-
+const route = useRoute();
const router = useRouter();
const routerStore = useRoutesListStore();
-const { routeTree, currentRoute } = storeToRefs(routerStore);
+const themeStore = useThemeConfig();
+const { isFooter, collapsed, asideDark } = storeToRefs(themeStore);
+const { routeTree } = storeToRefs(routerStore);
// 折叠
const onCollapsed = () => {
themeStore.setCollapsed(!collapsed.value);
};
-/**
- * @description 菜单点击事件
- * @param {String} key
- */
+
+console.log("路由信息", route);
+
+// 由于刷新后,路由信息丢失,所以需要重新获取
+// 混合布局的横向菜单为顶层路由下的一级菜单
+// 这里通过当前路由信息直接获取
+const aciveRoute = computed(() => {
+ if (route.matched.length >= 2) {
+ return route.matched[1].name;
+ } else {
+ return route.matched[0].name;
+ }
+});
+
+// 横向菜单点击事件
+// 将一级菜单下的children给左侧菜单
+// 如果没有children则直接自身菜单给左侧菜单
+const routeList = ref([]);
const onMenuItem = (key: string) => {
const { findLinearArray } = useRoutingMethod();
const find = findLinearArray(key);
// 路由存在则存入并跳转,不存在则跳404
if (find) {
+ // 将父级的chindren给左侧树
+ if (find.children && find.children.length > 0) {
+ routeList.value = find.children;
+ } else {
+ // 如果没有则直接将父级给左侧树,做一级兜底
+ routeList.value = [find];
+ }
router.push(find.path);
} else {
router.push("/404");