fix:菜单复合模式下,点击一级菜单会自动选择首位子菜单,不含子菜单则定位为顶栏本体。
This commit is contained in:
@@ -73,6 +73,7 @@ export const useRouterStore = defineStore('router', () => {
|
|||||||
const setLeftMenu = (name) => {
|
const setLeftMenu = (name) => {
|
||||||
sessionStorage.setItem('topActive', name)
|
sessionStorage.setItem('topActive', name)
|
||||||
topActive.value = name
|
topActive.value = name
|
||||||
|
leftMenu.value = []
|
||||||
if (menuMap[name]?.children) {
|
if (menuMap[name]?.children) {
|
||||||
leftMenu.value = menuMap[name].children
|
leftMenu.value = menuMap[name].children
|
||||||
}
|
}
|
||||||
@@ -81,19 +82,12 @@ export const useRouterStore = defineStore('router', () => {
|
|||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
let topActive = sessionStorage.getItem('topActive')
|
let topActive = sessionStorage.getItem('topActive')
|
||||||
let firstHasChildren = ''
|
|
||||||
asyncRouters.value[0]?.children.forEach((item) => {
|
asyncRouters.value[0]?.children.forEach((item) => {
|
||||||
if (item.hidden) return
|
if (item.hidden) return
|
||||||
menuMap[item.name] = item
|
menuMap[item.name] = item
|
||||||
if (!firstHasChildren && item.children && item.children.length > 0) {
|
|
||||||
firstHasChildren = item.name
|
|
||||||
}
|
|
||||||
topMenu.value.push({ ...item, children: [] })
|
topMenu.value.push({ ...item, children: [] })
|
||||||
})
|
})
|
||||||
|
|
||||||
if (!menuMap[topActive]?.children && firstHasChildren) {
|
|
||||||
topActive = firstHasChildren
|
|
||||||
}
|
|
||||||
setLeftMenu(topActive)
|
setLeftMenu(topActive)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -129,9 +129,13 @@
|
|||||||
router.push({ name: index, query, params })
|
router.push({ name: index, query, params })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!routerStore.setLeftMenu(index)) {
|
const leftMenu = routerStore.setLeftMenu(index)
|
||||||
|
if (!leftMenu) {
|
||||||
router.push({ name: index, query, params })
|
router.push({ name: index, query, params })
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
const firstMenu = leftMenu.find((item) => !item.hidden && item.path.indexOf("http://") === -1 && item.path.indexOf("https://") === -1)
|
||||||
|
router.push({ name: firstMenu.name, query, params })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user