Browse Source

fix(menu): 菜单高亮功能

zhangrenyuan/feature-20250728113353-金币前端三期
lihui 1 week ago
parent
commit
65e622172d
  1. 34
      src/views/home.vue

34
src/views/home.vue

@ -1,7 +1,7 @@
<script setup>
//
import {ref} from 'vue'
import {useRouter} from 'vue-router'
import {computed, ref} from 'vue'
import {useRoute, useRouter} from 'vue-router'
import {ElMessage} from 'element-plus'
import dmmn from '../assets/link.png'
import ChangePassword from '@/components/changePassword.vue'
@ -21,7 +21,35 @@ const {adminData, menuTree} = storeToRefs(adminStore)
menuList.value = filterMenu(menuTree.value)
console.log("menuList", menuList.value)
//
const route = useRoute()
// index
function findBestMatch(menuList, path) {
let bestMatch = ''
function traverse(menus) {
for (const item of menus) {
const itemPath = getRoutePath(item)
// path
if (path.startsWith(itemPath) && itemPath.length > bestMatch.length) {
bestMatch = itemPath
}
if (item.children && item.children.length > 0) {
traverse(item.children)
}
}
}
traverse(menuList)
return bestMatch || path // fallback
}
//
const activeMenu = computed(() => {
return findBestMatch(menuList.value, route.path)
})
const router = useRouter()
const imgrule1 = dmmn
const messageVisible = ref(false)
@ -81,7 +109,7 @@ function logout() {
<el-menu
:router="true"
class="el-menu-vertical-demo"
:default-active="$route.path"
:default-active="activeMenu"
>
<!-- 递归渲染菜单层级 -->
<template v-for="menu in menuList" :key="menu.id">

Loading…
Cancel
Save