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.
126 lines
3.9 KiB
126 lines
3.9 KiB
<template> |
|
<div> |
|
<el-menu |
|
class="sidebar-el-menu" |
|
:default-active="onRoutes" |
|
background-color="#324157" |
|
text-color="#bfcbd9" |
|
active-text-color="#9278FF" |
|
unique-opened |
|
mode="horizontal" |
|
router |
|
@select="handleSelect" |
|
> |
|
<template v-for="item in items"> |
|
<template v-if="item.subs"> |
|
<el-submenu :index="item.index" :key="item.index"> |
|
<template slot="title"> |
|
<i :class="item.icon"></i> |
|
<span slot="title">{{ item.title }}</span> |
|
</template> |
|
<template v-for="subItem in item.subs"> |
|
<el-submenu |
|
v-if="subItem.subs" |
|
:index="subItem.index" |
|
:key="subItem.index" |
|
> |
|
<template slot="title">{{ subItem.title }}</template> |
|
<el-menu-item |
|
v-for="(threeItem,i) in subItem.subs" |
|
:key="i" |
|
:index="threeItem.index" |
|
>{{ threeItem.title }}</el-menu-item> |
|
</el-submenu> |
|
<el-menu-item |
|
v-else |
|
:index="subItem.index" |
|
:key="subItem.index" |
|
>{{ subItem.title }}</el-menu-item> |
|
</template> |
|
</el-submenu> |
|
</template> |
|
<template v-else> |
|
<el-menu-item :index="item.index" :key="item.index"> |
|
<i :class="item.icon"></i> |
|
<span slot="title">{{ item.title }}</span> |
|
</el-menu-item> |
|
</template> |
|
</template> |
|
</el-menu> |
|
</div> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
data() { |
|
return { |
|
items: [ |
|
{ |
|
icon: 'el-icon-lx-home', |
|
index: 'customer', |
|
title: '客户管理' |
|
}, |
|
{ |
|
icon: 'el-icon-lx-cascades', |
|
index: 'user', |
|
title: '用户管理' |
|
}, |
|
{ |
|
icon: 'el-icon-lx-copy', |
|
index: 'order', |
|
title: '订单管理' |
|
}, |
|
{ |
|
icon: 'el-icon-lx-emoji', |
|
index: 'configure', |
|
title: '服务配置' |
|
}, |
|
{ |
|
icon: 'el-icon-lx-emoji', |
|
index: 'curriculum', |
|
title: '课程管理' |
|
}, |
|
{ |
|
icon: 'el-icon-lx-emoji', |
|
index: 'data', |
|
title: '数据管理' |
|
} |
|
], |
|
onRoutes:'customer' |
|
}; |
|
}, |
|
watch:{ |
|
"$route.path":function(val){ |
|
this.items.map(e=>{ |
|
if(val.replace('/', '')===e.index){ |
|
this.handleSelect(val.replace('/', '')) |
|
this.$forceUpdate(); |
|
} |
|
}) |
|
} |
|
}, |
|
methods:{ |
|
handleSelect(index){ |
|
this.onRoutes = index |
|
sessionStorage.setItem('sideBar',index) |
|
}, |
|
}, |
|
created() { |
|
if(sessionStorage.getItem('sideBar')){ |
|
this.handleSelect(sessionStorage.getItem('sideBar')) |
|
} |
|
} |
|
}; |
|
</script> |
|
|
|
<style scoped> |
|
.sidebar::-webkit-scrollbar { |
|
width: 0; |
|
} |
|
.sidebar-el-menu:not(.el-menu--collapse) { |
|
width: 100%; |
|
} |
|
.sidebar > ul { |
|
height: 100%; |
|
} |
|
</style>
|
|
|