diff --git a/packages/fes-plugin-layout/src/runtime/views/Menu.vue b/packages/fes-plugin-layout/src/runtime/views/Menu.vue index 8fb3c795..b8d66443 100644 --- a/packages/fes-plugin-layout/src/runtime/views/Menu.vue +++ b/packages/fes-plugin-layout/src/runtime/views/Menu.vue @@ -1,7 +1,7 @@ <template> <FMenu - v-model:expandedKeys="expandedKeysRef" - :model-value="activePath" + v-model:expanded-keys="expandedKeysRef" + v-model="activeMenu" :inverted="inverted" :mode="mode" :options="transformedMenus" @@ -12,9 +12,9 @@ </template> <script> -import { computed, h, ref, watch } from 'vue'; -import { FMenu } from '@fesjs/fes-design'; import { useRoute, useRouter } from '@@/core/coreExports'; +import { FMenu } from '@fesjs/fes-design'; +import { computed, h, nextTick, ref, watch } from 'vue'; import { transform as transformByAccess } from '../helpers/pluginAccess'; import { transform as transformByLocale } from '../helpers/pluginLocale'; import { flatNodes } from '../helpers/utils'; @@ -79,6 +79,7 @@ export default { const router = useRouter(); const transformedMenus = computed(() => transformByLocale(transformByAccess(transform(props.menus)))); const menuArray = computed(() => flatNodes(transformedMenus.value)); + const activePath = computed(() => { const matchMenus = menuArray.value.filter((menu) => { const match = menu.match; @@ -96,6 +97,12 @@ export default { return matchMenus[0].path; }); + const activeMenu = ref(activePath.value); + + watch(activePath, () => { + activeMenu.value = activePath.value; + }); + const expandedKeysRef = ref(props.expandedKeys); watch( @@ -132,9 +139,17 @@ export default { query: currentMenu?.query || {}, params: currentMenu?.params || {}, }); + // TODO 有受控模式之后优化 + nextTick(() => { + activeMenu.value = activePath.value; + }); window.open(resolved.href, '_blank'); } else if (/^https?:\/\//.test(path)) { + // TODO 有受控模式之后优化 + nextTick(() => { + activeMenu.value = activePath.value; + }); window.open(path, '_blank'); } else if (/^\//.test(path)) { @@ -150,6 +165,7 @@ export default { }; return { + activeMenu, activePath, expandedKeysRef, transformedMenus,