index.js 6.54 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: '首页', icon: 'fykf' },
    children: [
      {
        path: 'home',
        component: () => import('@/views/home/index'),
        name: 'Dashboard',
        meta: { title: '工作台', icon: 'dashboard', affix: true }
      }
    ]
  },
  {
    path: '/businessHandling',
    id: '3',
    parentId: null,
    component: Layout,
    meta: { title: '业务办理', icon: 'fykf' },
    redirect: '/businessHandling/apply',
    alwaysShow: true,
    name: 'businessHandling',
    children: [
      {
        path: 'apply',
        id: '4',
        parentId: '3',
        component: () => import('@/views/businessHandling/apply.vue'),
        name: 'apply',
        meta: { title: '业务申请' }
      },
      {
        path: 'todoBox',
        id: '5',
        parentId: '3',
        component: () => import('@/views/businessHandling/todoBox.vue'),
        name: 'todoBox',
        meta: { title: '待办箱' }
      },
      {
        path: 'boxHandled',
        id: '6',
        parentId: '3',
        component: () => import('@/views/businessHandling/boxHandled.vue'),
        name: 'boxHandled',
        meta: { title: '已办箱' }
      }
    ]
  },
  {
    path: '/applicationQuery',
    id: '9',
    parentId: null,
    component: Layout,
    meta: { title: '申请查询', icon: 'fykf' },
    redirect: '/applicationQuery/domesticPremises',
    alwaysShow: true,
    name: 'applicationQuery',
    children: [
      {
        path: 'domesticPremises',
        id: '10',
        parentId: '9',
        component: () => import('@/views/applicationQuery/domesticPremises.vue'),
        name: 'domesticPremises',
        meta: { title: '家庭房产' }
      },
      {
        path: 'printRegister',
        id: '12',
        parentId: '9',
        component: () => import('@/views/applicationQuery/printRegister.vue'),
        name: 'printRegister',
        meta: { title: '打印登记薄' }
      },
      {
        path: 'queryRecord',
        id: '11',
        parentId: '9',
        component: () => import('@/views/applicationQuery/queryRecord.vue'),
        name: 'queryRecord',
        meta: { title: '查询记录' }
      }
    ]
  },
  {
    path: '/comprehensiveQuery',
    id: '13',
    parentId: null,
    component: Layout,
    meta: { title: '综合查询', icon: 'fykf' },
    redirect: '/comprehensiveQuery/progressQuery',
    alwaysShow: true,
    name: 'comprehensiveQuery',
    children: [
      {
        path: 'progressQuery',
        id: '14',
        parentId: '13',
        component: () => import('@/views/comprehensiveQuery/progressQuery.vue'),
        name: 'progressQuery',
        meta: { title: '进度查询' }
      },
      {
        path: 'registerQuery',
        id: '15',
        parentId: '13',
        component: () => import('@/views/comprehensiveQuery/registerQuery.vue'),
        name: 'registerQuery',
        meta: { title: '登记簿查询' }
      },
      {
        path: 'realestateInquiry',
        id: '16',
        parentId: '13',
        component: () => import('@/views/comprehensiveQuery/realestateInquiry.vue'),
        name: 'realestateInquiry',
        meta: { title: '楼盘查询' }
      }
    ]
  },
  {
    path: '/certificate',
    id: '17',
    parentId: null,
    component: Layout,
    meta: { title: '证书管理', icon: 'fykf' },
    redirect: '/certificate/warehousing',
    alwaysShow: true,
    name: 'certificate',
    children: [
      {
        path: 'warehousing',
        id: '18',
        parentId: '17',
        component: () => import('@/views/certificate/warehousing.vue'),
        name: 'warehousing',
        meta: { title: '证书入库' }
      },
      {
        path: 'distribution',
        id: '19',
        parentId: '17',
        component: () => import('@/views/certificate/distribution.vue'),
        name: 'distribution',
        meta: { title: '证书分发' }
      },
      {
        path: 'usageRecord',
        id: '20',
        parentId: '17',
        component: () => import('@/views/certificate/usageRecord.vue'),
        name: 'usageRecord',
        meta: { title: '证书使用记录' }
      }
    ]
  },
  {
    path: '/system',
    id: '21',
    parentId: null,
    component: Layout,
    meta: { title: '系统管理', icon: 'fykf' },
    redirect: '/system/dictionaries',
    alwaysShow: true,
    name: 'system',
    children: [
      {
        path: 'dictionaries',
        id: '22',
        parentId: '21',
        component: () => import('@/views/system/dictionaries.vue'),
        name: 'dictionaries',
        meta: { title: '字典管理' }
      },
      {
        path: 'menu',
        id: '24',
        parentId: '21',
        component: () => import('@/views/system/menu.vue'),
        name: 'menu',
        meta: { title: '菜单管理' }
      },
      {
        path: 'userOpinion',
        id: '23',
        parentId: '21',
        component: () => import('@/views/system/userOpinion.vue'),
        name: 'userOpinion',
        meta: { title: '用户意见管理' }
      },
      {
        path: 'businessRule',
        id: '23',
        parentId: '21',
        component: () => import('@/views/system/businessRule.vue'),
        name: 'businessRule',
        meta: { title: '业务规则配置' }
      },
      {
        path: 'registrationMaterial',
        id: '23',
        parentId: '21',
        component: () => import('@/views/system/registrationMaterial.vue'),
        name: 'registrationMaterial',
        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