request.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. import axios from 'axios'
  2. import qs from 'qs'
  3. import { MessageBox, Message, Loading } from 'element-ui'
  4. import { noEmpty } from './index.js'
  5. import store from '@/store'
  6. let notifyTimer = null
  7. // import { getToken } from '@/utils/auth'
  8. let loadingInit = null
  9. // create an axios instance
  10. let baseURL = process.env.VUE_APP_BASE_API
  11. const userApi = window.sessionStorage.getItem('testUrl')
  12. if (process.env.VUE_APP_BASE_API === 'http://api.t.antretail.cn' && userApi) {
  13. baseURL = userApi
  14. }
  15. const service = axios.create({
  16. baseURL, // url = base url + request url
  17. // withCredentials: true, // send cookies when cross-domain requests
  18. timeout: 60000 // request timeout
  19. })
  20. // request interceptor
  21. service.interceptors.request.use(
  22. config => {
  23. // do something before request is sent
  24. if (config.CT === 'json') {
  25. config.headers['Content-Type'] = 'application/json;charset=UTF-8'
  26. }
  27. // config.headers['Content-Type'] = 'application/json;charset=UTF-8'
  28. // config.headers['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
  29. // const token = window.sessionStorage.getItem('fp_token')
  30. // if (token) {
  31. // config.headers['Cookie'] = 'shiro.sesssion=' + token
  32. // }
  33. if (config.data.loading) {
  34. loadingInit = Loading.service({
  35. lock: true,
  36. text: '拼命加载中...',
  37. spinner: 'el-icon-loading',
  38. background: 'rgba(0, 0, 0, 0.7)'
  39. })
  40. }
  41. if (config.method === 'post' && config.CT !== 'json') {
  42. config.data = qs.stringify(config.data)
  43. }
  44. return config
  45. },
  46. error => {
  47. // do something with request error
  48. console.log(error) // for debug
  49. return Promise.reject(error)
  50. }
  51. )
  52. // response interceptor
  53. service.interceptors.response.use(
  54. /**
  55. * If you want to get http information such as headers or status
  56. * Please return response => response
  57. */
  58. /**
  59. * Determine the request status by custom code
  60. * Here is just an example
  61. * You can also judge the status by HTTP Status Code
  62. */
  63. response => {
  64. const res = response.data
  65. if (loadingInit) loadingInit.close()
  66. if (res.errno !== 0) {
  67. if (res.errno === 405 || res.errno === 404) {
  68. window.sessionStorage.clear()
  69. // window.localStorage.clear()
  70. if (loadingInit) {
  71. loadingInit.close()
  72. }
  73. MessageBox.confirm(`${res.errmsg},是否重新登录?`, {
  74. type: 'error'
  75. }).then(() => {
  76. window.history.go(0)
  77. })
  78. return
  79. } else {
  80. Message({
  81. message: res.errmsg || '未知错误' + error,
  82. type: 'error',
  83. duration: 2 * 1000
  84. })
  85. return Promise.reject(new Error(res.errmsg || 'Error'))
  86. }
  87. } else {
  88. if (res.token) {
  89. return res
  90. } else {
  91. return res.data || res
  92. }
  93. }
  94. },
  95. error => {
  96. const curR = JSON.parse(JSON.stringify(error)).response || {}
  97. const curRD = curR.data || {}
  98. if (loadingInit) {
  99. loadingInit.close()
  100. }
  101. Message({
  102. message: curRD.errmsg || '未知错误' + error,
  103. type: 'error',
  104. duration: 2 * 1000
  105. })
  106. return Promise.reject(error)
  107. }
  108. )
  109. function getRequest(url, data, otherParams, method) {
  110. const token = window.sessionStorage.getItem('fp_token')
  111. const params = Object.assign({ token, page_size: 10}, data)
  112. // const params = Object.assign({}, data)
  113. if (otherParams) params[otherParams] = otherParams
  114. const newUrl = url.toLowerCase()
  115. return service({ url: newUrl, data: params, method: method || 'post' })
  116. // return service({ url, data: params, method: method || 'post', transformResponse: [data => {return JSON.parse(JSON.stringify(data))}] })
  117. }
  118. function getRequestNoSort(url, data, otherParams, method) {
  119. const token = window.sessionStorage.getItem('fp_token')
  120. const params = Object.assign({ token }, data)
  121. // const params = Object.assign({}, data)
  122. if (otherParams) params[otherParams] = otherParams
  123. const newUrl = url.toLowerCase()
  124. return service({ url: newUrl, data: params, method: method || 'post' })
  125. // return service({ url, data: params, method: method || 'post', transformResponse: [data => {return JSON.parse(JSON.stringify(data))}] })
  126. }
  127. function nologinRequest(url, data, otherParams, method) {
  128. const params = Object.assign({}, data)
  129. if (otherParams) params[otherParams] = otherParams
  130. return service({ url, data: params, method: method || 'post' })
  131. }
  132. function getJsonRequest(url, data, otherParams, method) {
  133. const token = window.sessionStorage.getItem('fp_token')
  134. const params = Object.assign({ }, data)
  135. if (otherParams) params[otherParams] = otherParams
  136. const newUrl = url.toLowerCase()
  137. return service({ url: newUrl + `?token=${token}`, data: params, method: method || 'post', CT: 'json' })
  138. }
  139. export {
  140. nologinRequest,
  141. getRequest,
  142. getRequestNoSort,
  143. getJsonRequest,
  144. }
  145. export default service