| | |
| | | </Menu> |
| | | </template> |
| | | <script lang="ts"> |
| | | import type { PropType } from 'vue'; |
| | | import type { MenuState } from './types'; |
| | | import type { Menu as MenuType } from '/@/router/types'; |
| | | |
| | |
| | | |
| | | import Menu from './components/Menu.vue'; |
| | | import SimpleSubMenu from './SimpleSubMenu.vue'; |
| | | import { listenerLastChangeTab } from '/@/logics/mitt/tabChange'; |
| | | import { listenerRouteChange } from '/@/logics/mitt/routeChange'; |
| | | import { propTypes } from '/@/utils/propTypes'; |
| | | import { REDIRECT_NAME } from '/@/router/constant'; |
| | | import { RouteLocationNormalizedLoaded, useRouter } from 'vue-router'; |
| | |
| | | const { currentRoute } = useRouter(); |
| | | const { prefixCls } = useDesign('simple-menu'); |
| | | const { items, accordion, mixSider, collapse } = toRefs(props); |
| | | |
| | | const { setOpenKeys, getOpenKeys } = useOpenKeys( |
| | | menuState, |
| | | items, |
| | |
| | | { immediate: true } |
| | | ); |
| | | |
| | | listenerLastChangeTab((route) => { |
| | | watch( |
| | | () => props.items, |
| | | () => { |
| | | setOpenKeys(currentRoute.value.path); |
| | | }, |
| | | { flush: 'post' } |
| | | ); |
| | | |
| | | listenerRouteChange((route) => { |
| | | if (route.name === REDIRECT_NAME) return; |
| | | |
| | | currentActiveMenu.value = route.meta?.currentActiveMenu as string; |
| | |
| | | menuState.activeName = path; |
| | | |
| | | setOpenKeys(path); |
| | | // if (unref(currentActiveMenu)) return; |
| | | } |
| | | |
| | | async function handleSelect(key: string) { |