<!--导航组件-->
|
<template>
|
<div class="app-sidebar">
|
<div class="box">
|
<div class="logo-view">
|
<!-- <el-image :src="require('@/assets/logo.png')"></el-image> -->
|
</div>
|
<el-menu
|
router
|
unique-opened
|
:default-active="$route.path"
|
class="el-menu-vertical-demo"
|
@select="handleOpen"
|
@close="handleClose"
|
background-color="#314255"
|
text-color="#bfcbd9"
|
active-text-color="#fff"
|
>
|
<el-submenu v-for="item in menus" :key="item.id" :index="item.id">
|
<template slot="title">
|
<i class="el-icon-s-grid icon"></i>
|
<span>{{ item.title }}</span>
|
</template>
|
<el-menu-item v-for="itm in item.children" :key="itm.id" :index="itm.path">{{ itm.title }}</el-menu-item>
|
</el-submenu>
|
</el-menu>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { getMenuTreeByRole } from "@/api/menus/index"
|
import { mapMutations } from "vuex"
|
export default {
|
name: "AppSidebar",
|
props: {},
|
data() {
|
return {
|
menus: []
|
}
|
},
|
watch: {},
|
created() {
|
this.initNavMenu()
|
this.getMenuTreeByRole()
|
},
|
computed: {
|
// ...mapState(['menus']),
|
},
|
methods: {
|
...mapMutations(["setMenus"]),
|
getMenuTreeByRole() {
|
getMenuTreeByRole().then((res) => {
|
res.data.list.map((item) => {
|
if (item.systemType === 3) {
|
this.menus = item.menus
|
}
|
})
|
})
|
},
|
// 监听路由
|
initNavMenu() {
|
// console.log(this.$route.name)
|
},
|
handleOpen(index) {
|
console.log(index, "menuIndex")
|
},
|
handleClose() {}
|
}
|
}
|
</script>
|
|
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
<style lang="scss" scoped>
|
@import "./index.scss";
|
</style>
|