text: import Vue from 'vue'
  import Router from 'vue-router'
  import http from '@/utils/httpRequest'
  import { isURL } from '@/utils/validate'
  import { clearLoginInfo } from '@/utils'
  
  Vue.use(Router)
  
  // 开发环境不使用懒加载, 因为懒加载页面太多的话会造成webpack热更新太慢, 所以只有生产环境使用懒加载
  const _import = require('./import-' + process.env.NODE_ENV)
  
  // 全局路由(无需嵌套上左右整体布局)
  const globalRoutes = [
      { path: '/404', component: _import('common/404'), name: '404', meta: { title: '404未找到' } },
      { path: '/login', component: _import('common/login'), name: 'login', meta: { title: '登录' } },
      { path: '/search', component: _import('common/seach'), name: 'search', meta: { title: '搜索' } },
      { path: '/userinfo', component: _import('common/userinfo'), name: 'userinfo', meta: { title: '个人中心' } },
      { path: '/detail', component: _import('common/resource-detail'), name: 'detail', meta: { title: '详情' } },
      { path: '/less-plan', component: _import('second/less-plan'), name: 'lessPlan', meta: { title: '教案' } },
      { path: '/text-book', component: _import('second/text-book'), name: 'textBook', meta: { title: '电子课本' } },
  	{ path: '/my-book', component: _import('second/my-book'), name: 'myBook', meta: { title: '我的书架' } },
    { path: '/book-detail', component: _import('second/book-detail'), name: 'bookDetail', meta: { title: '书籍详情' } },
  ]
  
  // 主入口路由(需嵌套上左右整体布局)
  const mainRoutes = {
      path: '/',
      component: _import('common/main'),
      name: 'main',
      redirect: { name: 'index' },
      meta: { title: '首页' },
      children: [
          { path: '/index', component: _import('home/index'), name: 'index', meta: { title: '首页' } },
  		{ path: '/subscribe', component: _import('home/subscribe'), name: 'subscribe', meta: { title: '推荐' } },
  
  
      { path: '/activity', component: _import('home/activity'), name: 'activity', meta: { title: '活动' } },
  
      ],
      beforeEnter (to, from, next) {
          let token = Vue.cookie.get('accesstoken')
          if (!token || !/\S/.test(token)) {
              clearLoginInfo()
              next({ name: 'index' })
          }
          next()
      }
  }
  
  const router = new Router({
      mode: 'history',
      scrollBehavior: () => ({ y: 0 }),
      isAddDynamicMenuRoutes: true, // 是否已经添加动态(菜单)路由
      routes: globalRoutes.concat(mainRoutes)
  })
  
  router.beforeEach((to, from, next) => {
      // 添加动态(菜单)路由
      // 1. 已经添加 or 全局路由, 直接访问
      // 2. 获取菜单列表, 添加并保存本地存储
      if (router.options.isAddDynamicMenuRoutes || fnCurrentRouteType(to, globalRoutes) === 'global') {
          next()
      } else {
          // http({
          //     url: http.adornUrl('/sys/menu/nav'),
          //     method: 'get',
          //     params: http.adornParams()
          // }).then(({data}) => {
          //     if (data && data.code === 0) {
          //         fnAddDynamicMenuRoutes(data.menuList)
          //         router.options.isAddDynamicMenuRoutes = true
          //         sessionStorage.setItem('menuList', JSON.stringify(data.menuList || '[]'))
          //         sessionStorage.setItem('permissions', JSON.stringify(data.permissions || '[]'))
          //         next({ ...to, replace: true })
          //     } else {
          //         sessionStorage.setItem('menuList', '[]')
          //         sessionStorage.setItem('permissions', '[]')
          //         next()
          //     }
          // }).catch((e) => {
          //     console.log(`%c${e} 请求菜单列表和权限失败，跳转至登录页！！`, 'color:blue')
          //     router.push({ name: 'login' })
          // })
      }
  })
  
  /**
   * 判断当前路由类型, global: 全局路由, main: 主入口路由
   * @param {*} route 当前路由
   */
  function fnCurrentRouteType (route, globalRoutes = []) {
      var temp = []
      for (var i = 0; i < globalRoutes.length; i++) {
          if (route.path === globalRoutes[i].path) {
              return 'global'
          } else if (globalRoutes[i].children && globalRoutes[i].children.length >= 1) {
              temp = temp.concat(globalRoutes[i].children)
          }
      }
      return temp.length >= 1 ? fnCurrentRouteType(route, temp) : 'main'
  }
  
  /**
   * 添加动态(菜单)路由
   * @param {*} menuList 菜单列表
   * @param {*} routes 递归创建的动态(菜单)路由
   */
  function fnAddDynamicMenuRoutes (menuList = [], routes = []) {
      var temp = []
      for (var i = 0; i < menuList.length; i++) {
          if (menuList[i].list && menuList[i].list.length >= 1) {
              temp = temp.concat(menuList[i].list)
          } else if (menuList[i].url && /\S/.test(menuList[i].url)) {
              menuList[i].url = menuList[i].url.replace(/^\//, '')
              var route = {
                  path: menuList[i].url.replace('/', '-'),
                  component: null,
                  name: menuList[i].url.replace('/', '-'),
                  meta: {
                  menuId: menuList[i].menuId,
                  title: menuList[i].name,
                  isDynamic: true,
                  isTab: true,
                  iframeUrl: ''
                  }
              }
              // url以http[s]://开头, 通过iframe展示
              if (isURL(menuList[i].url)) {
                  route['path'] = `i-${menuList[i].menuId}`
                  route['name'] = `i-${menuList[i].menuId}`
                  route['meta']['iframeUrl'] = menuList[i].url
              } else {
                  try {
                      route['component'] = _import(`modules/${menuList[i].url}`) || null
                  } catch (e) {}
              }
              routes.push(route)
          }
      }
      if (temp.length >= 1) {
          fnAddDynamicMenuRoutes(temp, routes)
      } else {
          mainRoutes.name = 'main-dynamic'
          mainRoutes.children = routes
          router.addRoutes([
              mainRoutes,
              { path: '*', redirect: { name: '404' } }
          ])
          sessionStorage.setItem('dynamicMenuRoutes', JSON.stringify(mainRoutes.children || '[]'))
      }
  }
  
  export default router
  