2026-07-30 17:59:43 +08:00
|
|
|
<script setup lang="ts">
|
2026-08-03 18:49:18 +08:00
|
|
|
import type { AdminNavigationNode } from '@/core/navigation/adminNavigation'
|
2026-07-30 17:59:43 +08:00
|
|
|
|
|
|
|
|
defineOptions({ name: 'AdminSidebarMenuNode' })
|
|
|
|
|
|
|
|
|
|
defineProps<{
|
|
|
|
|
node: AdminNavigationNode
|
2026-08-03 15:50:24 +08:00
|
|
|
level?: number
|
2026-07-30 17:59:43 +08:00
|
|
|
}>()
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<template>
|
2026-10-20 23:34:11 +08:00
|
|
|
<el-sub-menu v-if="node.children?.length" :index="node.key" popper-class="admin-workbench shell-nav-popper">
|
2026-07-30 17:59:43 +08:00
|
|
|
<template #title>
|
2026-08-03 15:50:24 +08:00
|
|
|
<component
|
|
|
|
|
v-if="!level"
|
|
|
|
|
:is="node.icon"
|
|
|
|
|
class="menu-icon"
|
|
|
|
|
:style="{ color: node.iconColor }"
|
|
|
|
|
:size="20"
|
|
|
|
|
:stroke-width="1.9"
|
|
|
|
|
/>
|
2026-07-30 17:59:43 +08:00
|
|
|
<span>{{ node.title }}</span>
|
|
|
|
|
</template>
|
|
|
|
|
|
2026-08-03 15:50:24 +08:00
|
|
|
<AdminSidebarMenuNode v-for="child in node.children" :key="child.key" :node="child" :level="(level ?? 0) + 1" />
|
2026-07-30 17:59:43 +08:00
|
|
|
</el-sub-menu>
|
|
|
|
|
|
|
|
|
|
<el-menu-item v-else :index="node.path || node.key">
|
2026-08-03 15:50:24 +08:00
|
|
|
<component
|
|
|
|
|
v-if="!level"
|
|
|
|
|
:is="node.icon"
|
|
|
|
|
class="menu-icon"
|
|
|
|
|
:style="{ color: node.iconColor }"
|
|
|
|
|
:size="20"
|
|
|
|
|
:stroke-width="1.9"
|
|
|
|
|
/>
|
2026-07-30 17:59:43 +08:00
|
|
|
<template #title>{{ node.title }}</template>
|
|
|
|
|
</el-menu-item>
|
|
|
|
|
</template>
|