import Vue from 'vue'
import VueRouter from 'vue-router'
import Layout from '../layout/index.vue'
import { Message } from 'element-ui';
import i18n from '../i18n/index'
Vue.use(VueRouter)


  // 提取子路由配置
const childrenRoutes = [
  {
    path: '',
    name: 'Home',
    component: () => import('../views/home/index.vue'),
    meta: {
      title: '首页',
      description: i18n.t(`seo.Home`),
      allAuthority: [`all`],
      // keywords: 'M2Pool, cryptocurrency mining pool, bitcoin mining, DGB mining, mining pool service, 加密货币矿池, 比特币挖矿, DGB挖矿, 矿池服务'
      keywords:{
        en: 'M2Pool, cryptocurrency mining pool, bitcoin mining, DGB mining, mining pool service, 加密货币矿池, 比特币挖矿, DGB挖矿, 矿池服务',
        zh: 'M2Pool, 加密货币矿池, 比特币挖矿, DGB挖矿, 矿池服务'
      }
   
   
   
    }
  },
   {//只读页面挖矿账户页
    path: 'miningAccount',
    name: 'MiningAccount',
    component: () => import('../views/miningAccount/index.vue'),
    meta: {title: '挖矿账户页面',
      description:i18n.t(`seo.miningAccount`),
      allAuthority:[`admin`,`registered`],
      // keywords: 'M2Pool mining account, crypto mining stats, mining rewards, hashrate monitor, 矿池账户, 挖矿收益, 算力监控'
      keywords:{
        en: 'M2Pool mining account, crypto mining stats, mining rewards, hashrate monitor, 矿池账户, 挖矿收益, 算力监控',
        zh: 'M2Pool 挖矿账户, 加密挖矿统计, 挖矿奖励, 算力监控, 矿池账户, 挖矿收益, 算力监控'
      }
    }
  },
   {//只读页面展示页
    path: 'readOnlyDisplay',
    name: 'ReadOnlyDisplay',
    component: () => import('../views/readOnlyDisplay/index.vue'),
    meta: {title: '只读页面展示页',
      description:i18n.t(`seo.readOnlyDisplay`),
      allAuthority:[`all`],
      // keywords: 'M2Pool 矿池,只读页面,收益状况,矿工信息,Read only page,Revenue situation,Mining Pool,Miner information'
      keywords:{
        en: 'Read only page,Revenue situation,Mining Pool,Miner information',
        zh: 'M2Pool 矿池,只读页面,收益状况,矿工信息'
      }
      
    
    
    }
  },
  {//报块页面
    path: 'reportBlock',
    name: 'ReportBlock',
    component: () => import('../views/reportBlock/index.vue'),
    meta: {title: '报块页面',
      description:i18n.t(`seo.reportBlock`),
      allAuthority:[`admin`,`registered`],
      // keywords: 'M2Pool 矿池,报块页面,幸运值,区块高度,Block page,Lucky Value,block height,Mining Pool'
      keywords:{
        en: 'Block page,Lucky Value,block height,Mining Pool',
        zh: 'M2Pool 矿池,报块页面,幸运值,区块高度'
      }
    
    
    }
  },
    {//费率
      path: 'rate',
      name: 'Rate',
      component: () => import('../views/rate/index.vue'),
      meta: {title: '费率页面', 
        description:i18n.t(`seo.rate`),
        allAuthority:[`all`],
        // keywords: 'M2Pool 矿池,费率页面,挖矿费率,收益计算,Mining Pool,Rate,Mining fee rate,Profit calculation'
        keywords:{
          en: 'Mining Pool,Rate,Mining fee rate,Profit calculation',
          zh: 'M2Pool 矿池,费率页面,挖矿费率,收益计算'
        }


      }
    },
     {//分配说明
      path: 'allocationExplanation',
      name: 'AllocationExplanation',
      component: () => import('../views/allocationExplanation/index.vue'),
      meta: {title: '分配说明页面', 
        description:i18n.t(`seo.rate`),
        allAuthority:[`all`],
        // keywords: '分配、转账说明,矿池分配,转账说明,Allocation,Transfer,Mining Pool,Pool allocation,Transfer instructions'
        keywords:{
          en: 'Allocation,Transfer,Mining Pool,Pool allocation,Transfer instructions',
          zh: '分配、转账说明,矿池分配,转账说明'
        }
      }
    },
      {//API文档
        path: 'apiFile',
        name: 'ApiFile',
        component: () => import('../views/apiFile/index.vue'),
        meta: {title: 'API文档页面', 
          description:i18n.t(`seo.apiFile`),
          allAuthority:[`all`],
          // keywords: 'M2Pool 矿池,API 文档,认证 token,接口调用,API file,authentication token,Interface call'
          keywords:{
            en: 'API file,authentication token,Interface call',
            zh: 'M2Pool 矿池,API 文档,认证 token,接口调用'
          }

        }
      },
      {//在线客服
        path: 'customerService',
        name: 'CustomerService',
        component: () => import('../views/customerService/index.vue'),
        meta: {title: '在线客服', 
          description:i18n.t(`seo.apiFile`),
          allAuthority:[`all`],
          // keywords: 'M2Pool 矿池,API 文档,认证 token,接口调用,API file,authentication token,Interface call'
          keywords:{
            en: 'API file,authentication token,Interface call',
            zh: 'M2Pool 矿池,API 文档,认证 token,接口调用'
          }

        }
      },
      
    {//接入矿池页面
      path: '/:lang/AccessMiningPool',
      name: 'AccessMiningPool',
      component: () => import('../views/AccessMiningPool/index.vue'),
      meta: {title: '接入矿池页面', 
        description:i18n.t(`seo.allocationExplanation`),
        allAuthority:[`all`],
         // keywords: 'M2Pool 矿池,接入矿池,币种接入,挖矿指南,Access to Mining Pools,Coin Access,Mining Guide'
         keywords:{
          en: 'Access to Mining Pools,Coin Access,Mining Guide',
          zh: 'M2Pool 矿池,接入矿池,币种接入,挖矿指南'
         }

      },
      children: [
        {//nexa 挖矿页面
          path: 'nexaAccess',
          name: 'NexaAccess',
          component: () => import('../views/AccessMiningPool/nexaAccess/index.vue'),
          meta: {title: 'nexa 挖矿页面',
            description:i18n.t(`seo.nexaAccess`),
            allAuthority:[`all`],
            keepAlive: true,
            requiresAuth: false,
            // keywords: 'nexa,挖矿教程,Nexa接入,Nexa Access,Mining Tutorial'
            keywords:{
              en: 'Nexa Access,Mining Tutorial',
              zh: 'nexa,挖矿教程,Nexa接入,Nexa Access,Mining Tutorial'
            }
          }
        },
         {//rxd 挖矿页面
          path: 'rxdAccess',
          name: 'RxdAccess',
          component: () => import('../views/AccessMiningPool/rxdAccess/index.vue'),
          meta: {title: 'rxd 挖矿页面',
            description:i18n.t(`seo.rxdAccess`),
            allAuthority:[`all`],
            // keywords: 'rxd,挖矿教程,Radiant接入,rxd Access,Radiant Access,Mining Tutorial,radiant'
            keywords:{
              en: 'rxd Access,Radiant Access,Mining Tutorial,radiant',
              zh: 'rxd,矿池挖矿教程,Radiant接入,'
            }
          }
        },
         {//mona 挖矿页面
          path: 'monaAccess',
          name: 'MonaAccess',
          component: () => import('../views/AccessMiningPool/monaAccess/index.vue'),
          meta: {title: 'mona 挖矿页面',
            description:i18n.t(`seo.monaAccess`),
            allAuthority:[`all`],
            // keywords: 'mona,挖矿教程,mona接入,Mona Access,MONA Access,Mining Tutorial'
            keywords:{
              en: 'Mona Access,MONA Access,Mining Tutorial',
              zh: 'mona,挖矿教程,mona接入,'
            }
          },
          
        },
         {//grs 挖矿页面 
          path: 'grsAccess',
          name: 'GrsAccess',
          component: () => import('../views/AccessMiningPool/grsAccess/index.vue'),
          meta: {title: 'grs 挖矿页面',
            description:i18n.t(`seo.grsAccess`),
            allAuthority:[`all`],
            // keywords: 'GRS,Grs接入,GRS Access,grs Access,Mining Tutorial'
            keywords:{
              en: 'GRS Access,grs Access,Mining Tutorial',
              zh: 'GRS,Grs接入,GRS挖矿教程'
            }
          },
          
        },
         {//dgbqA挖矿页面  dgboAccess
          path: 'dgbqAccess',
          name: 'DgbqAccess',
          component: () => import('../views/AccessMiningPool/dgbqAccess/index.vue'),
          meta: {title: 'Dgbq 挖矿页面',
            description:i18n.t(`seo.dgbAccess`),
            allAuthority:[`all`],
            // keywords: 'Dgbq,dgb(qubit)接入,Dgb(qubit) Access,DGB(qubit) Access,Mining Tutorial,DGB'
            keywords:{
              en: 'Dgb(qubit) Access,DGB(qubit) Access,Mining Tutorial,DGB',
              zh: 'Dgbq,dgb(qubit)接入,dgb(qubit)挖矿教程'
            }
          },
          
        },
         {//dgboAccess 挖矿页面   
          path: 'dgboAccess',
          name: 'DgboAccess',
          component: () => import('../views/AccessMiningPool/dgboAccess/index.vue'),
          meta: {title: 'Dgbo 挖矿页面',
            description:i18n.t(`seo.dgbAccess`),
            allAuthority:[`all`],
            // keywords: 'dgbo,dgb(odocrypt)接入,Dgb(odocrypt) Access,DGB(odocrypt) Access,Mining Tutorial,DGB'
            keywords:{
              en: 'Dgb(odocrypt) Access,DGB(odocrypt) Access,Mining Tutorial,DGB',
              zh: 'dgbo,dgb(odocrypt)接入,dgb(odocrypt)挖矿教程'
            }
          },
          
        },
        {//dgbsAccess 挖矿页面   
          path: 'dgbsAccess',
          name: 'DgbsAccess',
          component: () => import('../views/AccessMiningPool/dgbsAccess/index.vue'),
          meta: {title: 'Dgbs 挖矿页面',
            description:i18n.t(`seo.dgbAccess`),
            allAuthority:[`all`],
            // keywords: 'dgbs,dgb(skein)接入,Dgb(skein) Access,DGB(skein) Access,Mining Tutorial,DGB'
            keywords:{
              en: 'Dgb(skein) Access,DGB(skein) Access,Mining Tutorial,DGB',
              zh: 'dgbs,dgb(skein)接入,dgb(skein)挖矿教程'
            }
          },
          
        },
         {//enxAccess 挖矿页面   
          path: 'enxAccess',
          name: 'EnxAccess',
          component: () => import('../views/AccessMiningPool/enxAccess/index.vue'),
          meta: {title: ' Entropyx(enx) 挖矿页面',
            description:i18n.t(`seo.enxAccess`),
            allAuthority:[`all`],
            // keywords: 'Entropyx(Enx), Entropyx(enx)接入,enx,ENX,Mining Tutorial'
            keywords:{
              en: 'Entropyx(Enx), enx,ENX,Mining Tutorial',
              zh: 'Entropyx(enx)接入,Entropyx挖矿教程'
            }
          },
          
        },
        {//alphminingPool 挖矿页面   
          path: 'alphminingPool',
          name: 'AlphminingPool',
          component: () => import('../views/AccessMiningPool/alphminingPool/index.vue'),
          meta: {title: ' alephium 挖矿页面',
            description:i18n.t(`seo.alphAccess`),
            allAuthority:[`all`],
            // keywords: 'Entropyx(Enx), Entropyx(enx)接入,enx,ENX,Mining Tutorial'
            keywords:{
              en: 'alephium(alph), Alephium,Mining Tutorial',
              zh: 'alephium(alph)接入,alephium挖矿教程'
            }
          },
          
        },
      
       
      ]
    },
     {//服务条款
      path: 'ServiceTerms',
      name: 'ServiceTerms',
      component: () => import('../views/ServiceTerms/index.vue'),
      meta: {title: '服务条款页面', 
        description:i18n.t(`seo.ServiceTerms`),
        allAuthority:[`all`],
         // keywords: 'M2Pool 矿池,服务条款,用户权益,权利义务,Terms of Service, User Rights, Rights and Obligations'
         keywords:{
          en: 'Terms of Service, User Rights, Rights and Obligations',
          zh: 'M2Pool 矿池,服务条款,用户权益,权利义务'
         }
      }
    },
     {//提交工单
      path: 'submitWorkOrder',
      name: 'SubmitWorkOrder',
      component: () => import('../views/submitWorkOrder/index.vue'),
      meta: {title: '提交工单页面', 
        description:i18n.t(`seo.submitWorkOrder`),
        allAuthority:[`admin`,`registered`],
          // keywords: 'M2Pool 矿池,提交工单,技术支持,问题处理,Mining Pool,Work Order Submission, Technical Support, Troubleshooting'
          keywords:{
            en: 'Mining Pool,Work Order Submission, Technical Support, Troubleshooting',
            zh: 'M2Pool 矿池,提交工单,技术支持,问题处理'
          }
      }
    },
     {//用户查看工单记录
      path: 'workOrderRecords',
      name: 'WorkOrderRecords',
      component: () => import('../views/workOrderRecords/index.vue'),   
      meta: {title: '工单记录页面(用户)', 
        description:i18n.t(`seo.workOrderRecords`),
        allAuthority:[`admin`,`registered`],
          // keywords: 'M2Pool 矿池,用户工单记录,处理状态,问题进度,User Work Order Records, Processing Status, Issue Progress'
          keywords:{
            en: 'User Work Order Records, Processing Status, Issue Progress',
            zh: 'M2Pool 矿池,用户工单记录,处理状态,问题进度'
          }
      }
    },
     {//用户查看工单详情
      path: 'userWorkDetails',
      name: 'UserWorkDetails',
      component: () => import('../views/userWorkDetails/index.vue'),   
      meta: {title: '工单详情页面(用户)', 
        description:i18n.t(`seo.userWorkDetails`),
        allAuthority:[`admin`,`registered`],
         // keywords: 'M2Pool 矿池,用户工单详情,问题描述,补充提交,User Work Order Details, Problem Description, Additional Submissions'
         keywords:{
          en: 'User Work Order Details, Problem Description, Additional Submissions',
          zh: 'M2Pool 矿池,用户工单详情,问题描述,补充提交'
         }
      }
    }, 
     {//后台工单管理
      path: 'workOrderBackend',
      name: 'WorkOrderBackend',
      component: () => import('../views/workOrderBackend/index.vue'),   
      meta: {title: '工单管理页面(后台)', 
        description:"M2Pool 矿池后台工单管理页面，供 M2Pool 管理员查看和管理用户提交的工单记录，确保问题及时处理，提升用户体验。",
        allAuthority:[`admin`],
         // keywords: 'M2Pool 矿池,后台工单管理,用户工单,及时处理,Back-office work order management, user work orders, timely processing'
         keywords:{
          en: 'Back-office work order management, user work orders, timely processing',
          zh: 'M2Pool 矿池,后台工单管理,用户工单,及时处理'
         }
      }
    }, 
      {//后台工单详情页面
        path: 'BKWorkDetails',
        name: 'BKWorkDetails',
        component: () => import('../views/BKWorkDetails/index.vue'),   
        meta: {title: '工单详情页面(后台)', 
          description:"M2Pool 矿池后台工单详情页面，管理员可在此查看提交工单的详细情况，包括提交时间、详细问题描述以及处理过程，并通过本页面对该工单进行回复处理。",
          allAuthority:[`admin`],
           // keywords: 'M2Pool 矿池,后台工单详情,问题处理,回复工单,Backend Work Order Details, Problem Handling, Responding to Work Orders'
           keywords:{
            en: 'Backend Work Order Details, Problem Handling, Responding to Work Orders',
            zh: 'M2Pool 矿池,后台工单详情,问题处理,回复工单'
           }
        }
      }, 
       {//数据展示
        path: 'dataDisplay',
        name: 'DataDisplay',
        component: () => import('../views/dataDisplay/index.vue'),   
        meta: {title: '数据展示页面', 
          description:"M2Pool 矿池数据展示页面",
          allAuthority:[`all`],
           // keywords: 'M2Pool 矿池,数据展示,Mining Pool,Data Display'
           keywords:{
            en: 'Mining Pool,Data Display',
            zh: 'M2Pool 矿池,数据展示'
           }
        }
      }, 
      {//警报通知
        path: 'alerts',
        name: 'Alerts',
        component: () => import('../views/alerts/index.vue'),   
        meta: {title: '警报通知', 
          description:i18n.t(`seo.alerts`),
          allAuthority:[`admin`,`registered`],
           // keywords: 'M2Pool, 矿池,离线告警设置,矿机离线,Mining Pool,Offline Alarm Setting,Mining Machine Offline'
           keywords:{
            en: 'Mining Pool,Offline Alarm Setting,Mining Machine Offline',
            zh: 'M2Pool 矿池,离线告警设置,矿机离线'
           }
        }
      }, 
      
      {//个人中心
        path: 'personalCenter',
        name: 'PersonalCenter',
        // redirect: "/personalCenter/personalMining",
        component: () => import('../views/personalCenter/index.vue'),
        meta: {title: '个人中心页面',
          description:i18n.t(`seo.personalCenter`),
          allAuthority:[`admin`,`registered`],
            // keywords: 'M2Pool 矿池,个人中心,挖矿账户,只读页面设置，安全设置，API密钥生成,Personal Center,Mining Account,Read-Only Page Setup,Security Settings,API Key Generation'
            keywords:{
              en: 'Personal Center,Mining Account,Read-Only Page Setup,Security Settings,API Key Generation',
              zh: 'M2Pool 矿池,个人中心,挖矿账户,只读页面设置，安全设置，API密钥生成'
            }
        },
        children: [
          {//个人中心挖矿账户
            path: 'personalMining',
            name: 'PersonalMining',
            component: () => import('../views/personalCenter/personalMining/index.vue'),
            meta: {title: '挖矿账户设置页面',
              description:i18n.t(`seo.personalMining`),
              allAuthority:[`admin`,`registered`],
               // keywords: 'M2Pool 矿池,个人中心,挖矿账户设置,币种账户,Personal Center,Mining Account Settings,Coin Accounts'
               keywords:{
                en: 'Personal Center,Mining Account Settings,Coin Accounts',
                zh: 'M2Pool 矿池,个人中心,挖矿账户设置,币种账户'
               }
            }
          },
          {//个人中心只读页面 securitySetting
            path: 'readOnly',
            name: 'ReadOnly',
            component: () => import('../views/personalCenter/readOnly/index.vue'),
            meta: {title: '只读页面设置',
              description:i18n.t(`seo.readOnly`),
              allAuthority:[`admin`,`registered`],
                // keywords: 'M2Pool 矿池,个人中心,只读页面设置,矿池分享,Personal Center,Read-Only Page Setting,Mining Pool Sharing'
                keywords:{
                  en: 'Personal Center,Read-Only Page Setting,Mining Pool Sharing',
                  zh: 'M2Pool 矿池,个人中心,只读页面设置,矿池分享'
                }
            }
          },
          {//个人中心安全设置personal
            path: 'securitySetting',
            name: 'SecuritySetting',
            component: () => import('../views/personalCenter/securitySetting/index.vue'),
            meta: {title: '安全设置页面',
              description:i18n.t(`seo.securitySetting`),
              allAuthority:[`admin`,`registered`],
               // keywords: 'M2Pool 矿池,安全设置,密码修改,Security settings, password change'
               keywords:{
                en: 'Security settings, password change',
                zh: 'M2Pool 矿池,安全设置,密码修改'
               }
            }
          },
          {//个人中心 
            path: 'personal',
            name: 'personal',
            component: () => import('../views/personalCenter/personal/index.vue'),
            meta: {title: '个人信息页面',
              description:i18n.t(`seo.personal`),
              allAuthority:[`admin`,`registered`],
              // keywords: 'M2Pool 矿池,个人信息,登录历史,Personal Information, Login History'
              keywords:{
                en: 'Personal Information, Login History',
                zh: 'M2Pool 矿池,个人信息,登录历史'
              }
            }
          },
          {//个人中心 挖矿报告 (隐藏)
            path: 'miningReport',
            name: 'MiningReport',
            component: () => import('../views/personalCenter/miningReport/index.vue'),
            meta: {title: '挖矿报告页面',
              description:i18n.t(`seo.miningReport`),
              allAuthority:[`admin`,`registered`],
              // keywords: 'M2Pool 矿池,个人中心,挖矿报告,订阅服务,Mining Report, Subscription Service'
              keywords:{
                en: 'Mining Report, Subscription Service',
                zh: 'M2Pool 矿池,个人中心,挖矿报告,订阅服务'
              }
            }
          },

          {//个人中心 API
            path: 'personalAPI',
            name: 'PersonalAPI',
            component: () => import('../views/personalCenter/personalAPI/index.vue'),
            meta: {title: 'API页面',
              description:i18n.t(`seo.personalAPI`),
              allAuthority:[`admin`,`registered`],
              // keywords: 'M2Pool 矿池,个人中心,API 页面,API密钥生成,API Page,API Key Generation'
              keywords:{
                en: 'API Page,API Key Generation',
                zh: 'M2Pool 矿池,个人中心,API 页面,API密钥生成'
              }
            }
          },
         
        ]
      },


]

// 独立页面路由
const staticRoutes = [
  {
    path: '/:lang/login',
    name: 'Login',
    component: () => import('../views/login/login.vue'),
    meta: {
      title: '登录页面',
      description: "M2Pool 矿池登录页面",
      allAuthority: [`all`],
      // keywords: 'M2Pool 矿池,登录页面,账号密码,安全登录'
      keywords:{
        en: 'M2Pool Mining Pool,login page,account password',
        zh: 'M2Pool 矿池,登录页面,账号密码,安全登录'
      }
    }
  },
  {
    path: '/:lang/register',
    name: 'Register',
    component: () => import('../views/register/register.vue'),
    meta: {title: '注册页面',description:"M2Pool 矿池注册页面，新用户可在此便捷注册账号，加入 M2Pool 矿池大家庭。",allAuthority:[`all`],
       // keywords: 'M2Pool 矿池,注册页面,新用户注册,账号创建'
       keywords:{
        en: 'M2Pool Mining Pool,register page,new user registration,account creation',
        zh: 'M2Pool 矿池,注册页面,新用户注册,账号创建'
       }
    }
  },
  {
    path: '/:lang/simulation',
    name: 'simulation',
    component: () => import('../views/simulation.vue'),
    meta: {title: '测试页面',description:"M2Pool 矿池测试页面，用于进行系统功能的模拟和测试，确保矿池稳定运行",allAuthority:[`all`],
        // keywords: 'M2Pool 矿池,测试页面,系统测试,稳定运行'
        keywords:{
          en: 'M2Pool Mining Pool,test page,system test,stable operation',
          zh: 'M2Pool 矿池,测试页面,系统测试,稳定运行'
        }
    }
  },
 
 
 
  {
    path: '/:lang/resetPassword',
    name: 'ResetPassword',
    component: () => import('../views/resetPassword/index.vue'),
    meta: {title: '重置密码页面',description:"M2Pool 矿池重置密码页面，用户可在此修改矿池网站账号密码，保障账户安全。",allAuthority:[`all`],
      // keywords: 'M2Pool 矿池,重置密码,修改密码,账户安全'
      keywords:{
        en: 'M2Pool Mining Pool,reset password,modify password,account security',
        zh: 'M2Pool 矿池,重置密码,修改密码,账户安全'
      }
    }
  },
  {//404
    path: '/:lang/404',
    component: () => import('../views/page404.vue'),
    meta: {title: '404页面',description:"M2Pool 矿池 404 页面，当 URL 错误时将跳转至此页面，提示用户页面不存在。",allAuthority:[`all`],
      // keywords: 'M2Pool 矿池,404 页面,页面不存在,错误跳转'
      keywords:{
        en: 'M2Pool Mining Pool,404 page,page not found,error redirect',
        zh: 'M2Pool 矿池,404 页面,页面不存在,错误跳转'
      }
    }
  },

]


const routes = [
  {
    path: '/:lang',
    component: Layout,
    beforeEnter: (to, from, next) => {
      const lang = to.params.lang
      const supportedLanguages = ['zh', 'en']
      
      // 检查语言参数
      if (!supportedLanguages.includes(lang)) {
        return next(`/en${to.path}`)
      }
      
      // 设置语言
      if (i18n.locale !== lang) {
        i18n.locale = lang
        localStorage.setItem('lang', lang)
      }
      return next()
    },
    children: childrenRoutes
  },
  // 根路径重定向
  {
    path: '/',
    redirect: () => {
      const defaultLang = localStorage.getItem('lang') || 'en'
      return `/${defaultLang}`
    }
  },
  // 添加所有静态路由
  ...staticRoutes,
  // 404页面
  {
    path: '*',
    redirect: to => {
      const lang = localStorage.getItem('lang') || 'en'
      return `/${lang}/404`
    }
  }
]



const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes,
  strict: true, // 启用严格模式，不允许尾部斜杠
 
 
})



router.beforeEach((to, from, next) => {
    // 检查语言参数
    const lang = to.params.lang;
    const supportedLanguages = ['zh', 'en'];

      // 如果路径以斜杠结尾且不是根路径，则重定向
      if (to.path.endsWith('/') && to.path.length > 1) {
        const path = to.path.slice(0, -1);
        return next({
          path,
          query: to.query,
          hash: to.hash,
          params: to.params
        });
      }
    
    if (!lang && to.path !== '/') {
      const defaultLang = localStorage.getItem('lang') || 'en';
      return next(`/${defaultLang}${to.path}`);
    }

  let data = localStorage.getItem("jurisdiction");
  let jurisdiction =JSON.parse(data);

  localStorage.setItem('superReportError',"")
  let element = document.getElementsByClassName('el-main')[0];
  if(element){
    element.scrollTop = 0
  }

  let token
    try{
      token =JSON.parse(localStorage.getItem('token')) 
    }catch(e){
     console.log(e);
    }
  

  if (token) {

    
    if (to.path === `/${lang}/login`|| to.path === `/${lang}/register`) {
      next({ path: `/${lang}` })
    }else if(to.meta.allAuthority && to.meta.allAuthority[0] ==`all`){
      next()
    }else if(jurisdiction.roleKey && to.meta.allAuthority&&to.meta.allAuthority.some(item=>item == jurisdiction.roleKey )){  
      next()
    }else{
     console.log(to.meta.allAuthority,to.path,"权限");
     
      Message({//权限不足
        showClose: true,
        message:i18n.t(`mining.jurisdiction`),
        type: 'error'
      });
    }
  }else{

    
    let paths = [`/${lang}/miningAccount`,`/${lang}/workOrderRecords`,`/${lang}/userWorkDetails`,`/${lang}/submitWorkOrder`,`/${lang}/workOrderBackend`,`/${lang}/BKWorkDetails`]
    if (paths.includes(to.path)  || to.path.includes(`personalCenter`) ) {
    
      Message({//权限不足
        showClose: true,
        message:i18n.t(`mining.logInFirst`),
        type: 'error'
      });

     next({ path: `/${lang}/login`  })
    } else {
       
      next()
    }
  }
 
  
  
})




// 解决报错 此方法只针对VueRouter3.0以上
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {
  return originalPush.call(this, location).catch(err => err)
}
export default router
