|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
<template>
|
|
|
<el-menu
|
|
<el-menu
|
|
|
:default-openeds="openKeys"
|
|
:default-openeds="openKeys"
|
|
|
- :default-active="selectedKeys"
|
|
|
|
|
|
|
+ :default-active="getSelectedKeys"
|
|
|
:theme="getTheme"
|
|
:theme="getTheme"
|
|
|
:collapse="getCollapsed"
|
|
:collapse="getCollapsed"
|
|
|
:collapse-transition="false"
|
|
:collapse-transition="false"
|
|
@@ -12,7 +12,7 @@
|
|
|
@open="subMenuItemClick"
|
|
@open="subMenuItemClick"
|
|
|
>
|
|
>
|
|
|
<template v-for="item in menus" :key="item.key">
|
|
<template v-for="item in menus" :key="item.key">
|
|
|
- <el-menu-item v-if="!item.children" :index="item.key">
|
|
|
|
|
|
|
+ <el-menu-item v-if="!item.children" :key="getMenuKey(item.key)" :index="item.key">
|
|
|
<template #title>
|
|
<template #title>
|
|
|
<el-icon v-if="item.icon"><component :is="item.icon" /></el-icon>
|
|
<el-icon v-if="item.icon"><component :is="item.icon" /></el-icon>
|
|
|
<span>{{ item.title }}</span>
|
|
<span>{{ item.title }}</span>
|
|
@@ -36,7 +36,9 @@
|
|
|
|
|
|
|
|
const collapsed = inject('collapsed');
|
|
const collapsed = inject('collapsed');
|
|
|
|
|
|
|
|
- const { getMenuSetting, getNavTheme } = useProjectSetting();
|
|
|
|
|
|
|
+ const { getMenuSetting, getNavMode, getNavTheme } = useProjectSetting();
|
|
|
|
|
+
|
|
|
|
|
+ const navMode = getNavMode;
|
|
|
|
|
|
|
|
defineEmits(['update:collapsed']);
|
|
defineEmits(['update:collapsed']);
|
|
|
|
|
|
|
@@ -82,6 +84,13 @@
|
|
|
return getMenuSetting.value.uniqueOpened;
|
|
return getMenuSetting.value.uniqueOpened;
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+ const getSelectedKeys = computed(() => {
|
|
|
|
|
+ let location = props.location;
|
|
|
|
|
+ return location === 'left' || (location === 'header' && unref(navMode) === 'horizontal')
|
|
|
|
|
+ ? unref(selectedKeys)
|
|
|
|
|
+ : unref(headerMenuSelectKey);
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
// 监听分割菜单
|
|
// 监听分割菜单
|
|
|
watch(
|
|
watch(
|
|
|
() => settingStore.menuSetting.mixMenu,
|
|
() => settingStore.menuSetting.mixMenu,
|
|
@@ -102,6 +111,10 @@
|
|
|
},
|
|
},
|
|
|
);
|
|
);
|
|
|
|
|
|
|
|
|
|
+ function getMenuKey(key) {
|
|
|
|
|
+ return `${props.location}_${key}`;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
function updateMenu() {
|
|
function updateMenu() {
|
|
|
if (!settingStore.menuSetting.mixMenu) {
|
|
if (!settingStore.menuSetting.mixMenu) {
|
|
|
menus.value = generatorMenu(asyncRouteStore.getMenus);
|
|
menus.value = generatorMenu(asyncRouteStore.getMenus);
|