<template>
|
<div>
|
<!-- 侧边导航栏 -->
|
<el-aside width="200px">
|
<h2 class="siderbar-title" @click="toHome()">遂昌执法平台</h2>
|
<el-scrollbar>
|
<!-- 路由 -->
|
<el-menu router class="el-menu-vertical" :default-active="$route.path">
|
<el-submenu
|
:index="menu.url ? menu.url : menu.id.toString()"
|
v-for="menu in menuList"
|
:key="menu.id"
|
class="firstMenu"
|
>
|
<template slot="title">
|
<span slot="prefix" class="icon-padding fisrtSpan">
|
<svg-icon :icon-class="menu.icon"></svg-icon>
|
</span>
|
<span class="fisrtSpan">{{ menu.title }}</span>
|
</template>
|
<template v-if="menu.menuVoArrayList.length > 0">
|
<template v-for="secondMenu in menu.menuVoArrayList">
|
<el-submenu
|
:key="secondMenu.id"
|
v-if="secondMenu.menuVoArrayList.length > 0"
|
:index="
|
secondMenu.url ? secondMenu.url : secondMenu.id.toString()
|
"
|
class="secondMenu"
|
>
|
<template slot="title">
|
<span class="secondSpan">{{ secondMenu.title }}</span>
|
</template>
|
<el-menu-item
|
v-for="thirdMenu in secondMenu.menuVoArrayList"
|
:key="thirdMenu.id"
|
:index="`${thirdMenu.id}`"
|
:route="{ name: thirdMenu.url }"
|
>{{ thirdMenu.title }}</el-menu-item
|
>
|
</el-submenu>
|
|
<el-menu-item
|
v-else
|
:index="`${secondMenu.id}`"
|
:route="{ name: secondMenu.url }"
|
>{{ secondMenu.title }}</el-menu-item
|
>
|
</template>
|
</template>
|
|
<el-menu-item
|
v-else
|
:key="menu.id"
|
:index="`${menu.id}`"
|
:route="{ name: menu.url }"
|
>{{ menu.title }}</el-menu-item
|
>
|
</el-submenu>
|
</el-menu>
|
</el-scrollbar>
|
</el-aside>
|
</div>
|
</template>
|
|
<script>
|
import users from "@/api/users";
|
import router from "@/router";
|
|
export default {
|
data() {
|
return {
|
menuList: [],
|
};
|
},
|
created() {
|
this.loadMenu();
|
},
|
methods: {
|
loadMenu() {
|
const userName = sessionStorage.getItem('name');
|
users.getMenu({ name: userName })
|
.then(res => {
|
this.menuList = res.menus;
|
sessionStorage.setItem('user', JSON.stringify(res));
|
})
|
.catch(err => this.$message.error(err))
|
},
|
toHome(){
|
router.push("/home")
|
}
|
},
|
};
|
</script>
|
|
<style lang="scss" scpoed>
|
.icon-padding {
|
padding-right: 10px;
|
}
|
|
.el-aside {
|
background: #07162e;
|
color: #e9eef3;
|
text-align: center;
|
box-sizing: border-box;
|
position: relative;
|
|
// 固定标题
|
.siderbar-title {
|
position: fixed;
|
text-align: center;
|
margin: 0;
|
font-size: 26px;
|
width: 200px;
|
line-height: 66px;
|
top: 0;
|
left: 0;
|
z-index: 999;
|
}
|
|
.el-scrollbar {
|
height: calc(100vh - 66px);
|
margin-top: 66px;
|
box-sizing: border-box;
|
|
.el-menu {
|
background: linear-gradient(#07162e, #0f2b56);
|
border: 0;
|
|
.firstMenu {
|
background: #07162e;
|
text-align: left;
|
|
&:hover > .el-submenu__title {
|
background-color: #092c4a;
|
}
|
|
&:hover .fisrtSpan {
|
color: #22d3eb;
|
}
|
|
span,
|
span {
|
color: #e9eef3;
|
}
|
|
.el-menu-item {
|
color: #e9eef3;
|
background-color: #07162e;
|
}
|
|
.el-menu-item:hover {
|
background-color: #092c4a;
|
color: #22d3eb;
|
}
|
|
.is-active {
|
background-color: #07162e;
|
color: #22d3eb;
|
}
|
}
|
|
.secondMenu {
|
&:hover > .el-submenu__title {
|
background-color: #092c4a;
|
}
|
|
&:hover .secondSpan {
|
color: #22d3eb;
|
}
|
}
|
|
.thirdMenu {
|
&:hover > .el-submenu__title {
|
background-color: #092c4a;
|
}
|
|
&:hover .thirdSpan {
|
color: #22d3eb;
|
}
|
}
|
|
.is-active {
|
background-color: #092c4a;
|
}
|
}
|
|
.el-scrollbar__wrap {
|
overflow-x: hidden;
|
}
|
}
|
}
|
</style>
|