parent
f508148177
commit
8f99871ad7
6 changed files with 322 additions and 126 deletions
@ -0,0 +1,146 @@ |
||||
<template> |
||||
<div class="menus"> |
||||
<el-menu class="nav" :default-active="onRoutes" background-color="#062c87" text-color="#fff" |
||||
active-text-color="#333" unique-opened mode="horizontal" router @select="handleSelect"> |
||||
<template v-for="item in menus"> |
||||
<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> |
||||
import Setting from '@/setting' |
||||
import addRoutes from '@/libs/route/addRoutes' |
||||
export default { |
||||
data () { |
||||
return { |
||||
menuList: [ |
||||
{ |
||||
icon: 'el-icon-school', |
||||
index: '/workbench', |
||||
title: '工作台' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-user', |
||||
index: '/customer', |
||||
title: '客户管理' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-shopping-bag-2', |
||||
index: '/user', |
||||
title: '用户管理' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-document-checked', |
||||
index: '/order', |
||||
title: '订单管理' |
||||
}, |
||||
{ |
||||
icon: 'el-icon-office-building', |
||||
index: '/system', |
||||
title: '系统配置' |
||||
}, |
||||
], |
||||
menus: [], |
||||
onRoutes: this.$route.path |
||||
}; |
||||
}, |
||||
watch: { |
||||
"$route.path": function (val) { |
||||
this.menuList.map(e => { |
||||
if (val.replace('/', '') === e.index) { |
||||
this.handleSelect(val.replace('/', '')) |
||||
this.$forceUpdate(); |
||||
} |
||||
}) |
||||
} |
||||
}, |
||||
mounted () { |
||||
// sessionStorage.getItem('sideBar') && this.handleSelect(sessionStorage.getItem('sideBar')) |
||||
sessionStorage.getItem('token') && this.getPer() // 登录了才获取权限 |
||||
}, |
||||
methods: { |
||||
handleSelect (index) { |
||||
this.onRoutes = index |
||||
this.$store.commit('setInfoTab', '1') |
||||
this.$store.commit('setColumnId', '') |
||||
this.$store.commit('setCompetitionCache', null) |
||||
sessionStorage.setItem('sideBar', index) |
||||
}, |
||||
initMenu () { |
||||
if (Setting.dynamicRoute) { |
||||
const routes = this.$store.state.routes |
||||
const menus = [] |
||||
this.menuList.map(e => { |
||||
routes.find(n => n.path === e.index) && menus.push(e) |
||||
}) |
||||
this.menus = menus |
||||
} else { |
||||
this.menus = this.menuList |
||||
} |
||||
}, |
||||
// 获取权限列表 |
||||
getPer () { |
||||
this.$get(`${this.api.getUserRolesPermissionMenu}?platformId=${Setting.platformId}`).then(res => { |
||||
const routes = res.permissionMenu[0].children |
||||
addRoutes(routes) |
||||
this.initMenu() |
||||
this.$store.commit('setDataPer', res.dataPermissionList) |
||||
}).catch(err => { |
||||
if (err.status === 500) { |
||||
localStorage.removeItem('ms_username'); |
||||
sessionStorage.clear() |
||||
location.reload() |
||||
} |
||||
}) |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
.menus { |
||||
display: flex; |
||||
justify-content: center; |
||||
background-color: #062c87; |
||||
|
||||
/deep/.nav { |
||||
border-bottom: 0; |
||||
|
||||
&>.el-menu-item { |
||||
height: 56px; |
||||
padding: 0 30px; |
||||
line-height: 56px; |
||||
} |
||||
|
||||
&>.el-menu-item.is-active { |
||||
background-color: #fff !important; |
||||
border-bottom: 0; |
||||
} |
||||
} |
||||
|
||||
} |
||||
</style> |
Loading…
Reference in new issue