| | |
| | | import plugins from './plugins' |
| | | import { mapState, mapMutations } from 'vuex' |
| | | import { fetchMenuTree } from './api/system/menu' |
| | | import preventReClick from '@/directives/directive' |
| | | import Treeselect from '@riophae/vue-treeselect' |
| | | import '@riophae/vue-treeselect/dist/vue-treeselect.css' |
| | | Vue.component('treeselect', Treeselect) |
| | | |
| | | Vue.use(preventReClick) |
| | | Vue.config.productionTip = false |
| | | Vue.use(ElementUI, { |
| | | size: 'small' |
| | |
| | | router, |
| | | store, |
| | | computed: { |
| | | ...mapState(['userInfo', 'homePage']) |
| | | ...mapState(['userInfo', 'homePage','topMenuCurrent','menuData']) |
| | | }, |
| | | watch: { |
| | | async userInfo () { |
| | |
| | | return |
| | | } |
| | | await this.initRoutes() |
| | | }, |
| | | async topMenuCurrent () { |
| | | if (this.topMenuCurrent == null) { |
| | | return |
| | | } |
| | | await this.chagneRoutes() |
| | | } |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['switchCollapseMenu', 'setHomePage']), |
| | | ...mapMutations(['switchCollapseMenu', 'setHomePage', 'setTopMenuCurrent', 'setTopMenuCurrent','cleartagsview']), |
| | | // 初始化本地配置 |
| | | initLocalConfig () { |
| | | // 菜单状态配置 |
| | |
| | | this.$store.commit('resetMenus') |
| | | // 获取菜单 |
| | | const storeMenus = this.$store.state.menuData.list |
| | | const storeTopMenus = this.$store.state.topMenuList.list |
| | | if (storeMenus.length > 0 && this.homePage == null) { |
| | | this.setHomePage(storeMenus[0]) |
| | | } |
| | | await fetchMenuTree() |
| | | .then(menus => { |
| | | .then(allmenus => { |
| | | // 添加菜单 |
| | | storeMenus.push.apply(storeMenus, menus) |
| | | var topList = allmenus.filter(item => { |
| | | return item.type === 1 |
| | | }) |
| | | storeTopMenus.push.apply(storeTopMenus, topList) |
| | | var topCurrent = null |
| | | var tlist =[] |
| | | topList.forEach(item => { |
| | | if (item.linkType === 0 ) { |
| | | if (topCurrent == null) { |
| | | topCurrent = item |
| | | } |
| | | tlist.push(...item.children) |
| | | } |
| | | }) |
| | | this.setTopMenuCurrent(topCurrent) |
| | | // console.log(topList) |
| | | // var menus = [] |
| | | // topList.forEach(item => { |
| | | // console.log(topCurrent.id, item.id) |
| | | // if (item.id == this.topMenuCurrent.id) { |
| | | // menus = item.children |
| | | // } |
| | | // }) |
| | | console.log('menus', this.menuData.list) |
| | | storeMenus.push.apply(storeMenus, this.menuData.list) |
| | | // 添加路由 |
| | | this.__addRouters(storeMenus) |
| | | this.__addRouters(tlist) |
| | | // 404 |
| | | router.addRoute({ |
| | | path: '*', |
| | |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | async chagneRoutes () { |
| | | // 重置菜单 |
| | | this.cleartagsview('/index') |
| | | console.log('menus', this.menuData.list) |
| | | // 添加路由 |
| | | // this.__addRouters(this.menuData.list) |
| | | if(this.topMenuCurrent.homeUrl){ |
| | | await this.$router.push({path: this.topMenuCurrent.homeUrl, query: {}}) |
| | | } |
| | | }, |
| | | // 新建路由 |
| | | __addRouters (routes, parents = []) { |
| | | if (routes == null || routes.length === 0) { |