import Vue from 'vue'
import VueRouter from 'vue-router'
import utils from '@/libs/utils'
// import Home from '../views/Home.vue'
const Login = ()=>import("@/login/Login.vue")
const DownAllQualityReport = ()=>import("@/login/DownAllQualityReport.vue")
const DownAppQualityReport = ()=>import("@/login/DownAppQualityReport.vue")
const MainPage = ()=>import('@/views/MainPage.vue')
const HomePage = ()=>import('@/views/homecomponents/HomePage.vue')
const EquipmentMonitor = ()=>import('@/views/homecomponents/EquipmentAnalysis/EquipmentMonitor.vue')
const AlarmMonitor = ()=>import('@/views/homecomponents/EquipmentAnalysis/AlarmMonitor.vue')
const AlarmHandling = ()=>import('@/views/homecomponents/EquipmentAnalysis/AlarmHandling.vue')
const PolicyConfigManage = ()=>import('@/views/homecomponents/EquipmentAnalysis/PolicyConfigManage.vue')
const ComprehensiveQuery = ()=>import('@/views/homecomponents/EquipmentAnalysis/ComprehensiveQuery.vue')
const LineStationManage = ()=>import('@/views/homecomponents/BasicInfomation/LineStationManage.vue')
const ApplicationManage = ()=>import('@/views/homecomponents/BasicInfomation/ApplicationManage.vue')
const DeviceManage = ()=>import('@/views/homecomponents/BasicInfomation/DeviceManage.vue')
const InstruManage = ()=>import('@/views/homecomponents/BasicInfomation/InstruManage.vue')
const OperaTimeManage = ()=>import('@/views/homecomponents/BasicInfomation/OperaTimeManage.vue')
const Organization = ()=>import('@/views/homecomponents/SystemSettings/Organization.vue')
const UserManagement = ()=>import('@/views/homecomponents/SystemSettings/UserManagement.vue')
const RolePermissions = ()=>import('@/views/homecomponents/SystemSettings/RolePermissions.vue')
const ResourceManagement = ()=>import('@/views/homecomponents/SystemSettings/ResourceManagement.vue')
const OperationLog = ()=>import('@/views/homecomponents/SystemSettings/OperationLog.vue')
const DataMonitor = ()=>import('@/views/homecomponents/DataManagement/DataMonitor.vue')
const DataRules = ()=>import('@/views/homecomponents/DataManagement/DataRules.vue')
const DataReport = ()=>import('@/views/homecomponents/DataManagement/DataReport.vue')
Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Login',
    component: Login,
  },
  {
    path: '/login/DownAllQualityReport',
    name: 'DownAllQualityReport',
    component: DownAllQualityReport,
  },
  {
    path: '/login/DownAppQualityReport',
    name: 'DownAppQualityReport',
    component: DownAppQualityReport,
  },
  {
    path: '/MainPage',
    component: MainPage,
    meta: { Auth: true }, // 添加该字段，表示进入这个路由是需要登录的
    beforeEnter: (to, from, next) => {
      if (!utils.storage('sw_user')) {
        next({ path: '/login' })
        return false
      }
      next()
    },
    children: [
      // 首页
      {
        path: '',
        name: 'HomePage',
        component: HomePage,
      },
      // 设备分析
      {
        path: 'EquipmentMonitor', 
        name: 'EquipmentMonitor', 
        component: EquipmentMonitor
      },
      {
        path: 'AlarmMonitor', 
        name: 'AlarmMonitor', 
        component: AlarmMonitor
      },
      {
        path: 'AlarmHandling', 
        name: 'AlarmHandling', 
        component: AlarmHandling
      },
      {
        path: 'PolicyConfigManage', 
        name: 'PolicyConfigManage', 
        component: PolicyConfigManage
      },
      {
        path: 'ComprehensiveQuery', 
        name: 'ComprehensiveQuery', 
        component: ComprehensiveQuery
      },
      // 基础信息
      {
        path: 'LineStationManage', 
        name: 'LineStationManage', 
        component: LineStationManage
      },
      {
        path: 'ApplicationManage', 
        // path: '/MainPage/ApplicationManage/:type?', 
        name: 'ApplicationManage', 
        component: ApplicationManage
      },
      {
        path: 'DeviceManage', 
        name: 'DeviceManage', 
        component: DeviceManage
      },
      {
        path: 'InstruManage', 
        name: 'InstruManage', 
        component: InstruManage
      },
      {
        path: 'OperaTimeManage', 
        name: 'OperaTimeManage', 
        component: OperaTimeManage
      },
      //系统设置
      {
        path: 'Organization', 
        name: 'Organization', 
        component: Organization
      },
      {
        path: 'UserManagement', 
        name: 'UserManagement', 
        component: UserManagement
      },
      {
        path: 'RolePermissions', 
        name: 'RolePermissions', 
        component: RolePermissions
      },
      {
        path: 'ResourceManagement', 
        name: 'ResourceManagement', 
        component: ResourceManagement
      },
      {
        path: 'OperationLog', 
        name: 'OperationLog', 
        component: OperationLog
      },
      // 数据管理
      {
        path: 'DataMonitor', 
        name: 'DataMonitor', 
        component: DataMonitor
      },
      {
        path: 'DataRules', 
        name: 'DataRules', 
        component: DataRules
      },
      {
        path: 'DataReport', 
        name: 'DataReport', 
        component: DataReport
      },
      // {
      //   path: 'BasicInfomation',
      //   component: BasicInfomation,
      //   children: [{
      //     path: '',
      //     name: 'StationManage',
      //     component: StationManage
      //   },
      //   {
      //     path: 'employee_search',
      //     name: 'MoreSearch',
      //     component: MoreSearch
      //   }
      //   ]
      // },
    ]
  },
  { path: '*', redirect: '/' }
]

// const router = new VueRouter({
//   routes
// })
// 3. 创建 router 实例，然后传 `routes` 配置
const router = new VueRouter({
  // mode: 'history',
  base: process.env.BASE_URL,
  routes,
  scrollBehavior(to, from, savedPosition) {
    return { x: 0, y: 0 }
  }
})
//全局前置守卫
router.beforeEach(function (to, from, next) {
  const isAuth = to.matched.some(m => m.meta.Auth)
  if (isAuth) {
    const isLogin = utils.storage('sw_user')
    if (!isLogin) {
      next({path: '/login'})
    }
    // window._axiosPromiseArr.forEach((ele,index) => {
    //   ele.cancel() // 路由跳转之前，清空（终止）上一个页面正在请求的内容
    //   // 清空请求的参数 清空请求的参数
    //   delete window._axiosPromiseArr[index]
    // })
  }
  next()
})
// 解决 Vue 重复点击相同路由 出现 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location, onResolve, onReject) {
 if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
 return originalPush.call(this, location).catch(err => err)
}
export default router
