import Vue from 'vue'
import VueRouter from 'vue-router'
import Cookies from 'js-cookie'

Vue.use(VueRouter)

const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}
const routes = [
  {
    path: "/route",
    component: () => import('@/utils/model/route.vue'),
  },
  {
    path: "/",
    component: () => import('@/views/index'),
  },

  {
    path: '/login',
    name: 'Login',
    meta: {
      title: '系统登录'
    },
    component: () => import("@/views/login/index.vue")
  },
  {
    path: "/agreeConceal",
    name: 'agreeConceal',
    meta: {
      title: '用户须知'
    },
    component: () => import('@/views/login/compoments/invite/components/index.vue')
  },
  {
    path: "",
    component: () => import('@/views/layout/index.vue'),
    children: [
      {
        path: '/home',
        name: 'Home',
        meta: {
          title: '首页',
          sign: 'home',
          belong: 'home'
        },
        component: () => import('@/views/home/index.vue'),
      },
      //专利数据库
      {
        path: '/project',
        name: 'Project',
        component: { render(c) { return c('router-view') } },
        redirect: '/project',
        children: [
          {
            path: '/',
            meta: {
              title: '专利数据库',
              sign: 'project',
              belong: 'project'
            },
            component: () => import('@/views/project/index.vue'),
          },
          {
            path: 'patentCollection',
            meta: {
              title: '专利列表',
              sign: 'patentCollection',
              belong: 'project'
            },
            component: () => import('@/views/project/patentCollection/index.vue')
          },
          {
            path: '/patentDetails/:patentNo',
            name: 'patentDetails',
            meta: {
              title: '专利文章',
              sign: 'patentDetails',
              // belong:'project'
            },
            component: () => import('@/views/project/patentDetails/index.vue')
          },
          // 专利数据库导出专利
          {
            path: "/exportPatent",
            name: 'exportPatent',
            meta: {
              title: '专利数据库导出专利',
              sign: 'exportPatent'
            },
            component: () => import('@/views/project/patentCollection/components/export/index.vue'),
          },
        ],
      },
      //企业专利数据库
      // {
      //   path: '/enterprisePatentDB',
      //   name:'enterprisePatentDB',
      //   component:{render(c){return c('router-view')}},
      //   redirect:'/enterprisePatentDB',
      //   children:[
      //     {
      //       path:'/',
      //       meta: {
      //         title: '企业专利数据库',
      //       },
      //       component: () => import('@/views/EnterprisePatentDatabase/index.vue'),
      //     },
      //   ]
      // },
      // //专利挖掘
      {
        path: '/patentMining',
        name: 'patentMining',
        component: { render(c) { return c('router-view') } },
        redirect: '/patentMining',
        children: [
          {
            path: '/',
            meta: {
              title: '专利挖掘',
              sign: 'patentMining',
              belong: 'patentMining'
            },
            component: () => import('@/views/patentMining/index.vue'),
          },
          {
            path: '/details',
            meta: {
              title: '专利挖掘详情',
              sign: 'patentMiningDetails',
              belong: 'patentMining'
            },
            component: () => import('@/views/patentMining/components/details/index.vue'),
          },
          {
            path: '/excavateTask',
            meta: {
              title: '专利挖掘任务',
              sign: 'patentMiningExcavateTask',
              belong: 'patentMining'
            },
            component: () => import('@/views/patentMining/components/excavateTask/index.vue'),
          },
          {
            path: '/handleExamine',
            meta: {
              title: '专利挖掘任务详情',
              sign: 'patentMiningHandleExamine',
              belong: 'patentMining'
            },
            component: () => import('@/views/patentMining/components/handleExamine/index.vue'),
          },
        ]
      },
      // // 产品
      {
        path: '/product',
        name: 'Product',
        component: { render(c) { return c('router-view') } },
        redirect: '/product',
        children: [
          {
            path: '/',
            name: '/',
            meta: {
              title: '产品',
              sign: 'product',
              belong: 'Product'
            },
            component: () => import('@/views/product/index.vue'),
          },
          {
            path: "/productDetails",
            name: 'productDetails',
            meta: {
              title: '详情',
              sign: 'productDetails',
              belong: 'Product'
            },
            component: () => import('@/views/product/components/details'),
          },
          //     {
          //       path: "/mindIndex",
          //       meta: {
          //        title: '可视化',
          //        button: [],
          //      },
          //      component: () => import('@/views/product/components/jsMind'),
          //    },
          {
            path: "/chartIndex",
            name: 'chartIndex',
            meta: {
              title: '趋势图',
              sign: 'chartIndex',
              belong: 'Product'
            },
            component: () => import('@/views/product/components/echarts'),
          },
          {
            path: "/frameworkIndex",
            meta: {
              title: '产品架构',
              sign: 'frameworkIndex',
              belong: 'Product'
            },
            component: () => import('@/views/product/components/framework/index.vue'),

          },
          {
            path: "/commodity",
            meta: {
              title: '产品商品化专利',
              sign: 'commodity',
              belong: 'Product'
            },
            component: () => import('@/views/product/components/commodity/index.vue'),

          },
        ],

      },
      //事件
      {
        path: '/Event',
        name: 'Event',
        component: { render(c) { return c('router-view') } },
        redirect: '/Event',
        children: [
          {
            path: '/',
            meta: {
              title: '事件',
              sign: 'event',
              belong: 'Event'
            },
            component: () => import('@/views/event/index.vue'),
          },
          //事件可视化
          {
            path: "/eventVisual",
            name: 'eventVisual',
            meta: {
              title: '事件可视化',
              sign: 'eventVisual',
              belong: 'Event'
            },
            component: () => import('@/views/event/components/details/visualRouter.vue'),
          },
        ],
      },
      //报告
      {
        path: '/AllReport',
        name: 'AllReport',
        component: { render(c) { return c('router-view') } },
        redirect: '/AllReport',
        children: [
          {
            path: '/',
            meta: {
              title: '报告',
              sign: 'report',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/index.vue'),
          },
          {
            path: '/reportDetails',
            name: 'reportDetails',
            meta: {
              title: '报告详情',
              sign: 'reportDetails',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/components/details'),
          },
          {
            path: '/reportPatentList',
            name: 'reportPatentList',
            meta: {
              title: '报告专利清单',
              sign: 'reportPatentList',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/components/patentList/index.vue'),
          },

          //code码页面
          {
            path: '/identificationCode',
            name: "identificationCode",
            meta: {
              title: '分析系统',
              sign: 'identificationCode',
              belong: 'AllReport'
            },
            component: () => import('@/views/components/identificationCode/index.vue'),
          },
          //FTO风险排查分配任务
          {
            path: '/allocationTask',
            name: "allocationTask",
            meta: {
              title: '分配任务',
              sign: 'allocationTask',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/components/allocationTask/index.vue'),
          },

          //侵权分析
          {
            path: '/tortIndex',
            name: "tortIndex",
            meta: {
              sign: 'tortIndex',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/tort/index.vue'),
          },
          // 产品信息录入
          {
            path: '/informationEntry',
            name: "informationEntry",
            meta: {
              title: '产品信息录入',
              sign: 'informationEntry',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/tort/components/informationEntry/index.vue'),
          },

          //回避设计
          {
            path: '/avoid',
            name: "avoid",
            meta: {
              title: '回避设计',
              sign: 'avoid',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/avoid/index.vue'),
          },

          //无效应对
          {
            path: '/manualImport',
            name: "manualImport",
            meta: {
              title: '批量手动添加证据文献',
              sign: 'manualImport',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/InvalidResponse/components/ManualImport/index.vue'),
          },
          //导入证据文献
          {
            path: '/evidence',
            name: 'evidence',
            meta: {
              title: '证据详情',
              sign: 'evidence',
              belong: 'AllReport'
            },
            component: () => import('@/views/report/InvalidResponse/components/Evidence/index.vue'),
          },
          //报告文档
          {
            path: '/reportFiles',
            name: 'reportFiles',
            meta: {
              title: '报告文档',
              sign: 'reportFiles',
            },
            component: () => import('@/views/report/components/reportFile/index.vue'),
          },
        ],
      },
      //任务模块
      {
        path: '/myTask',
        name: 'myTask',
        component: { render(c) { return c('router-view') } },
        redirect: '/myTask',
        children: [
          {
            path: '/',
            meta: {
              title: '我的任务',
              sign: 'myTask',
              belong: 'myTask'
            },
            component: () => import('@/views/task/index.vue'),
          },
        ]
      },
      //场景可视化
      {
        path: '/visual',
        name: 'visual',
        meta: {
          title: '场景可视化',
          sign: 'visual',
          belong: 'visual'
        },
        component: () => import('@/views/visual')
      },
      {
        path: '/visual/:title',
        name: 'flowPath',
        meta: {
          sign: 'flowPath',
          title: '可视化平台',
          belong: 'visual'
        },
        component: () => import('@/views/visual/title/index.vue')
      },
      //图表分析
      {
        path: "customChart",
        component: () => import('@/views/analyse/custom'),
        meta: {
          sign: 'customChart',
          title: '自定义分析列表'
        }
      },
      // {
      //   path: "report",
      //   component: () => import('@/views/analyse/report/create'),
      //   meta: {
      //     title: '一键生成报告'
      //   }
      // },
      //查看文件
      {
        path: '/checkFile',
        name: '/checkFile',
        meta: {
          aside: true,
          sign: 'checkFile',
        },
        component: () => import('@/views/components/view/checkFile.vue'),
      },
      //excel导入
      {
        path: '/import',
        name: "import",
        meta: {
          title: 'excel导入',
          sign: 'import'
        },
        component: () => import('@/views/components/import/excelImport'),
      },
      //专利号导入
      {
        path: '/PatentNoImport',
        name: "PatentNoImport",
        meta: {
          title: '专利号导入',
          sign: 'PatentNoImport'
        },
        component: () => import('@/views/components/import/PatentNoImport'),
      },
      //检索导入
      {
        path: '/conditionImport',
        name: "conditionImport",
        meta: {
          title: '专利检索',
          sign: 'conditionImport',
          belong: 'conditionImport'
        },
        component: () => import('@/views/components/import/conditionImport'),
      },
      //检索结果
      {
        path: "/searchResult",
        meta: {
          title: '检索结果',
          // button: [],
        },
        component: () => import('@/views/components/import/conditionImport/searchResultIndex.vue'),
      },
      // //检索专利详情
      // {
      //   path: "/search/patentDetail",
      //   meta: {
      //     title: '专利详情',
      //     // button: [],
      //   },
      //   component: () => import('@/views/components/import/conditionImport/patentDetails/patentIndex.vue'),
      // },
      // 任务清单
      {
        path: "/taskList",
        name: 'taskList',
        meta: {
          title: '任务清单',
          sign: 'taskList'
        },
        component: () => import('@/views/components/import/task/index.vue'),
      },
      //标注库
      {
        path: "/indicia",
        meta: {
          title: '标注库',
          sign: 'indicia',
        },
        component: () => import('@/views/components/indicia/index.vue'),
      },
      //错误网页
      {
        path: '/errorPage',
        name: 'errorPage',
        component: { render(c) { return c('router-view') } },
        redirect: '/errorPage',
        children: [
          {
            path: '/401',
            meta: {
              title: '事件',
              sign: '401',
              belong: 'errorPage'
            },
            component: () => import('@/views/components/errorPage/401.vue'),
          },
        ],
      },

    ]
  },
]

const router = new VueRouter({
  mode: 'history',
  base: '/',
  routes
})

router.beforeEach((to, from, next) => {
  if(to.path == '/login'){
    Cookies.remove("token")
    localStorage.removeItem('vuex')
  }
  if(from.path.indexOf('/patentDetails/')!=-1 && to.path.indexOf('/patentDetails/')==-1){
    sessionStorage.setItem('search', JSON.stringify({}))
  }
  if (to.path === '/login' || to.path === '/' || to.path == '/agreeConceal') {
    if (to.meta.title) {
      document.title = to.meta.title;
    }
    next()
  }
  else if (to.meta.allowPath) {
    if (to.meta.title) {
      document.title = to.meta.title;
    }
    next()
  }
  else {
    const tokenStr = Cookies.get('token')

    switch (tokenStr) {
      case undefined:
        if (to.meta.title) {
          document.title = to.meta.title;
        }
        next({ name: 'Login', params: { redirect: to.fullPath } })
        break
      default:
        if (to.meta.title) {
          document.title = to.meta.title;
        }
        next()
        break;
    }
  }
})

router.afterEach((to, from) => {

});

export default router
