index.js 5.15 KB
import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)
/* Layout */
import Layout from '@/layout'

/* Router Modules */
// import componentsRouter from './modules/components'

export const constantRoutes = [
  {
    path: '/redirect',
    component: Layout,
    hidden: true,
    children: [
      {
        path: '/redirect/:path(.*)',
        component: () => import('@/views/redirect/index')
      }
    ]
  },
  {
    path: '/404',
    component: () => import('@/views/error-page/404'),
    hidden: true
  },
  { path: '*', redirect: '/404', hidden: true }
]

/**
 * asyncRoutes
 * the routes that need to be dynamically loaded based on user roles
 */
export const asyncRoutes = [
  {
    path: '/',
    component: Layout,
    redirect: '/home',
    meta: { title: '首页' },
    children: [
      {
        path: 'home',
        component: () => import('@/views/home/index'),
        name: 'Dashboard',
        meta: { title: '工作台', icon: 'workbench', affix: true }
      }
    ]
  },
  {
    path: '/ywbl',
    id: '3',
    parentId: null,
    component: Layout,
    meta: { title: '业务办理', icon: 'ywbl' },
    redirect: '/ywbl/ywsq/ywsq',
    alwaysShow: true,
    name: 'ywbl',
    children: [
      {
        path: 'ywsq',
        id: '4',
        parentId: '3',
        component: () => import('@/views/ywbl/ywsq/ywsq.vue'),
        name: 'ywsq',
        meta: { title: '业务申请' }
      },
      {
        path: 'dbx',
        id: '5',
        parentId: '3',
        component: () => import('@/views/ywbl/dbx/dbx.vue'),
        name: 'dbx',
        meta: { title: '待办箱' }
      },
      {
        path: 'ybx',
        id: '6',
        parentId: '3',
        component: () => import('@/views/ywbl/ybx/ybx.vue'),
        name: 'ybx',
        meta: { title: '已办箱' }
      }
    ]
  },
  {
    path: '/sqcx',
    id: '9',
    parentId: null,
    component: Layout,
    meta: { title: '申请查询', icon: 'sqcx' },
    redirect: '/sqcx/jtfc',
    alwaysShow: true,
    name: 'sqcx',
    children: [
      {
        path: 'jtfc',
        id: '10',
        parentId: '9',
        component: () => import('@/views/sqcx/jtfc/jtfc.vue'),
        name: 'jtfc',
        meta: { title: '家庭房产' }
      },
      {
        path: 'dydjb',
        id: '12',
        parentId: '9',
        component: () => import('@/views/sqcx/dydjb/dydjb.vue'),
        name: 'dydjb',
        meta: { title: '打印登记薄' }
      },
      {
        path: 'sqcxjl',
        id: '11',
        parentId: '9',
        component: () => import('@/views/sqcx/sqcxjl/sqcxjl.vue'),
        name: 'cxjl',
        meta: { title: '申请查询记录' }
      }
    ]
  },
  {
    path: '/zhcx',
    id: '13',
    parentId: null,
    component: Layout,
    meta: { title: '综合查询', icon: 'zhcx' },
    redirect: '/zhcx/jdcx',
    alwaysShow: true,
    name: 'zhcx',
    children: [
      {
        path: 'jdcx',
        id: '14',
        parentId: '13',
        component: () => import('@/views/zhcx/jdcx/jdcx.vue'),
        name: 'jdcx',
        meta: { title: '进度查询' }
      },
      {
        path: 'djbcx',
        id: '15',
        parentId: '13',
        component: () => import('@/views/zhcx/djbcx/djbcx.vue'),
        name: 'djbcx',
        meta: { title: '登记簿查询' }
      },
      {
        path: 'lpcx',
        id: '16',
        parentId: '13',
        component: () => import('@/views/zhcx/lpcx/lpcx.vue'),
        name: 'lpcx',
        meta: { title: '楼盘查询' }
      }
    ]
  },
  {
    path: '/zsgl',
    id: '17',
    parentId: null,
    component: Layout,
    meta: { title: '证书管理', icon: 'zsgl' },
    redirect: '/zsgl/zsrk',
    alwaysShow: true,
    name: 'zsgl',
    children: [
      {
        path: 'zsrk',
        id: '18',
        parentId: '17',
        component: () => import('@/views/zsgl/zsrk/zsrk.vue'),
        name: 'zsrk',
        meta: { title: '证书入库' }
      },
      {
        path: 'zsff',
        id: '19',
        parentId: '17',
        component: () => import('@/views/zsgl/zsff/zsff.vue'),
        name: 'zsff',
        meta: { title: '证书分发' }
      },
      {
        path: 'zssyjl',
        id: '20',
        parentId: '17',
        component: () => import('@/views/zsgl/zssyjl/zssyjl.vue'),
        name: 'zssyjl',
        meta: { title: '证书使用记录' }
      }
    ]
  },
  {
    path: '/system',
    id: '21',
    parentId: null,
    component: Layout,
    meta: { title: '系统管理', icon: 'system' },
    redirect: '/system/dictionaries',
    alwaysShow: true,
    name: 'system',
    children: [
      {
        path: 'dictionaries',
        id: '22',
        parentId: '21',
        component: () => import('@/views/system/dictionaries.vue'),
        name: 'dictionaries',
        meta: { title: '字典管理' }
      }
    ]
  }
]

const createRouter = () =>
  new Router({
    scrollBehavior: () => ({ y: 0 }),
    routes: [...constantRoutes, ...asyncRoutes]
  })

const router = createRouter()
// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter () {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router