import Vue from 'vue'
import VueRouter, { RouteConfig,RouteRecord } from 'vue-router'
// import HomeView from '../views/HomeView.vue'
import Layout from '@/layout/index.vue'

Vue.use(VueRouter)

export const constantRoutes: Array<any> = [
  // {
  //   path: '/',
  //   name: 'home',
  //   component: HomeView
  // },
  // {
  //   path: '/about',
  //   name: 'about',
  //   // route level code-splitting
  //   // this generates a separate chunk (about.[hash].js) for this route
  //   // which is lazy-loaded when the route is visited.
  //   component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
  // },
  {
    path: '/login',
    component: () => import('../views/login.vue'),
    hidden: true
  },
  // {
  //   path: '/register',
  //   component: () => import('@/views/register.vue'),
  //   hidden: true
  // },
  // {
  //   path: '*',
  //   redirect: '/index'
  // },
  {
    path: '/',
    component: Layout,
    redirect: 'index',
    children: [
      {
        path: 'index',
        component: () => import('@/views/index.vue'),
        name: 'Index',
        meta: { title: '首页', icon: 'dashboard', affix: true }
      }
    ]
  },
  {
    path: '/user',
    component: Layout,
    hidden: true,
    redirect: 'noredirect',
    children: [
      {
        path: 'profile',
        component: () => import('@/views/system/user/profile/index.vue'),
        name: 'Profile',
        meta: { title: '个人中心', icon: 'user' }
      }
    ]
  },
  // {
  //   path:'/order',
  //   name:'Order',
  //   component:() => import('@/views/demo/order/order.vue')
  // },
  {
    path:'/shopAuto',
    name:'ShopAuto',
    component:() => import('@/views/oms/shop/shopAuto.vue')
  },
  // {
  //   path:'/demo',
  //   name:'Demo',
  //   hidden: true,
  //   component:() => import('@/views/demo/index.vue'),
  //   // redirect: 'form',
  //   children:[
  //     {
  //       path:'form',
  //       component:()=> import('@/views/demo/form.vue'),
  //       name:'Form',
  //       meta: {
  //         title: '表单',
  //         activeMenu: '/system/user'
  //       }
  //     },
  //     {
  //       path:'table',
  //       component:()=> import('@/views/demo/table.vue'),
  //       name:'Table',
  //       meta: {
  //         title: '表格',
  //         activeMenu: '/system/user'
  //       }
  //     },
  //     {
  //       path:'moduleView',
  //       component:()=> import('@/views/demo/moduleView.vue'),
  //       name:'ModuleView',
  //       meta: {
  //         title: 'view封装'
  //       }
  //     },
  //     {
  //       path:'bill',
  //       component:()=> import('@/views/demo/bill.vue'),
  //       name:'Bill',
  //       meta: {
  //         title: '单据'
  //       }
  //     },
  //     {
  //       path:'dialog',
  //       component:()=> import('@/views/demo/dialogDemo.vue'),
  //       name:'Dialog',
  //       meta: {
  //         title: '弹窗'
  //       }
  //     },
	// 		{
	// 		  path:'tab',
	// 		  component:()=> import('@/views/demo/tab.vue'),
	// 		  name:'Tab',
	// 		  meta: {
	// 		    title: '标签'
	// 		  }
	// 		}
  //   ]
  // }
]

// 动态路由，基于用户权限动态去加载
export const dynamicRoutes = [
  
  {
    path: '/system/user-auth',
    component: Layout,
    hidden: true,
    permissions: ['system:user:edit'],
    children: [{
      path: 'role/:userId(\\d+)',
      component: () => import('@/views/system/user/authRole.vue'),
      name: 'AuthRole',
      meta: {
        title: '分配角色',
        activeMenu: '/system/user'
      }
    }]
  },
  {
    path: '/system/role-auth',
    component: Layout,
    hidden: true,
    permissions: ['system:role:edit'],
    children: [{
      path: 'user/:roleId(\\d+)',
      component: () => import('@/views/system/role/authUser.vue'),
      name: 'AuthUser',
      meta: {
        title: '分配用户',
        activeMenu: '/system/role'
      }
    }]
  },
  {
    path: '/system/dict-data',
    component: Layout,
    hidden: true,
    permissions: ['system:dict:list'],
    children: [{
      path: 'index/:dictId(\\d+)',
      component: () => import('@/views/system/dict/data.vue'),
      name: 'Data',
      meta: {
        title: '字典数据',
        activeMenu: '/system/dict'
      }
    }]
  },
  // {
  //   path: '/monitor/job-log',
  //   component: Layout,
  //   hidden: true,
  //   permissions: ['monitor:job:list'],
  //   children: [{
  //     path: 'index/:jobId(\\d+)',
  //     component: () => import('@/views/monitor/job/log'),
  //     name: 'JobLog',
  //     meta: {
  //       title: '调度日志',
  //       activeMenu: '/monitor/job'
  //     }
  //   }]
  // },
  {
    // path: '/tool/gen-edit',
    // component: Layout,
    // hidden: true,
    // permissions: ['tool:gen:edit'],
    // children: [{
    //   path: 'index/:tableId(\\d+)',
    //   component: () => import('@/views/tool/gen/editTable'),
    //   name: 'GenEdit',
    //   meta: {
    //     title: '修改生成配置',
    //     activeMenu: '/tool/gen'
    //   }
    // }]
    path: '/tool/gen-edit',
    component: Layout,
    hidden: true,
    permissions: ['tool:gen:edit'],
    children: [
      {
        path: 'index/:tableId(\\d+)',
        component: () => import('@/views/tool/gen/editTable.vue'),
        name: 'GenEdit',
        meta: { title: '修改生成配置', activeMenu: '/tool/gen' }
      }
    ]
  }
]

// 防止连续点击多次路由报错
let routerPush:any = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
  return routerPush.call(this, location).catch((err:any) => err)
}


const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes: constantRoutes
})

export default router
