<template>
<el-container class="layout">
<el-header>
<div class="header-lf">
<div class="logo flx-center">
<img src="@/assets/images/header/logo.png" alt="logo" />
<span>xxx系统</span>
</div>
<ToolBarLeft />
</div>
<ToolBarRight />
</el-header>
<el-container class="classic-content">
<el-aside>
<div class="menu" :style="{ width: isCollapse ? '65px' : '210px' }">
<el-scrollbar>
<el-menu
:default-active="activeMenu"
:router="false"
:collapse="isCollapse"
:collapse-transition="false"
:unique-opened="true"
background-color="#ffffff"
text-color="#303133"
>
<SubMenu :menuList="menuList" />
</el-menu>
</el-scrollbar>
</div>
</el-aside>
<el-container class="classic-main">
<Main />
</el-container>
</el-container>
</el-container>
</template>
<script setup lang="ts" name="layoutClassic">
import Main from '@/layouts/components/Main/index.vue'
import SubMenu from '@/layouts/components/Menu/SubMenu.vue'
import ToolBarLeft from '@/layouts/components/Header/ToolBarLeft.vue'
import ToolBarRight from '@/layouts/components/Header/ToolBarRight.vue'
</script>
<template>
<el-container class="layout">
<el-aside>
<div class="menu" :style="{ width: isCollapse ? '65px' : '210px' }">
<div class="logo flx-center">
<img src="@/assets/images/logo.png" alt="logo" />
<span v-show="!isCollapse">xxx系统</span>
</div>
<el-scrollbar>
<el-menu
:default-active="activeMenu"
:router="false"
:collapse="isCollapse"
:collapse-transition="false"
:unique-opened="true"
background-color="#ffffff"
text-color="#bdbdc0"
active-text-color="#ffffff"
>
<SubMenu :menuList="menuList" />
</el-menu>
</el-scrollbar>
</div>
</el-aside>
<el-container>
<el-header>
<ToolBarLeft />
<ToolBarRight />
</el-header>
<Main />
</el-container>
</el-container>
</template>
<script setup lang="ts" name="layoutVertical">
import Main from '@/layouts/components/Main/index.vue'
import ToolBarLeft from '@/layouts/components/Header/ToolBarLeft.vue'
import ToolBarRight from '@/layouts/components/Header/ToolBarRight.vue'
import SubMenu from '@/layouts/components/Menu/SubMenu.vue'
</script>
<style scoped lang="scss">
<template>
<el-container class="layout">
<el-header>
<div class="logo flx-center">
<img src="@/assets/images/header/logo.png" alt="logo" />
<span>汇博云盘</span>
</div>
<el-menu
mode="horizontal"
:default-active="activeMenu"
:router="false"
:unique-opened="true"
background-color="#fff"
text-color="#dadada"
active-text-color="#ffffff"
>
<template v-for="subItem in menuList" :key="subItem.path">
<el-sub-menu v-if="subItem.children?.length" :index="subItem.path" :key="subItem.path + 'el-sub-menu'">
<template #title>
<el-icon>
<component :is="subItem.meta.icon"></component>
</el-icon>
<span>{{ subItem.meta.title }}</span>
</template>
<SubMenu :menuList="subItem.children" />
</el-sub-menu>
<el-menu-item v-else :index="subItem.path" :key="subItem.path + 'el-menu-item'" @click="handleClickMenu(subItem)">
<el-icon>
<component :is="subItem.meta.icon"></component>
</el-icon>
<template #title>
<span>{{ subItem.meta.title }}</span>
</template>
</el-menu-item>
</template>
</el-menu>
<ToolBarRight />
</el-header>
<Main />
</el-container>
</template>
<script setup lang="ts" name="layoutTransverse">
import Main from '@/layouts/components/Main/index.vue'
import ToolBarRight from '@/layouts/components/Header/ToolBarRight.vue'
import SubMenu from '@/layouts/components/Menu/SubMenu.vue'
</script>
// SubMenu
<template>
<template v-for="subItem in menuList" :key="subItem.path">
<el-sub-menu v-if="subItem.children && subItem.children.length > 0" :index="subItem.path">
<template #title>
<el-icon>
<component :is="subItem.meta.icon"></component>
</el-icon>
<span>{{ subItem.meta.title }}</span>
</template>
<SubMenu :menuList="subItem.children" />
</el-sub-menu>
<el-menu-item v-else :index="subItem.path" @click="handleClickMenu(subItem)">
<el-icon>
<component :is="subItem.meta.icon"></component>
</el-icon>
<template #title>
<span>{{ subItem.meta.title }}</span>
</template>
</el-menu-item>
</template>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router'
defineProps<{ menuList: Menu.MenuOptions[] }>()
const router = useRouter()
const handleClickMenu = (subItem: Menu.MenuOptions) => {
if (subItem.meta.isLink) return window.open(subItem.meta.isLink, '_blank')
router.push(subItem.path)
}
</script>