lilishop-ui/manager/src/views/main-components/shrinkable-menu/shrinkable-menu.vue

75 lines
1.8 KiB
Vue
Raw Normal View History

2021-05-13 10:56:04 +08:00
<template>
<div class="ivu-shrinkable-menu">
<!-- 一级菜单 -->
<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"
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-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);
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);
this.$nextTick(()=>{
this.$refs.childrenMenu.updateActiveName()
})
2021-05-13 10:56:04 +08:00
},
}
};
</script>
<style lang="scss" scoped>
@import "./styles/menu.scss";
</style>