import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

// 解决IE内核浏览器问题
import 'core-js/stable';
import 'regenerator-runtime/runtime';

// ElementUI
import '@tools/elUI'

import axios from "@api/axios"; // API接口访问
Vue.prototype.API = axios;//全局注册

import base from "@tools/base"; // 公共方法
Vue.prototype.BASE = base;

import ECzm from "@tools/echartsToolzm"; // echarts处理 - zm
Vue.prototype.ECZM = ECzm;

import echartsTool from "@tools/echartsTool"; // Echarts 工具类 - ylf
Vue.prototype.ET = echartsTool;

import EClzx from "@tools/echartsToolLzx"; // echarts处理
Vue.prototype.ECLZX = EClzx;

// excel导出
import Blob from '@tools/excel/Blob.js';
import Export2Excel from '@tools/excel/Export2Excel.js';// excel导出

// import formCheck from "@tools/formCheck"; // 表单的处理
// Vue.prototype.FC = formCheck;

import Get_PDF from '@tools/htmlToPdf'; // pdf导出
Vue.prototype.Get_PDF = Get_PDF;

import JsonExcel from 'vue-json-excel'//excel导出
Vue.component('downloadExcel', JsonExcel)
//时间格式转换
import moment from 'moment';
Vue.prototype.Moment = moment;
// 滚动条
import vuescroll from "vuescroll";
Vue.use(vuescroll, {
  sizeStrategy: 'percent',
  ops: {
    scrollPanel: {
      easing: "easeInOutQuad",
      scrollingX: false, // 横向滚动条关闭
    },
    rail: {
      //轨道设置
      background: "rgba(255,255,255,0.45)",
      opacity: 0,
      size: "9px",
      specifyBorderRadius: false, // 是否指定轨道的 borderRadius， 如果不那么将会自动设置。
      gutterOfEnds: "0px", // 轨道距 x 和 y 轴两端的距离。
      gutterOfSide: "0px",
      keepShow: false, //是否即使 bar 不存在的情况下也保持显示。
    },
    bar: {
      showDelay: 500, // 在鼠标离开容器后多长时间隐藏滚动条
      onlyShowBarOnScroll: true, // 是否只在滚动时显示
      keepShow: true, // 滚动条是否保持显示
      background: "rgba(0,0,0,0.65)", // 滚动条背景色
      size: "7px",
    },
  }, // 在这里设置全局默认配置
  name: "VueScroll", // 在这里自定义组件名字，默认是vueScroll
});

// 引入外部字体
import '@assets/css/font.scss'
//路由前置导航
router.beforeEach((to, from, next) => {
  // 登录后登录处理办法
  // if (to.path === '/login' && store.getters.authToken) {
  //   next({ path: '/' })
  // } else
   if (to.matched.some(m => m.meta.requireAuth)) {    // 需要登录
    if (window.localStorage.authToken) {
      next()
    } else if (to.path !== '/login') {
      let token = localStorage.getItem('authToken');
      if (token === null || token === '' || token === undefined) {
        next({ path: '/login' })
      } else { next() }
    } else {
      next()
    }
  } else {   // 不需要登录
    next()
  }
  if (to.matched.length === 0) { // 如果未匹配到路由
    // sessionStorage.removeItem("btrh_sxsd_locationHref");
    next('/404')   // 如果上级也未匹配到路由则跳转登录页面，如果上级能匹配到则转上级路由
  }
})

Vue.config.productionTip = false

window.__STATICVUE__ = new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
