2021-05-13 10:56:04 +08:00
|
|
|
<template>
|
|
|
|
<div class="ivu-shrinkable-menu">
|
|
|
|
<!-- 一级菜单 -->
|
2021-05-27 10:32:05 +08:00
|
|
|
<Menu ref="sideMenu" width="80px" theme="dark" :active-name="currNav" @on-select="selectNav">
|
2021-05-13 10:56:04 +08:00
|
|
|
<MenuItem v-for="(item, i) in navList" :key="i" :name="item.name">
|
|
|
|
{{item.title}}
|
|
|
|
</MenuItem>
|
|
|
|
</Menu>
|
|
|
|
<!-- 二级菜单 -->
|
|
|
|
<Menu
|
|
|
|
ref="childrenMenu"
|
|
|
|
:active-name="$route.name"
|
2021-05-27 10:32:05 +08:00
|
|
|
width="100px"
|
2021-05-13 10:56:04 +08:00
|
|
|
@on-select="changeMenu"
|
|
|
|
>
|
|
|
|
<template v-for="item in menuList">
|
|
|
|
<MenuGroup :title="item.title" :key="item.id" style="padding-left:0;">
|
|
|
|
<MenuItem :name="menu.name" v-for="menu in item.children" :key="menu.name">
|
|
|
|
{{menu.title}}
|
|
|
|
</MenuItem>
|
|
|
|
</MenuGroup>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
</Menu>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import util from "@/libs/util.js";
|
2021-07-23 11:46:01 +08:00
|
|
|
|
2021-05-13 10:56:04 +08:00
|
|
|
export default {
|
|
|
|
name: "shrinkableMenu",
|
|
|
|
computed: {
|
|
|
|
menuList() {
|
|
|
|
return this.$store.state.app.menuList;
|
|
|
|
},
|
|
|
|
navList() {
|
|
|
|
return this.$store.state.app.navList;
|
|
|
|
},
|
2021-07-07 16:03:48 +08:00
|
|
|
currNav() {
|
|
|
|
return this.$store.state.app.currNav;
|
|
|
|
}
|
2021-05-13 10:56:04 +08:00
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
// 监听路由变化
|
|
|
|
$route: {
|
|
|
|
handler: function (val, oldVal) {
|
|
|
|
console.log(val);
|
2021-07-23 11:46:01 +08:00
|
|
|
if (val.meta.firstRouterName && val.meta.firstRouterName !== this.currNav) {
|
|
|
|
this.selectNav(val.meta.firstRouterName)
|
|
|
|
}
|
2021-05-13 10:56:04 +08:00
|
|
|
}
|
2021-07-07 16:03:48 +08:00
|
|
|
}
|
2021-05-13 10:56:04 +08:00
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
changeMenu(name) { //二级路由点击
|
|
|
|
this.$router.push({
|
|
|
|
name: name
|
|
|
|
});
|
|
|
|
},
|
2021-07-07 15:34:38 +08:00
|
|
|
selectNav(name) { // 一级路由点击事件
|
2021-05-13 10:56:04 +08:00
|
|
|
this.$store.commit("setCurrNav", name);
|
|
|
|
this.setStore("currNav", name);
|
|
|
|
util.initRouter(this);
|
2021-07-23 11:46:01 +08:00
|
|
|
this.$nextTick(()=>{
|
|
|
|
this.$refs.childrenMenu.updateActiveName()
|
|
|
|
})
|
2021-05-13 10:56:04 +08:00
|
|
|
},
|
|
|
|
}
|
|
|
|
};
|
|
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import "./styles/menu.scss";
|
|
|
|
</style>
|