|
18 | 18 |
|
19 | 19 | <script setup lang="ts">
|
20 | 20 | import { reactive, computed, watch } from 'vue';
|
21 |
| - import { type RouteRecordName, useRoute, useRouter } from 'vue-router'; |
| 21 | + import { useRoute, useRouter } from 'vue-router'; |
22 | 22 | import { Menu } from 'ant-design-vue';
|
23 | 23 | import MenuItem from './menu-item.vue';
|
24 | 24 | import { useUserStore } from '@/store/modules/user';
|
|
35 | 35 | const currentRoute = useRoute();
|
36 | 36 | const router = useRouter();
|
37 | 37 | const state = reactive({
|
38 |
| - openKeys: [] as (RouteRecordName | undefined)[], |
39 |
| - selectedKeys: [currentRoute.name], |
| 38 | + openKeys: [] as string[], |
| 39 | + selectedKeys: [currentRoute.name] as string[], |
40 | 40 | });
|
41 | 41 |
|
42 | 42 | const menus = computed(() => {
|
|
52 | 52 | };
|
53 | 53 |
|
54 | 54 | // 获取当前打开的子菜单
|
55 |
| - function getOpenKeys() { |
| 55 | + const getOpenKeys = () => { |
56 | 56 | const meta = currentRoute.meta;
|
57 | 57 | if (meta?.activeMenu) {
|
58 | 58 | const targetMenu = getTargetMenuByActiveMenuName(meta.activeMenu);
|
59 | 59 | return targetMenu?.meta?.namePath ?? [meta?.activeMenu];
|
60 | 60 | }
|
61 | 61 |
|
62 |
| - return meta?.hideInMenu |
63 |
| - ? state?.openKeys || [] |
64 |
| - : currentRoute.meta?.namePath ?? currentRoute.matched.slice(1).map((n) => n.name); |
65 |
| - } |
| 62 | + return ( |
| 63 | + meta?.hideInMenu |
| 64 | + ? state?.openKeys || [] |
| 65 | + : currentRoute.meta?.namePath ?? currentRoute.matched.slice(1).map((n) => n.name) |
| 66 | + ) as string[]; |
| 67 | + }; |
66 | 68 |
|
67 | 69 | // 监听菜单收缩状态
|
68 | 70 | watch(
|
69 | 71 | () => props.collapsed,
|
70 | 72 | (newVal) => {
|
71 | 73 | state.openKeys = newVal ? [] : getOpenKeys();
|
72 |
| - state.selectedKeys = [currentRoute.name]; |
| 74 | + state.selectedKeys = [currentRoute.name] as string[]; |
73 | 75 | },
|
74 | 76 | );
|
75 | 77 |
|
|
82 | 84 | const meta = currentRoute.meta;
|
83 | 85 | if (meta?.activeMenu) {
|
84 | 86 | const targetMenu = getTargetMenuByActiveMenuName(meta.activeMenu);
|
85 |
| - state.selectedKeys = [targetMenu?.name ?? meta?.activeMenu]; |
| 87 | + state.selectedKeys = [targetMenu?.name ?? meta?.activeMenu] as string[]; |
86 | 88 | } else {
|
87 |
| - state.selectedKeys = [currentRoute.meta?.activeMenu ?? currentRoute.name]; |
| 89 | + state.selectedKeys = [currentRoute.meta?.activeMenu ?? currentRoute.name] as string[]; |
88 | 90 | }
|
89 | 91 | },
|
90 | 92 | {
|
|
0 commit comments