|
|
@@ -1,14 +1,35 @@
|
|
|
<template>
|
|
|
<div class="menu-bar-container">
|
|
|
<!-- logo -->
|
|
|
- <div class="logo" :style="{'background-color':themeColor}" :class="collapse?'menu-bar-collapse-width':'menu-bar-width'" @click="$router.push('/')">
|
|
|
+ <div
|
|
|
+ class="logo"
|
|
|
+ :style="{'background-color':themeColor}"
|
|
|
+ :class="collapse?'menu-bar-collapse-width':'menu-bar-width'"
|
|
|
+ @click="$router.push('/')"
|
|
|
+ >
|
|
|
<img v-if="collapse" src="@/assets/image/logo.png" />
|
|
|
- <div v-if="!collapse">{{appName}} <img src="@/assets/image/logo.png" /></div>
|
|
|
+ <div v-if="!collapse">
|
|
|
+ {{appName}}
|
|
|
+ <img src="@/assets/image/logo.png" />
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<!-- 导航菜单 -->
|
|
|
- <el-menu ref="navmenu" default-active="" :class="collapse?'menu-bar-collapse-width':'menu-bar-width'" :collapse="collapse" :collapse-transition="false" :unique-opened="true" background-color="#393D49" @open="handleopen" @close="handleclose" @select="handleselect">
|
|
|
+ <el-menu
|
|
|
+ ref="navmenu"
|
|
|
+ :default-active="$route.meta.index"
|
|
|
+ :class="collapse?'menu-bar-collapse-width':'menu-bar-width'"
|
|
|
+ :collapse="collapse"
|
|
|
+ :collapse-transition="false"
|
|
|
+ :unique-opened="true"
|
|
|
+ @open="handleopen"
|
|
|
+ @close="handleclose"
|
|
|
+ @select="handleselect"
|
|
|
+ background-color="#393D49"
|
|
|
+ text-color="#fff"
|
|
|
+ active-text-color="#fff"
|
|
|
+ >
|
|
|
<!-- 导航菜单树组件,动态加载菜单 -->
|
|
|
- <menu-tree v-for="item in leftTree" :key="item.id" :menu="item" ></menu-tree>
|
|
|
+ <menu-tree v-for="item in leftTree" :key="item.id" :menu="item"></menu-tree>
|
|
|
</el-menu>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -18,15 +39,15 @@ import { mapState } from "vuex";
|
|
|
import MenuTree from "@/components/MenuTree";
|
|
|
export default {
|
|
|
components: {
|
|
|
- MenuTree,
|
|
|
+ MenuTree
|
|
|
},
|
|
|
computed: {
|
|
|
...mapState({
|
|
|
- appName: (state) => state.app.appName,
|
|
|
- themeColor: (state) => state.app.themeColor,
|
|
|
- collapse: (state) => state.app.collapse,
|
|
|
- navTree: (state) => state.menu.navTree,
|
|
|
- leftTree: (state) => state.menu.leftTree,
|
|
|
+ appName: state => state.app.appName,
|
|
|
+ themeColor: state => state.app.themeColor,
|
|
|
+ collapse: state => state.app.collapse,
|
|
|
+ navTree: state => state.menu.navTree,
|
|
|
+ leftTree: state => state.menu.leftTree
|
|
|
}),
|
|
|
mainTabs: {
|
|
|
get() {
|
|
|
@@ -34,7 +55,7 @@ export default {
|
|
|
},
|
|
|
set(val) {
|
|
|
this.$store.commit("updateMainTabs", val);
|
|
|
- },
|
|
|
+ }
|
|
|
},
|
|
|
mainTabsActiveName: {
|
|
|
get() {
|
|
|
@@ -42,31 +63,28 @@ export default {
|
|
|
},
|
|
|
set(val) {
|
|
|
this.$store.commit("updateMainTabsActiveName", val);
|
|
|
- },
|
|
|
- },
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
watch: {
|
|
|
- $route: "handleRoute",
|
|
|
+ $route: "handleRoute"
|
|
|
},
|
|
|
created() {
|
|
|
this.handleRoute(this.$route);
|
|
|
},
|
|
|
methods: {
|
|
|
- handleopen() {
|
|
|
- },
|
|
|
- handleclose() {
|
|
|
- },
|
|
|
- handleselect(a, b) {
|
|
|
- },
|
|
|
+ handleopen() {},
|
|
|
+ handleclose() {},
|
|
|
+ handleselect(a, b) {},
|
|
|
// 路由操作处理
|
|
|
handleRoute(route) {
|
|
|
// tab标签页选中, 如果不存在则先添加
|
|
|
- var tab = this.mainTabs.filter((item) => item.name === route.name)[0];
|
|
|
+ var tab = this.mainTabs.filter(item => item.name === route.name)[0];
|
|
|
if (!tab) {
|
|
|
tab = {
|
|
|
name: route.name,
|
|
|
title: route.name,
|
|
|
- icon: route.meta.icon,
|
|
|
+ icon: route.meta.icon
|
|
|
};
|
|
|
this.mainTabs = this.mainTabs.concat(tab);
|
|
|
}
|
|
|
@@ -76,8 +94,8 @@ export default {
|
|
|
this.$refs.navmenu.activeIndex = "" + route.meta.index;
|
|
|
this.$refs.navmenu.initOpenedMenu();
|
|
|
}
|
|
|
- },
|
|
|
- },
|
|
|
+ }
|
|
|
+ }
|
|
|
};
|
|
|
</script>
|
|
|
|
|
|
@@ -88,13 +106,12 @@ export default {
|
|
|
left: 0;
|
|
|
bottom: 0;
|
|
|
z-index: 1020;
|
|
|
-
|
|
|
.el-menu {
|
|
|
position: absolute;
|
|
|
top: 60px;
|
|
|
bottom: 0px;
|
|
|
text-align: left;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
.logo {
|
|
|
position: absolute;
|