123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <template>
- <aside class="site-sidebar">
- <div class="site-sidebar__inner">
- <el-menu
- :default-active="menuNavActive"
- :collapse="$store.state.sidebarCollapse"
- class="site-sidebar__menu"
- background-color="#545c64"
- text-color="#fff"
- active-text-color="#ffd04b">
- <el-menu-item index="1-1" @click="$router.push({ name: 'home' })">
- <i class="site-sidebar__menu-icon fa fa-home"></i>
- <span slot="title">首页</span>
- </el-menu-item>
- <sub-menu-nav
- v-for="menuNav in $store.state.menuNavList"
- :key="menuNav.menuId"
- :menu-nav="menuNav">
- </sub-menu-nav>
- </el-menu>
- </div>
- </aside>
- </template>
- <script>
- import SubMenuNav from '@/components/sub-menu-nav'
- import API from '@/api'
- import { mapMutations } from 'vuex'
- import { getRouteNameByUrl } from '@/utils'
- import isEmpty from 'lodash/isEmpty'
- export default {
- data () {
- return {
- menuNavActive: '1-1'
- }
- },
- components: {
- SubMenuNav
- },
- watch: {
- $route: 'routeHandle'
- },
- created () {
- this.getMenuNavList().then(() => {
- this.routeHandle(this.$route)
- })
- },
- methods: {
-
- getMenuNavList () {
- return API.menu.nav().then(({data}) => {
- if (data && data.code === 0) {
- this.UPDATE_MENU_NAV_LIST(data.menuList)
- sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
- } else {
- this.UPDATE_MENU_NAV_LIST([])
- sessionStorage.setItem('permissions', '[]')
- }
- })
- },
-
- routeHandle (route) {
- if (/^\/n\/.*$/.test(route.path)) {
- var tab = this.$store.state.contentTabs.filter(item => item.name === route.name)[0]
-
- if (isEmpty(tab)) {
- var menuNav = this.getMenuNavByRouteName(route.name, this.$store.state.menuNavList)
- if (!isEmpty(menuNav)) {
- tab = {
- id: menuNav.menuId,
- name: route.name,
- title: menuNav.name,
- type: (window.SITE_CONFIG.nestIframeRouteNameList || []).indexOf(route.name) !== -1 ? 'iframe' : 'module',
- url: menuNav.url
- }
- this.ADD_CONTENT_TAB(tab)
- }
- }
- this.menuNavActive = tab.id + ''
- this.UPDATE_CONTENT_TABS_ACTIVE_NAME({ name: route.name })
- }
- },
-
- getMenuNavByRouteName (name, menuNavList) {
- for (var i = 0; i < menuNavList.length; i++) {
- if (menuNavList[i].list && menuNavList[i].list.length >= 1) {
- return this.getMenuNavByRouteName(name, menuNavList[i].list)
- } else {
- if (getRouteNameByUrl(menuNavList[i].url) === name) {
- return menuNavList[i]
- }
- }
- }
- },
- ...mapMutations(['UPDATE_MENU_NAV_LIST', 'ADD_CONTENT_TAB', 'UPDATE_CONTENT_TABS_ACTIVE_NAME'])
- }
- }
- </script>
|