main.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import store from './store'
  5. import ElementUI from 'element-ui';
  6. import 'element-ui/lib/theme-chalk/index.css';
  7. import moment from 'moment' // 时间库
  8. import * as dd from 'dingtalk-jsapi';
  9. import VConsole from 'vconsole'
  10. import './icons'
  11. import axios from 'axios'
  12. import service from './api/axios'
  13. import echarts from 'echarts'
  14. import NProgress from 'nprogress';
  15. import 'nprogress/nprogress.css'
  16. import {returnDeptName, getToken, setToken,getUserData,setUserData,getTyps,setTyps,getIsCreator,supremeAuthority,authoritys,getTypsName,generateUUID,getCache,setCache,removeCache,getEmployeeMapItem} from './api/auth';
  17. import * as socketApi from './api/websocket'
  18. import * as socketApiTow from './api/websocketTow'
  19. import print from "./api/print.js";
  20. Vue.use(print)
  21. // 头像
  22. import userImage from '@/components/UserImage'
  23. import NoData from '@/components/noData'
  24. import BrawerBox from '@/components/BrawerBox';
  25. import FormBox from '@/components/FormBox';
  26. Vue.component('BrawerBox', BrawerBox)
  27. Vue.component('userImage', userImage)
  28. Vue.component('noData', NoData)
  29. Vue.component('FormBox', FormBox)
  30. Vue.use(ElementUI);
  31. if (process.env.NODE_ENV === 'development') {
  32. new VConsole()
  33. }
  34. Vue.prototype.$echarts = echarts
  35. Vue.prototype.$dd = dd;
  36. Vue.prototype.$getToken = getToken
  37. Vue.prototype.$setToken = setToken
  38. Vue.prototype.$getUserData = getUserData
  39. Vue.prototype.$setUserData = setUserData
  40. Vue.prototype.$getTyps = getTyps
  41. Vue.prototype.$setTyps = setTyps
  42. Vue.prototype.$getTypsName = getTypsName
  43. Vue.prototype.$getIsCreator = getIsCreator
  44. Vue.prototype.$supremeAuthority = supremeAuthority
  45. Vue.prototype.$authoritys = authoritys
  46. Vue.prototype.$moment = moment
  47. Vue.prototype.$appId = process.env.VUE_APP_APPID
  48. Vue.prototype.$socketApi = socketApi //长连接
  49. Vue.prototype.$socketApiTow = socketApiTow //长连接
  50. Vue.prototype.$generateUUID = generateUUID //UID 唯一标识
  51. Vue.prototype.$getCache = getCache
  52. Vue.prototype.$setCache = setCache
  53. Vue.prototype.$removeCache = removeCache
  54. Vue.prototype.$returnDeptName = returnDeptName
  55. Vue.prototype.$getEmployeeMapItem = getEmployeeMapItem
  56. // 上传相关
  57. Vue.prototype.$action = 'https://integralsys.oss-cn-shenzhen.aliyuncs.com'
  58. Vue.prototype.$acceptImg = 'image/jpeg,image/png'
  59. Vue.prototype.$acceptFile = 'application/pdf,application/vnd.ms-excel,application/msword,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document'
  60. Vue.prototype.$acceptImgFile='image/jpeg,image/png,application/pdf,application/vnd.ms-excel,application/msword,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document'
  61. Vue.prototype.$xtoken={ 'X-Token': getToken() };
  62. Vue.prototype.$http = service;
  63. var CancelToken = axios.CancelToken;
  64. Vue.$httpRequestList = [];
  65. Vue.prototype.$axios = (type, url, data,heaStr) => {
  66. if(url!='/api/ding/login'&&url!='/api/integral/types'&&url!='/api/screen/ranking'&&url!='/api/auth/qr'){
  67. var Accept='';
  68. switch(heaStr){
  69. case 'v2':
  70. Accept='application/vnd.test.v2+json'
  71. break;
  72. case 'v3':
  73. Accept='application/vnd.test.v3+json'
  74. break;
  75. case 'v4':
  76. Accept='application/vnd.test.v4+json'
  77. break;
  78. }
  79. if(getToken()){
  80. return new Promise((resolve, reject) => { //封装ajax
  81. var aa = {
  82. method: type,
  83. url: url,
  84. headers:{
  85. 'Accept':Accept
  86. },
  87. cancelToken: new CancelToken(c => { //强行中断请求要用到的
  88. Vue.$httpRequestList.push(c);
  89. })
  90. }
  91. var json = (type == 'get') ? Object.assign(aa, { params: data }) : Object.assign(aa, { data: data });
  92. var ajax = Vue.prototype.$http(json).then(res => {
  93. resolve(res);
  94. }).catch(error => { //中断请求和请求出错的处理
  95. if (error == "interrupt") {
  96. console.log('已中断请求');
  97. return;
  98. } else {
  99. reject(error);
  100. }
  101. })
  102. return ajax;
  103. })
  104. }else{return Promise.reject('无token')}
  105. }else{
  106. return new Promise((resolve, reject) => { //封装ajax
  107. var aa = {
  108. method: type,
  109. url: url,
  110. cancelToken: new CancelToken(c => { //强行中断请求要用到的
  111. Vue.$httpRequestList.push(c);
  112. })
  113. }
  114. var json = (type == 'get') ? Object.assign(aa, { params: data }) : Object.assign(aa, { data: data });
  115. var ajax = Vue.prototype.$http(json).then(res => {
  116. resolve(res);
  117. }).catch(error => { //中断请求和请求出错的处理
  118. if (error.message == "interrupt") {
  119. console.log('已中断请求');
  120. return;
  121. } else {
  122. reject(error);
  123. }
  124. })
  125. return ajax;
  126. })
  127. }
  128. };
  129. router.beforeEach((to, from, next) => { //路由切换检测是否强行中断,
  130. NProgress.start();
  131. if(Vue.$httpRequestList.length>0){ //强行中断时才向下执行
  132. Vue.$httpRequestList.forEach(item=>{
  133. item('interrupt');//给个标志,中断请求
  134. })
  135. }
  136. next();
  137. });
  138. router.afterEach(() => {
  139. NProgress.done();
  140. });
  141. window.__BIRD_CONFIG = window.__BIRD_CONFIG || {};
  142. __BIRD_CONFIG.disableReport = true;
  143. Vue.config.productionTip = false
  144. new Vue({
  145. router,
  146. store,
  147. render: h => h(App)
  148. }).$mount('#app')