备份代码

This commit is contained in:
yiqiuyang
2026-07-30 17:12:26 +08:00
parent 661ee7d7a3
commit 4aa7949e48
14 changed files with 206 additions and 26 deletions

View File

@ -22,18 +22,22 @@ const closeSidebar = () => {
sidebarVisible.value = false
}
const toggleSubMenu = (url) => {
const idx = expandedSubMenus.value.indexOf(url)
const toggleSubMenu = (navId) => {
const idx = expandedSubMenus.value.indexOf(navId)
if (idx > -1) {
expandedSubMenus.value.splice(idx, 1)
} else {
expandedSubMenus.value.push(url)
expandedSubMenus.value.push(navId)
}
}
const getTargetUrl = (nav) => {
return nav.mobileUrl || nav.url
}
const handleNavClick = (nav) => {
if (nav.hasChildren || nav.children?.length > 0) {
toggleSubMenu(nav.url)
toggleSubMenu(nav.id)
return
}
if (nav.open) {
@ -41,9 +45,10 @@ const handleNavClick = (nav) => {
sidebarVisible.value = false
return
}
navStore.changeNavIndex(nav.url)
activeIndex.value = nav.url
router.push(nav.url)
const targetUrl = getTargetUrl(nav)
navStore.changeNavIndex(targetUrl)
activeIndex.value = targetUrl
router.push(targetUrl)
sidebarVisible.value = false
}
@ -83,21 +88,21 @@ const toMIIF = () => {
<div v-if="nav.hasChildren || nav.children?.length > 0" class="nav-group">
<div
class="nav-item nav-item--parent"
:class="{'nav-item--expanded': expandedSubMenus.includes(nav.url)}"
:class="{'nav-item--expanded': expandedSubMenus.includes(nav.id)}"
@click="handleNavClick(nav)"
>
<span class="nav-label">{{ nav.label }}</span>
<el-icon class="nav-arrow" :size="12">
<ArrowDown v-if="expandedSubMenus.includes(nav.url)" />
<ArrowDown v-if="expandedSubMenus.includes(nav.id)" />
<ArrowRight v-else />
</el-icon>
</div>
<div v-show="expandedSubMenus.includes(nav.url)" class="nav-sub">
<div v-show="expandedSubMenus.includes(nav.id)" class="nav-sub">
<div
v-for="child in nav.children"
:key="child.id"
class="nav-item nav-item--child"
:class="{'nav-item--active': activeIndex === child.url}"
:class="{'nav-item--active': activeIndex === getTargetUrl(child)}"
@click="handleNavClick(child)"
>
{{ child.label }}
@ -108,7 +113,7 @@ const toMIIF = () => {
<div
v-else
class="nav-item"
:class="{'nav-item--active': activeIndex === nav.url}"
:class="{'nav-item--active': activeIndex === getTargetUrl(nav)}"
@click="handleNavClick(nav)"
>
<span class="nav-label">{{ nav.label }}</span>