You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
234 lines
6.2 KiB
234 lines
6.2 KiB
<template>
|
|
<div>
|
|
<aside :class="['aui-sidebar', 'g-sd']">
|
|
<div class="m-nav">
|
|
<div class="nav">
|
|
<div class="nav-item" @click="toIndexPage" v-if="false">
|
|
<span>全部菜单</span>
|
|
</div>
|
|
<div
|
|
class="nav-item"
|
|
:class="{ 'z-on': $store.state.LevelOneMenuActiveName == '' }"
|
|
@click="toIndexPage"
|
|
>
|
|
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
|
|
<use xlink:href="#icon-desktop" />
|
|
</svg>
|
|
<span>首页</span>
|
|
</div>
|
|
<div
|
|
class="nav-item"
|
|
:class="{ 'z-on': menu.id == $store.state.LevelOneMenuActiveName }"
|
|
v-show="menu.showFlag == 1 && menu.name != '社区一张表' && menu.name != 'AI小助手' "
|
|
v-for="(menu, idx) in $store.state.sidebarMenuList"
|
|
:key="menu.id"
|
|
@click="gotoRouteHandle(menu.id, idx)"
|
|
>
|
|
<svg
|
|
v-if="menu.icon"
|
|
class="icon-svg aui-sidebar__menu-icon"
|
|
aria-hidden="true"
|
|
>
|
|
<use :xlink:href="`#${menu.icon}`" />
|
|
</svg>
|
|
<span>{{ menu.name }} </span>
|
|
</div>
|
|
<!-- <div class="nav-div"></div> -->
|
|
<!-- <div class="nav-item" @click="$router.push({ name: 'dataBoard' })">
|
|
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
|
|
<use xlink:href="#icon-stock" />
|
|
</svg>
|
|
<span>可视化</span>
|
|
</div> -->
|
|
<!-- <div class="nav-item" @click="$router.push({ name: 'main-shuju' })">
|
|
<svg class="icon-svg aui-sidebar__menu-icon" aria-hidden="true">
|
|
<use xlink:href="#icon-stock" />
|
|
</svg>
|
|
<span>可视化旧</span>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
<div
|
|
class="m-folder"
|
|
v-show="$store.state.sidebarActiveSubMenuList.length != 0"
|
|
@click="$store.state.sidebarFold = !$store.state.sidebarFold"
|
|
>
|
|
<img
|
|
v-show="!$store.state.sidebarFold"
|
|
class="z-normal"
|
|
src="~@/assets/images/main/fold.png"
|
|
/>
|
|
<img
|
|
v-show="!$store.state.sidebarFold"
|
|
class="z-on"
|
|
src="~@/assets/images/main/fold-on.png"
|
|
/>
|
|
<img
|
|
v-show="$store.state.sidebarFold"
|
|
class="z-normal"
|
|
src="~@/assets/images/main/unfold.png"
|
|
/>
|
|
<img
|
|
v-show="$store.state.sidebarFold"
|
|
class="z-on"
|
|
src="~@/assets/images/main/unfold-on.png"
|
|
/>
|
|
</div>
|
|
<div
|
|
class="aui-sidebar_wrap"
|
|
v-show="$store.state.sidebarActiveSubMenuList.length != 0"
|
|
>
|
|
<div class="aui-sidebar__inner">
|
|
<el-menu
|
|
:default-active="$store.state.sidebarMenuActiveName"
|
|
:collapse="$store.state.sidebarFold"
|
|
:unique-opened="true"
|
|
:collapseTransition="false"
|
|
class="aui-sidebar__menu"
|
|
>
|
|
<sub-menu
|
|
v-for="menu in $store.state.sidebarActiveSubMenuList"
|
|
:key="menu.id"
|
|
:menu="menu"
|
|
/>
|
|
</el-menu>
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import SubMenu from "./main-sidebar-sub-menu";
|
|
export default {
|
|
data() {
|
|
return {};
|
|
},
|
|
components: {
|
|
SubMenu,
|
|
},
|
|
computed: {
|
|
userType() {
|
|
return localStorage.getItem("userType");
|
|
},
|
|
},
|
|
created() {
|
|
this.$store.state.sidebarMenuList = window.SITE_CONFIG["menuList"];
|
|
},
|
|
methods: {
|
|
toIndexPage() {
|
|
this.$router.push({ name: "home" });
|
|
// this.$router.replace("/index");
|
|
},
|
|
// 通过menuId与动态(菜单)路由进行匹配跳转至指定路由
|
|
gotoRouteHandle(menuId, idx) {
|
|
var route = window.SITE_CONFIG["dynamicMenuRoutes"].filter(
|
|
(item) => item.meta.menuId === menuId
|
|
)[0];
|
|
if (route) {
|
|
if (route.meta.iframeURL.endsWith("【跳转新页面】")) {
|
|
return window.open(route.meta.iframeURL.slice(0, -7));
|
|
} else {
|
|
this.$router.push({ name: route.name });
|
|
}
|
|
}
|
|
this.$store.state.sidebarMenuList[idx].children || [];
|
|
const { sidebarMenuList } = this.$store.state;
|
|
const firstChild = sidebarMenuList[idx].children[0];
|
|
const id = firstChild.children.length === 0 ? firstChild.id : firstChild.children[0].id;
|
|
this.$store.state.LevelTowMenuActiveName = id;
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
@import "~@/assets/scss/c/function.scss";
|
|
.el-menu--collapse .el-submenu__title span,
|
|
.el-menu--collapse .el-menu-item span {
|
|
display: none;
|
|
}
|
|
.g-sd {
|
|
display: flex;
|
|
}
|
|
/deep/ .m-folder {
|
|
position: absolute;
|
|
z-index: 100;
|
|
top: 50px;
|
|
right: -16px;
|
|
width: 32px;
|
|
height: 32px;
|
|
background: #ffffff;
|
|
box-shadow: 0px 5px 12px 4px rgba(0, 0, 0, 0.09),
|
|
0px 3px 6px 0px rgba(0, 0, 0, 0.12), 0px 1px 2px -2px rgba(0, 0, 0, 0.16);
|
|
line-height: 32px;
|
|
font-size: 18px;
|
|
text-align: center;
|
|
color: #666;
|
|
border-radius: 100%;
|
|
overflow: hidden;
|
|
cursor: pointer;
|
|
&:hover {
|
|
.z-on {
|
|
display: block;
|
|
}
|
|
.z-normal {
|
|
display: none;
|
|
}
|
|
}
|
|
.z-on {
|
|
display: none;
|
|
}
|
|
.z-normal {
|
|
display: block;
|
|
}
|
|
img {
|
|
position: absolute;
|
|
display: block;
|
|
width: 16px;
|
|
height: 16px;
|
|
@include hub;
|
|
}
|
|
}
|
|
/deep/ .m-nav {
|
|
box-sizing: border-box;
|
|
padding: 25px 0;
|
|
flex-shrink: 0;
|
|
width: 64px;
|
|
height: 100%;
|
|
background: #0056d6;
|
|
overflow-y: auto;
|
|
&::-webkit-scrollbar {
|
|
width: 1px;
|
|
}
|
|
.nav {
|
|
color: rgba(#ffffff, 0.85);
|
|
.nav-div {
|
|
margin: 20px auto;
|
|
width: 28px;
|
|
height: 1px;
|
|
background: #ffffff;
|
|
border-radius: 1px;
|
|
opacity: 0.45;
|
|
}
|
|
.nav-item {
|
|
font-size: 13px;
|
|
text-align: center;
|
|
padding: 11px 0 9px 0;
|
|
cursor: pointer;
|
|
.icon-svg {
|
|
margin: 0 auto;
|
|
font-size: 24px;
|
|
width: 20px !important;
|
|
}
|
|
span {
|
|
display: block;
|
|
line-height: 30px;
|
|
}
|
|
&:hover,
|
|
&.z-on {
|
|
background-color: rgba(#000, 0.1);
|
|
color: rgba(#ffffff, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
|