| | |
| | | import { defineComponent, ref, h, compile, computed } from 'vue'; |
| | | import { useI18n } from 'vue-i18n'; |
| | | import { useRoute, useRouter, RouteRecordRaw } from 'vue-router'; |
| | | import type ,{ RouteMeta } from 'vue-router'; |
| | | import type, { RouteMeta } from 'vue-router'; |
| | | import { useAppStore } from '@/store'; |
| | | import { listenerRouteChange } from '@/utils/route-listener'; |
| | | import { openWindow, regexUrl } from '@/utils'; |
| | |
| | | |
| | | const goto = (item: RouteRecordRaw) => { |
| | | // Open external link |
| | | |
| | | if (regexUrl.test(item.path)) { |
| | | openWindow(item.path); |
| | | selectedKey.value = [item.name as string]; |
| | |
| | | } |
| | | // Eliminate external link side effects |
| | | const { hideInMenu, activeMenu } = item.meta as RouteMeta; |
| | | |
| | | if (route.name === item.name && !hideInMenu && !activeMenu) { |
| | | selectedKey.value = [item.name as string]; |
| | | return; |
| | | } |
| | | const firstMenuNameArr=['model','knowledge','session','sessionRecords']; |
| | | const suffix='Manager'; |
| | | if(firstMenuNameArr.indexOf(item.name)!=-1){ |
| | | router.push({ |
| | | name: `${item.name}${suffix}`, |
| | | }); |
| | | } else{ |
| | | router.push({ |
| | | name: item.name, |
| | | }); |
| | | } |
| | | |
| | | // const firstMenuNameArr=['model','knowledge','session','sessionRecords']; |
| | | // const suffix='Manager'; |
| | | // if(firstMenuNameArr.indexOf(item.name)!=-1){ |
| | | // router.push({ |
| | | // name: `${item.name}${suffix}`, |
| | | // }); |
| | | // } else{ |
| | | // router.push({ |
| | | // name: item.name, |
| | | // }); |
| | | // } |
| | | // Trigger router change |
| | | /* router.push({ |
| | | |
| | | router.push({ |
| | | name: item.name, |
| | | });*/ |
| | | }); |
| | | }; |
| | | const findMenuOpenKeys = (target: string) => { |
| | | const result: string[] = []; |
| | |
| | | }; |
| | | listenerRouteChange((newRoute) => { |
| | | const { requiresAuth, activeMenu, hideInMenu } = newRoute.meta; |
| | | if (requiresAuth && (!hideInMenu || activeMenu)) { |
| | | // if (requiresAuth && (!hideInMenu || activeMenu)) {//除去这两个判断后,可以正常展开菜单 |
| | | if (requiresAuth) { |
| | | const menuOpenKeys = findMenuOpenKeys( |
| | | (activeMenu || newRoute.name) as string |
| | | ); |
| | |
| | | activeMenu || menuOpenKeys[menuOpenKeys.length - 1], |
| | | ]; |
| | | } |
| | | console.log(selectedKey.value, 48877); |
| | | }, true); |
| | | const setCollapse = (val: boolean) => { |
| | | if (appStore.device === 'desktop') |
| | |
| | | return travel(menuTree.value); |
| | | }; |
| | | |
| | | // selected-keys={selectedKey.value} |
| | | console.log(selectedKey.value, 68877); |
| | | return () => ( |
| | | <a-menu |
| | | mode={topMenu.value ? 'horizontal' : 'vertical'} |
| | |
| | | v-model:open-keys={openKeys.value} |
| | | show-collapse-button={appStore.device !== 'mobile'} |
| | | auto-open={false} |
| | | selected-keys={selectedKey.value} |
| | | auto-open-selected={true} |
| | | selected-keys={selectedKey.value} |
| | | level-indent={34} |
| | | style="height: 100%;width:100%;" |
| | | onCollapse={setCollapse} |