index.js 1.32 KB

import Vue from "vue";
import VueRouter from "vue-router";
import Layout from '@/views/homePage/HomePage.vue'
import baseRouter from './modules/base'

Vue.use(VueRouter);

export const constantRoutes = [
  {
    path: '/404',
    name: '404',
    component: (resolve) => require(['@/views/error-page/404.vue'], resolve),
    hidden: true
  },
  {
    path: '/login',
    component: (resolve) => require(['@/views/Login.vue'], resolve),
    hidden: true
  },
  {
    path: '',
    name: 'homePage',
    component: Layout,
    children: [
      {
        path: '/homePage',
        name: 'homePage',
        component: (resolve) => require(['@/views/overView/Overview.vue'], resolve),
        meta: { title: '首页', icon: 'dashboard', affix: true },
      },
    ],
    hidden: true
  },
  ...baseRouter
]

const createRouter = () => {
  return new VueRouter({
    mode: 'hash', // 使用 hash 模式
    routes: constantRoutes
  });
}

const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => {
    if (err && err.name != 'NavigationDuplicated') this.replace('/404')
  })
}

const router = createRouter();

export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router;