import Vue from 'vue' import Router from 'vue-router' import {config, trim} from './helper' import _ from "lodash"; import marketRouter from './router-market.js' // 默认title document.title = config('SITE_NAME'); // title 模板 const siteTitleTpl = config('SITE_TITLE_TPL'); // 路由配置 const routes = [ { path: '/', name: 'index', component: () => import('./views/index.vue') }, { path: '*', component: () => import('./views/error.vue') }, { path: '/sales/partnerList/partnerDetail', name: 'partnerDetail', component: () => import('./views/sales/partnerDetail.vue'), alias: ['/sales/examineList/examineDetail'] }, { path: '/sales/withdrawList/withdrawDetail', name: 'withdrawDetail', alias: '/sales/settleList/settleDetail', component: () => import('./views/sales/withdrawDetail.vue') }, { path: '/sales/distribution/poster', name: 'poster', component: () => import('./views/sales/codePoster.vue') }, { path: '/order/orderList/orderDetail', name: 'orderDetail', component: () => import('./views/order/orderDetail.vue') }, { path: '/userMage/userList/userDetail', name: 'userDetail', component: () => import('./views/userManage/userDetail.vue') }, { path: '/boardMsg/inforList/inforDetail', name: 'inforDetail', component: () => import('./views/boardMsg/inforDetail.vue') } ]; // 路由自动加载 const routeComponent = require.context( './views', true, /\.vue$/ ); routeComponent.keys().forEach(fileName => { // 过滤组件 if (fileName.indexOf('components/') !== -1 || fileName === "index") { return; } const path = '/' + trim(fileName.replace(/^\.\/(.*)\.\w+$/, '$1'), '/', 'left'); routes.push({ path: path, name: path, component: routeComponent(fileName).default }) }); Vue.use(Router); const router = new Router({ mode: 'history', routes: [...routes, ...marketRouter] }); const originalPush = Router.prototype.push Router.prototype.push = function push(location) {// 解决路由重复报错的问题 return originalPush.call(this, location).catch(err => err) } // title 设置 export const setTitle = function (to) { let title = config('SITE_NAME'); let currentMenu = {}; if (router.app.$store.getters.getAdminMenu.length) { router.app.$store.getters.getAdminMenu.forEach(item => { if (item.url === to.path) { title = siteTitleTpl.replace(/{title}/g, item.name); currentMenu = _.cloneDeep(item); } }); } router.app.$store.dispatch('updateCurrentMenu', currentMenu); document.title = title; }; router.afterEach(to => { if (router.app.$store.getters.getAdminMenu.length !== 0) { setTitle(to) } window.scrollTo(0, 0); }); export default router