import Vue from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementUI from 'element-ui'; import moment from 'moment' // 时间库 import 'element-ui/lib/theme-chalk/index.css'; import * as dd from 'dingtalk-jsapi'; import VConsole from 'vconsole' import './icons' // icon import axios from 'axios' import service from './api/axios' import echarts from 'echarts' import NProgress from 'nprogress'; import 'nprogress/nprogress.css' import { getToken, setToken,getUserData,setUserData,getTyps,setTyps,getIsCreator,supremeAuthority,authoritys,getTypsName} from './api/auth'; // import { createSocket,sendWSPush,sendPing } from './api/websocket' import JsonExcel from "vue-json-excel"; Vue.component("downloadExcel", JsonExcel); // 头像 import userImage from '@/components/UserImage' Vue.component('userImage', userImage) Vue.use(ElementUI); // if (process.env.NODE_ENV === 'development') { // new VConsole() // } Vue.prototype.$echarts = echarts Vue.prototype.$dd=dd; Vue.prototype.$getToken = getToken Vue.prototype.$setToken = setToken Vue.prototype.$getUserData = getUserData Vue.prototype.$setUserData = setUserData Vue.prototype.$getTyps = getTyps Vue.prototype.$setTyps = setTyps Vue.prototype.$getTypsName=getTypsName Vue.prototype.$getIsCreator = getIsCreator Vue.prototype.$supremeAuthority = supremeAuthority Vue.prototype.$authoritys = authoritys Vue.prototype.$moment = moment Vue.prototype.$appId=process.env.VUE_APP_APPID // 长连接 // 接收消息 // const getsocketData = e => { // 创建接收消息函数 // const data = e && e.detail.data // console.log(data) // } // // 注册监听事件 // window.addEventListener('onmessageWS', getsocketData) // // 在需要的时候卸载监听事件,比如离开页面 // window.removeEventListener('onmessageWS', getsocketData) Vue.prototype.$http= service; //Vue函数添加一个原型属性$axios 指向axios,这样vue实例或组件中不用再去重复引用Axios 直接用this.$axios就能执行axios 方法 var CancelToken = axios.CancelToken; Vue.$httpRequestList=[]; Vue.prototype.$axios = (type, url, data,heaStr) => { if(url!='/api/ding/login'&& url!='/api/integral/types'){ var Accept=''; switch(heaStr){ case 'v2': Accept='application/vnd.test.v2+json' break; case 'v3': Accept='application/vnd.test.v3+json' break; case 'v4': Accept='application/vnd.test.v4+json' break; } if(getToken()){ return new Promise((resolve, reject) => { //封装ajax var aa = { method: type, url: url, headers:{ 'Accept':Accept }, cancelToken: new CancelToken(c => { //强行中断请求要用到的 Vue.$httpRequestList.push(c); }) } var json = (type == 'get') ? Object.assign(aa, { params: data }) : Object.assign(aa, { data: data }); var ajax = Vue.prototype.$http(json).then(res => { resolve(res); }).catch(error => { //中断请求和请求出错的处理 if (error == "interrupt") { console.log('已中断请求'); return; } else { reject(error); } }) return ajax; }) }else{return Promise.reject('无token')} }else{ return new Promise((resolve, reject) => { //封装ajax var aa = { method: type, url: url, cancelToken: new CancelToken(c => { //强行中断请求要用到的 Vue.$httpRequestList.push(c); }) } var json = (type == 'get') ? Object.assign(aa, { params: data }) : Object.assign(aa, { data: data }); var ajax = Vue.prototype.$http(json).then(res => { resolve(res); }).catch(error => { //中断请求和请求出错的处理 if (error.message == "interrupt") { console.log('已中断请求'); return; } else { reject(error); } }) return ajax; }) } }; router.beforeEach((to, from, next) => { //路由切换检测是否强行中断, NProgress.start(); if(Vue.$httpRequestList.length>0){ //强行中断时才向下执行 Vue.$httpRequestList.forEach(item=>{ item('interrupt');//给个标志,中断请求 }) } next(); }); router.afterEach(() => { NProgress.done(); }); Vue.config.productionTip = false new Vue({ router, store, render: h => h(App) }).$mount('#app')