request-user.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import axios from 'axios'
  2. import { Message, MessageBox } from 'element-ui'
  3. import { removeToken } from '@/utils/auth'
  4. import store from '@/store'
  5. import qs from 'qs'
  6. import Vue from 'vue'
  7. // import moment from 'moment' // 时间库
  8. const service = axios.create({
  9. baseURL: process.env.BASE_API, // api的base_url https://intesys.cms.g107.com
  10. timeout: 10000,
  11. headers: {
  12. 'Content-Type': 'application/x-www-form-urlencoded'
  13. },
  14. transformRequest: [function(data) {
  15. // 对 data 进行任意转换处理
  16. return qs.stringify(data)
  17. }]
  18. })
  19. // request interceptor
  20. service.interceptors.request.use(
  21. config => {
  22. if (localStorage.getItem('user_token_temp')) {
  23. config.headers['A-TOKEN'] = localStorage.getItem('user_token_temp')
  24. }
  25. return config
  26. },
  27. error => {
  28. Promise.reject(error)
  29. }
  30. )
  31. var bool = true// 五秒执行一次变量
  32. // respone interceptor
  33. service.interceptors.response.use(
  34. response => {
  35. const res = response.data
  36. if (res.code === 401) {
  37. // 50008:非法的token; 50012:其他客户端登录了; 401:Token 过期了; 2000 考勤系统的token过期
  38. MessageBox.confirm('当前登录授权时间已经过期,请重新授权登录', '确定登出', {
  39. confirmButtonText: '重新登录',
  40. showClose: false,
  41. closeOnClickModal: false,
  42. closeOnPressEscape: false,
  43. showCancelButton: false,
  44. type: 'warning'
  45. }).then(() => {
  46. store.dispatch('LogOut')
  47. }).catch(() => {
  48. store.dispatch('LogOut')
  49. })
  50. return Promise.reject('error')
  51. } else if (res.code === 0) {
  52. if (res.msg == '') {
  53. return
  54. }
  55. Message({
  56. message: res.msg
  57. })
  58. return Promise.reject('error')
  59. } else if (res.code === 2001) {
  60. Message({
  61. message: res.msg
  62. })
  63. return Promise.reject('error')
  64. } else if (res.code === 999) {
  65. Message({
  66. message: res.msg
  67. })
  68. return Promise.reject('error')
  69. } else if (res.code === 3000) {
  70. Message({
  71. // message: '服务暂时不可用,请稍后重试,或联系客服',
  72. message: res.msg
  73. })
  74. return Promise.reject('error')
  75. } else if(res.code === 4444){
  76. store.state.user.pastDue = true
  77. localStorage.clear()
  78. sessionStorage.clear()
  79. removeAllToken()
  80. Router.push({
  81. path: '/login'
  82. })
  83. return Promise.reject('error')
  84. } else {
  85. // console.log('user_token_temp')
  86. // console.log(res.refresh_token)
  87. // if(res.refresh_token && res.code == 1){
  88. // console.log('平台Token'+moment().format('YYYY-MM-DD HH:mm:ss'))
  89. // console.log(res.refresh_token)
  90. // localStorage.setItem('user_token_temp', res.refresh_token)
  91. // }
  92. return response
  93. }
  94. },
  95. error => {
  96. if(error.message=='interrupt'){//是强制中断请求就拦截报错
  97. return Promise.reject(error)
  98. }
  99. // 五秒内只执行一次
  100. if (bool) {
  101. Message({
  102. message: error.message == 'timeout of 10000ms exceeded' ? '请求服务器超时,请稍后重试' : '请求网络错误,请稍后重试',
  103. duration: 1 * 2000,
  104. type: 'error'
  105. })
  106. bool = false
  107. setTimeout(() => {
  108. bool = true
  109. }, 5000)
  110. } else {
  111. console.log('不执行')
  112. }
  113. }
  114. )
  115. export default service