|  |  |  | 
|---|
|  |  |  | 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 topMenu = computed(() => appStore.topMenu); | 
|---|
|  |  |  | const openKeys = ref<string[]>([]); | 
|---|
|  |  |  | const selectedKey = ref<string[]>([]); | 
|---|
|  |  |  | const flog = ref(false); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | 
|---|
|  |  |  | //   }); | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // Trigger router change | 
|---|
|  |  |  | router.push({ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | router.push({ | 
|---|
|  |  |  | name: item.name, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 
|---|
|  |  |  | }; | 
|---|
|  |  |  | 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') | 
|---|
|  |  |  | 
|---|
|  |  |  | ) : ( | 
|---|
|  |  |  | <a-menu-item | 
|---|
|  |  |  | key={element?.name} | 
|---|
|  |  |  | class={ | 
|---|
|  |  |  | menuTree.value.length == 1 && | 
|---|
|  |  |  | menuTree.value[0].name == 'sessionManager' | 
|---|
|  |  |  | ? 'session-manager' | 
|---|
|  |  |  | : '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | v-slots={{ icon }} | 
|---|
|  |  |  | onClick={() => goto(element)} | 
|---|
|  |  |  | > | 
|---|
|  |  |  | 
|---|
|  |  |  | return travel(menuTree.value); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // selected-keys={selectedKey.value} | 
|---|
|  |  |  | //  v-if={ | 
|---|
|  |  |  | //                 menuTree.value.length == 1 && | 
|---|
|  |  |  | //                 menuTree.value[0].name != 'sessionManager' | 
|---|
|  |  |  | //               } | 
|---|
|  |  |  | console.log(menuTree.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} | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .session-manager { | 
|---|
|  |  |  | display: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|