<script setup>
|
import slideMenu from "@/views/mainLayout/js/slideMenu";
|
import {useRoute} from "vue-router";
|
import PageHeader from "@/views/mainLayout/components/pageHeader.vue";
|
import logoImg from '@/assets/images/logo1.png';
|
const route = useRoute();
|
const {isCollapse, menuActive, menuData} = slideMenu();
|
menuActive.value = route.path;
|
menuData.value = [
|
{
|
title: "首页",
|
path: "/home",
|
icon: "HomeFilled"
|
},
|
{
|
title: "视频监控",
|
path: "/videoShow",
|
icon: "VideoCameraFilled"
|
},
|
{
|
title: "电池历史数据",
|
path: "/battShow",
|
icon: "TrendCharts"
|
},
|
{
|
title: "用户管理",
|
path: "/user",
|
icon: "UserFilled",
|
children: [
|
{
|
title: "驾驶行为分析图",
|
path: "/user/drivingAnalysis",
|
},
|
{
|
title: "汽车列表",
|
path: "/user/boxList",
|
},
|
{
|
title: "摄像头列表",
|
path: "/user/videoList",
|
},
|
],
|
},
|
];
|
</script>
|
|
<template>
|
<div class="main-layout">
|
<div class="full-height">
|
<div class="main-layout-left" v-show="!isCollapse">
|
<div class="slide-header">
|
<div class="logo-wrapper">
|
<img :src="logoImg" alt="" />
|
</div>
|
<div class="sys-name" v-if="!isCollapse">动力电池安全检测平台</div>
|
</div>
|
<div class="slide-menu">
|
<el-menu
|
:router="true"
|
text-color="#FFFFFF"
|
active-text-color="#FFFFFF"
|
background-color="#01182c"
|
:default-active="menuActive"
|
:unique-opened="true"
|
class="el-menu-vertical"
|
:collapse="isCollapse">
|
<template v-for="menu in menuData" :key="menu.path">
|
<el-sub-menu :index="menu.path" v-if="menu.children">
|
<template #title>
|
<el-icon>
|
<component :is="menu.icon"></component>
|
</el-icon>
|
<span>{{menu.title}}</span>
|
</template>
|
<el-menu-item
|
v-for="children in menu.children"
|
:key="children.path"
|
:index="children.path">{{children.title}}</el-menu-item>
|
</el-sub-menu>
|
<el-menu-item :index="menu.path" v-else>
|
<el-icon>
|
<component :is="menu.icon"></component>
|
</el-icon>
|
<template #title>{{menu.title}}</template>
|
</el-menu-item>
|
</template>
|
</el-menu>
|
</div>
|
<div class="slide-footer"></div>
|
</div>
|
</div>
|
<div class="main-layout-content">
|
<div class="full-height" style="overflow-x: hidden">
|
<div class="main-layout-content-wrapper">
|
<div class="main-layout-content-header">
|
<page-header :is-collapse="isCollapse"></page-header>
|
</div>
|
<div class="main-layout-content-body">
|
<div class="body-absolute">
|
<router-view></router-view>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<div class="main-layout-footer"></div>
|
</div>
|
</template>
|
|
<style lang="less" scoped>
|
.main-layout {
|
display: flex;
|
height: 100%;
|
background-color: #f7f7f7;
|
.main-layout-left {
|
position: relative;
|
display: flex;
|
flex-direction: column;
|
height: 100%;
|
background-color: #01182c;
|
.slide-header {
|
padding: 8px 0;
|
color: #FFFFFF;
|
text-align: center;
|
font-size: 18px;
|
font-weight: bold;
|
white-space: nowrap;
|
.logo-wrapper {
|
display: inline-block;
|
vertical-align: middle;
|
padding: 0 12px;
|
img {
|
width: auto;
|
height: 40px;
|
}
|
}
|
.sys-name {
|
display: inline-block;
|
padding-right: 16px;
|
}
|
}
|
.slide-menu {
|
flex: 1;
|
overflow-y: auto;
|
}
|
}
|
.main-layout-content {
|
flex: 1;
|
overflow-y: auto;
|
}
|
}
|
.main-layout-content-wrapper {
|
display: flex;
|
flex-direction: column;
|
height: 100%;
|
.main-layout-content-body {
|
position: relative;
|
flex: 1;
|
background-color: #FFFFFF;
|
.body-absolute {
|
position: absolute;
|
top: 0;
|
left: 0;
|
right: 0;
|
bottom: 0;
|
}
|
}
|
}
|
.el-menu-vertical {
|
font-size: 40px;
|
border-right: 0;
|
.el-menu-item.is-active{
|
background-color: #1677ff;
|
.el-sub-menu__title {
|
color: #FFFFFF;
|
}
|
}
|
}
|
</style>
|