import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

/**
 * Note: sub-menu only appear when route children.length >= 1
 * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
 *
 * hidden: true                   if set true, item will not show in the sidebar(default is false)
 * alwaysShow: true               if set true, will always show the root menu
 *                                if not set alwaysShow, when item has more than one children route,
 *                                it will becomes nested mode, otherwise not show the root menu
 * redirect: noRedirect           if set noRedirect will no redirect in the breadcrumb
 * name:'router-name'             the name is used by <keep-alive> (must set!!!)
 * meta : {
    roles: ['admin','editor']    control the page roles (you can set multiple roles)
    title: 'title'               the name show in sidebar and breadcrumb (recommend set)
    icon: 'svg-name'/'el-icon-x' the icon show in the sidebar
    breadcrumb: false            if set false, the item will hidden in breadcrumb(default is true)
    activeMenu: '/example/list'  if set path, the sidebar will highlight the path you set
  }
 */
// 1、管理员；2、省级总帐号；3、升级；4、市级；5、区级（普通账号）；99、企业(楼宇）
/**
 * constantRoutes
 * a base page that does not have permission requirements
 * all roles can be accessed
 */
export const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },
  {
    path: '/',
    component: Layout,
    redirect: '/index',
    children: [
      {
        path: 'index',
        name: '主页',
        component: () => import('@/views/dashboard/index'),
        meta: { title: '主页', role: [1, 2, 3, 4, 5], icon: 'el-icon-s-home' }
      }
    ]
  },

  {
    path: '/user',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'user_manage',
        component: () => import('@/views/user_manage/index'),
        meta: { title: '账号管理', role: [1, 2], icon: 'el-icon-menu' }
      }
    ]
  },
  {
    path: '/personnel_access_statistics',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'personnelAccessStatistics',
        component: () => import('@/views/personnel_access_statistics/index'),
        meta: {
          title: '人员进出统计数据',
          role: [5],
          icon: 'el-icon-data-analysis'
        }
      }
    ]
  },
  {
    path: '/area',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'area_manage',
        component: () => import('@/views/area/index'),
        meta: {
          title: '区域名称列表',
          role: [5], // 有个场景类型 楼宇场景不显示
          icon: 'el-icon-map-location'
        }
      }
    ]
  },
  {
    path: '/enterprise',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'enterprise_manage',
        component: () => import('@/views/enterprise_manage/index'),
        meta: { title: '企业管理', role: [5], icon: 'el-icon-menu' }
      }
    ]
  },
  {
    path: '/machine_list',
    component: Layout,
    meta: { title: '设备管理', role: [1, 2, 3, 4, 5, 99], icon: 'el-icon-cpu' },
    children: [
      {
        path: 'index',
        name: 'machine_list',
        component: () => import('@/views/machine_list/index'),
        meta: {
          title: '设备列表',
          role: [1, 2, 3, 4, 5, 99],
          icon: 'el-icon-notebook-2'
        }
      },
      {
        path: 'logo',
        name: 'logo_manage',
        component: () => import('@/views/logo_manage/index'),
        meta: {
          title: 'logo配置',
          role: [1, 2],
          icon: 'el-icon-picture-outline-round'
        }
      }
      /* {
        path: 'HealthCode_three',
        name: 'HealthCode_three',
        component: () => import('@/views/HealthCode_three/index'),
        meta: {
          title: '健康码三方接入管理',
          role: [1],
          icon: 'el-icon-connection'
        }
      } */
    ]
  },
  {
    path: '/pass_records',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'pass_records',
        component: () => import('@/views/pass_records/index'),
        meta: {
          title: '进出记录',
          role: [1, 2, 3, 4, 5, 99],
          icon: 'el-icon-date'
        }
      }
    ]
  },

  {
    path: '/anomaly_warning',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'anomaly_warning',
        component: () => import('@/views/anomaly_warning/index'),
        meta: { title: '进出异常预警', role: [5, 99], icon: 'el-icon-warning' }
      }
    ]
  },
  {
    path: '/white_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'white_list',
        component: () => import('@/views/white_list/index'),
        meta: {
          title: '员工列表',
          role: [1, 2, 3, 4, 5, 99],
          visitorType: ['1'],
          icon: 'el-icon-s-custom'
        }
      }
    ]
  },
  {
    path: '/audit_authority',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'white_list',
        component: () => import('@/views/audit_authority/index'),
        meta: {
          title: '申请审核权限列表',
          role: [5],
          icon: 'el-icon-paperclip'
        }
      }
    ]
  },
  {
    path: '/visitors_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'visitors_list',
        component: () => import('@/views/visitors_list/index'),
        meta: {
          title: '访客列表',
          role: [1, 2, 3, 4, 5, 99],
          visitorType: ['2'],
          icon: 'el-icon-user'
        }
      }
    ]
  },
  {
    path: '/visitors_record',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'visitors_record',
        component: () => import('@/views/visitors_record/index'),
        meta: { title: '访客记录', role: [1, 5, 99], icon: 'el-icon-date' }
      }
    ]
  },
  {
    path: '/make_appointment_List',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'makeAppointment',
        component: () =>
          import('@/views/make_appointment/appointment_list.vue'),
        meta: { title: '预约列表', role: [5], icon: 'el-icon-s-platform' }
      }
    ]
  },
  {
    path: '/black_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'black_list',
        component: () => import('@/views/black_list/index'),
        meta: {
          title: '黑名单',
          role: [1, 2, 3, 4, 5, 99],
          visitorType: ['2'],
          icon: 'el-icon-warning-outline'
        }
      }
    ]
  },
  {
    path: '/exam_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'exam_list',
        component: () => import('@/views/exam_list/index'),
        meta: {
          title: '考试列表',
          role: [1, 2, 3, 4, 5, 99],
          visitorType: ['2'],
          icon: 'el-icon-s-order'
        }
      }
    ]
  },
  {
    path: '/exception_model',
    component: Layout,
    meta: { title: '异常模型', role: [1, 2, 3, 4, 5], icon: 'el-icon-bangzhu' },
    children: [
      {
        path: 'index',
        name: 'exception_model',
        component: () => import('@/views/exception_model/index'),
        meta: {
          title: '疑似黄牛人员列表',
          role: [1, 2, 3, 4, 5],
          icon: 'el-icon-tickets'
        }
      },
      {
        path: 'scalper_blacklist',
        name: 'scalper_blacklist',
        component: () =>
          import('@/views/exception_model/scalper_blacklist.vue'),
        meta: {
          title: '黄牛黑名单',
          role: [1, 2, 3, 4, 5],
          icon: 'el-icon-warning-outline'
        }
      }
    ]
  },
  // {
  //   path: '/issue_records',
  //   component: Layout,
  //   children: [
  //     {
  //       path: 'index',
  //       name: 'issue_records',
  //       component: () => import('@/views/issue_records/index'),
  //       meta: {
  //         title: '下发记录',
  //         role: [1, 2, 3, 4, 5],
  //         visitorType: ['1', '2'],
  //         icon: 'el-icon-document'
  //       }
  //     }
  //   ]
  // },
  // {
  //   path: '/task_list',
  //   component: Layout,
  //   children: [
  //     {
  //       path: 'index',
  //       name: 'task_list',
  //       component: () => import('@/views/task_list/index'),
  //       meta: {
  //         title: '任务列表',
  //         role: [1, 2, 5, 99],
  //         icon: 'el-icon-edit-outline'
  //       }
  //     }
  //   ]
  // },
  {
    path: '/issue_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'issue_list',
        component: () => import('@/views/issue_list/index'),
        meta: {
          title: '下发列表',
          role: [1, 2, 5, 99],
          icon: 'el-icon-edit-outline'
        }
      }
    ]
  },
  {
    path: '/monitor_management',
    component: Layout,
    meta: { title: '布控管理', role: [1, 2, 3, 4, 5], icon: 'el-icon-s-help' },
    children: [
      {
        path: 'monitor_management',
        name: 'monitor_management',
        component: () => import('@/views/monitor_management'),
        meta: {
          title: '布控名单',
          role: [1, 2, 3, 4, 5],
          icon: 'el-icon-bangzhu'
        }
      },
      {
        path: 'warning_management',
        name: 'warning_management',
        component: () => import('@/views/warning_record'),
        meta: {
          title: '预警记录',
          role: [1, 2, 3, 4, 5],
          icon: 'el-icon-message-solid'
        }
      }
    ]
  },
  {
    path: '/kind_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'kind_list',
        component: () => import('@/views/kind_list/index'),
        meta: { title: '类别管理', role: [1, 2], icon: 'el-icon-paperclip' }
      }
    ]
  },
  {
    path: '/private_area',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'private_area',
        component: () => import('@/views/private_area/index'),
        meta: {
          title: '私有区域管理',
          role: [5, 99],
          icon: 'el-icon-s-operation'
        }
      }
    ]
  },

  {
    path: '/QRCode',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'QRCode',
        component: () => import('@/views/QRCode/index'),
        meta: {
          title: '二维码',
          role: [5, 99],
          visitorType: ['1', '2'],
          icon: 'el-icon-s-grid'
        }
      }
    ]
  },
  {
    path: '/common_functions',
    component: Layout,
    meta: { title: '通用功能', role: [5], icon: 'el-icon-help' },
    children: [
      {
        path: 'problem_list',
        name: 'problem_list',
        component: () => import('@/views/common_functions/problem_list'),
        meta: { title: '问题上报列表', role: [5], icon: 'el-icon-question' }
      },
      {
        path: 'xiaosha_area',
        name: 'xiaosha_area',
        component: () => import('@/views/common_functions/xiaosha_area'),
        meta: { title: '区域巡查', role: [5], icon: 'el-icon-house' }
      }
    ]
  },
  {
    path: '/setting',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'setting',
        component: () => import('@/views/setting/index'),
        meta: { title: '系统设置', role: [1, 2], icon: 'el-icon-setting' }
      }
    ]
  },

  {
    path: '/make_appointment_setting',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'setting',
        component: () => import('@/views/make_appointment/setting.vue'),
        meta: { title: '预约配置', role: [5], icon: 'el-icon-s-data' }
      }
    ]
  },
  {
    path: '/basic_setup',
    component: Layout,
    redirect: '/basic_setup/index',
    name: 'basic_setup',
    meta: { title: '基本设置', role: [5, 99], icon: 'el-icon-setting' },
    children: [
      {
        path: 'index',
        name: 'index',
        component: () => import('@/views/basic_setup/index'),
        meta: { title: '基本设置', role: [5, 99], icon: 'el-icon-setting' }
      },
      {
        path: 'edit',
        name: 'edit',
        hidden: true,
        component: () => import('@/views/basic_setup/edit'),
        meta: { title: '梯控关系表', role: [5, 99] }
      }
    ]
  },
  {
    path: '/visitee_list',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'visitee_list',
        component: () => import('@/views/visitee_list/index'),
        meta: {
          title: '受访人列表', // 有个场景类型 楼宇场景不显示 企业展示
          role: [1, 2, 3, 4, 5, 99],
          visitorType: ['2'],
          icon: 'el-icon-user-solid'
        }
      }
    ]
  },
  // 404 page must be placed at the end !!!
  { path: '*', redirect: '/404', hidden: true }
]

const createRouter = () =>
  new Router({
    // mode: 'history', // require service support
    scrollBehavior: () => ({ y: 0 }),
    routes: constantRoutes
  })

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
