axios.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import axios from 'axios'
  2. import {Message} from 'element-ui'
  3. import {
  4. getToken,
  5. setToken,
  6. openError
  7. } from './auth.js'
  8. import qs from 'qs'
  9. const service = axios.create({
  10. baseURL: process.env.VUE_APP_BASE_API,
  11. // baseURL:'https://ding.insys.g107.com/',
  12. timeout: 20000,
  13. headers: {
  14. 'Content-Type': 'application/x-www-form-urlencoded',
  15. },
  16. transformRequest: [function(data) {
  17. return qs.stringify(data)
  18. }]
  19. })
  20. let url='';
  21. let data='';
  22. service.interceptors.request.use(
  23. config => {
  24. url=config.url;
  25. data=qs.parse(config.data)
  26. if (getToken()) {
  27. config.headers['A-Token'] = getToken()
  28. }
  29. return config
  30. },
  31. error => {
  32. Promise.reject(error)
  33. }
  34. )
  35. service.interceptors.response.use(
  36. response => {
  37. if (response.data.code === 1) {
  38. if(response.data.data.token){
  39. setToken(response.data.data.token);
  40. }else if (response.data.refresh_token) {
  41. if (response.data.refresh_token !== getToken()) {
  42. setToken(response.data.refresh_token);
  43. }
  44. }
  45. return response;
  46. } else if (response.data.code === 401) {
  47. Message({
  48. message: response.data.msg,
  49. type: 'error',
  50. })
  51. return Promise.reject(response.data.msg)
  52. }else if(response.data.code === 2001){ //免登时用,2001为过期
  53. if(url=='/api/ding/login'){
  54. return response;
  55. }else{
  56. Message({
  57. message: response.data.msg,
  58. type: 'error',
  59. })
  60. return Promise.reject(response.data.msg)
  61. }
  62. }else{
  63. Message({
  64. message: response.data.msg,
  65. type: 'error',
  66. })
  67. return Promise.reject(response.data.msg)
  68. }
  69. },
  70. error => {
  71. if(error.message=='interrupt'){
  72. // Message({
  73. // message: '请勿频繁切换页面',
  74. // type: 'warning',
  75. // })
  76. return Promise.reject(error.message)
  77. }else if(error.message=='Network Error'){
  78. // Message({
  79. // message: '网络异常,请检查网络是否畅通,再重新进入应用',
  80. // type: 'error',
  81. // })
  82. console.log('网络异常,请检查网络是否畅通,再重新进入应用')
  83. return Promise.reject(error.message)
  84. }else if(error.message=='timeout of 2000ms exceeded'){
  85. if(url=='/api/integral/review/a/entry'||url=='/api/integral/point/entry'){
  86. let sum=0;
  87. if(data){
  88. sum=data.items.length*data.members.length
  89. }
  90. openError({sum:sum,message:'钉钉PC'})
  91. }
  92. Message({
  93. message: '请求超时,请稍后再试',
  94. type: 'error',
  95. })
  96. return Promise.reject(error.message)
  97. }else{
  98. Message({
  99. message: error.message,
  100. type: 'error',
  101. })
  102. return Promise.reject(error.message)
  103. }
  104. }
  105. )
  106. export default service