|  |  |  | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|