diff --git a/src/layout/header-aside/components/libs/util.menu.js b/src/layout/header-aside/components/libs/util.menu.js index 0f7b27c3..4a672a7e 100644 --- a/src/layout/header-aside/components/libs/util.menu.js +++ b/src/layout/header-aside/components/libs/util.menu.js @@ -1,8 +1,6 @@ -import { uniqueId } from 'lodash' - // 创建 el-menu-item export function elMenuItem (createElement, menu) { - return createElement('el-menu-item', { props: { index: menu.path || uniqueId('d2-menu-empty-') } }, [ + return createElement('el-menu-item', { props: { index: menu.path } }, [ ...menu.icon ? [ createElement('i', { attrs: { class: `fa fa-${menu.icon}` } }) ] : [], @@ -18,7 +16,7 @@ export function elMenuItem (createElement, menu) { // 创建 el-submenu export function elSubmenu (createElement, menu) { - return createElement('el-submenu', { props: { index: menu.path || uniqueId('d2-menu-empty-') } }, [ + return createElement('el-submenu', { props: { index: menu.path } }, [ ...menu.icon ? [ createElement('i', { slot: 'title', attrs: { class: `fa fa-${menu.icon}` } }) ] : [], diff --git a/src/layout/header-aside/components/menu-side/index.js b/src/layout/header-aside/components/menu-side/index.js index 649a2e50..4422cb1e 100644 --- a/src/layout/header-aside/components/menu-side/index.js +++ b/src/layout/header-aside/components/menu-side/index.js @@ -45,14 +45,9 @@ export default { }, 500) }, // 监听路由 控制侧边栏激活状态 - '$route': { - handler ({ fullPath }) { - this.active = fullPath - this.$nextTick(() => { - if (this.aside.length > 0 && this.$refs.menu) { - this.$refs.menu.activeIndex = fullPath - } - }) + '$route.fullPath': { + handler (value) { + this.active = value }, immediate: true } diff --git a/src/store/modules/d2admin/modules/menu.js b/src/store/modules/d2admin/modules/menu.js index 38ab3cd7..a26cba70 100644 --- a/src/store/modules/d2admin/modules/menu.js +++ b/src/store/modules/d2admin/modules/menu.js @@ -1,6 +1,22 @@ +import { uniqueId } from 'lodash' // 设置文件 import setting from '@/setting.js' +/** + * 给菜单数据补充上 path 字段 + * https://github.com/d2-projects/d2-admin/issues/209 + * @param {Array} menu 原始的菜单数据 + */ +function supplementMenuPath (menu) { + return menu.map(e => ({ + ...e, + path: e.path || uniqueId('d2-menu-empty-'), + ...e.children ? { + children: supplementMenuPath(e.children) + } : {} + })) +} + export default { namespaced: true, state: { @@ -77,7 +93,7 @@ export default { */ headerSet (state, menu) { // store 赋值 - state.header = menu + state.header = supplementMenuPath(menu) }, /** * @description 设置侧边栏菜单 @@ -86,7 +102,7 @@ export default { */ asideSet (state, menu) { // store 赋值 - state.aside = menu + state.aside = supplementMenuPath(menu) } } }