<template>
|
<template v-for="(item, i) in routes" :key="i">
|
<el-menu-item-group v-if="item.group" :title="item.name">
|
<MenuItems :routes="item.children" @navPage="(...e) => navPage(item, ...e)"> </MenuItems>
|
</el-menu-item-group>
|
<el-sub-menu v-else-if="item.children" :index="item.name">
|
<template #title>
|
<el-icon>
|
<Icon :icon="item.icon" />
|
</el-icon>
|
<span>{{ item.name }}</span>
|
</template>
|
<MenuItems :routes="item.children" @navPage="(...e) => navPage(item, ...e)"> </MenuItems>
|
</el-sub-menu>
|
<el-menu-item v-else :index="item.path" @click="navPage(item)">
|
<el-icon v-if="item.icon">
|
<Icon :icon="item.icon" />
|
</el-icon>
|
<template #title>{{ item.name }}</template>
|
</el-menu-item>
|
</template>
|
</template>
|
|
<script setup>
|
/**
|
* 支持2层菜单
|
*/
|
import { Icon } from '@iconify/vue'
|
|
const props = defineProps({
|
routes: {
|
type: Array,
|
},
|
})
|
|
const emits = defineEmits(['navPage'])
|
|
function navPage(...item) {
|
emits('navPage', ...item)
|
}
|
</script>
|
<style scoped lang="scss">
|
:deep(.el-menu-item-group__title) {
|
color: rgb(204, 204, 204);
|
}
|
</style>
|