feat: 新增顶部菜单切换、菜单复制新增功能并优化侧边栏渲染
1. 新增顶部菜单选择器,支持切换顶级菜单并动态渲染对应侧边栏 2. 菜单管理页面添加复制新增按钮,可基于现有菜单快速创建新菜单 3. 重构侧边栏路由逻辑,支持自动匹配当前页面所属顶级菜单 4. 在vuex中新增顶部菜单状态管理,持久化激活的顶级菜单
This commit is contained in:
@@ -18,6 +18,8 @@ const getters = {
|
||||
topbarRouters:state => state.permission.topbarRouters,
|
||||
defaultRoutes:state => state.permission.defaultRoutes,
|
||||
sidebarRouters:state => state.permission.sidebarRouters,
|
||||
topMenuList: state => state.permission.topMenuList,
|
||||
activeTopMenu: state => state.permission.activeTopMenu,
|
||||
productList: state => state.category.productList,
|
||||
rawMaterialList: state => state.category.rawMaterialList,
|
||||
bomMap: state => state.category.bomMap,
|
||||
|
||||
@@ -4,6 +4,7 @@ import { getRouters } from '@/api/menu'
|
||||
import Layout from '@/layout/index'
|
||||
import ParentView from '@/components/ParentView'
|
||||
import InnerLink from '@/layout/components/InnerLink'
|
||||
import Cookies from 'js-cookie'
|
||||
|
||||
const permission = {
|
||||
state: {
|
||||
@@ -11,7 +12,9 @@ const permission = {
|
||||
addRoutes: [],
|
||||
defaultRoutes: [],
|
||||
topbarRouters: [],
|
||||
sidebarRouters: []
|
||||
sidebarRouters: [],
|
||||
topMenuList: [],
|
||||
activeTopMenu: Cookies.get('activeTopMenu') || ''
|
||||
},
|
||||
mutations: {
|
||||
SET_ROUTES: (state, routes) => {
|
||||
@@ -27,6 +30,13 @@ const permission = {
|
||||
SET_SIDEBAR_ROUTERS: (state, routes) => {
|
||||
state.sidebarRouters = routes
|
||||
},
|
||||
SET_TOP_MENU_LIST: (state, menus) => {
|
||||
state.topMenuList = menus
|
||||
},
|
||||
SET_ACTIVE_TOP_MENU: (state, path) => {
|
||||
state.activeTopMenu = path
|
||||
Cookies.set('activeTopMenu', path)
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 生成路由
|
||||
@@ -45,9 +55,19 @@ const permission = {
|
||||
commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(sidebarRoutes))
|
||||
commit('SET_DEFAULT_ROUTES', sidebarRoutes)
|
||||
commit('SET_TOPBAR_ROUTES', sidebarRoutes)
|
||||
commit('SET_TOP_MENU_LIST', sidebarRoutes)
|
||||
resolve(rewriteRoutes)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
selectTopMenu({ commit, state }, menuPath) {
|
||||
const menu = state.topMenuList.find(m => m.path === menuPath)
|
||||
if (menu) {
|
||||
commit('SET_ACTIVE_TOP_MENU', menuPath)
|
||||
const children = menu.children ? menu.children.filter(c => !c.hidden) : []
|
||||
commit('SET_SIDEBAR_ROUTERS', constantRoutes.concat(children))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user