request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import axios from 'axios'
  2. import { Message, MessageBox } from 'element-ui'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. // create an axios instance
  6. const service = axios.create({
  7. baseURL: process.env.BASE_API, // api的base_url
  8. timeout: 120000 // request timeout
  9. })
  10. // request interceptor
  11. service.interceptors.request.use(config => {
  12. // Do something before request is sent
  13. if (store.getters.token) {
  14. config.headers['X-Token'] = getToken() // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
  15. }
  16. return config
  17. }, error => {
  18. // Do something with request error
  19. console.log(error) // for debug
  20. Promise.reject(error)
  21. })
  22. // response interceptor
  23. service.interceptors.response.use(
  24. response => {
  25. const res = response.data
  26. if (res.errno !== 0) {
  27. if (res.errno === 401) {
  28. MessageBox.alert('没有权限登录系统,请重新登录', '已退出', {
  29. confirmButtonText: '重新登录',
  30. type: 'error'
  31. }).then(() => {
  32. store.dispatch('FedLogOut').then(() => {
  33. location.href = process.env.OS_API
  34. })
  35. })
  36. } else if (res.errno === 403) {
  37. MessageBox.alert('登录超时自动退出系统,请重新登录', '已退出', {
  38. confirmButtonText: '重新登录',
  39. type: 'error'
  40. }).then(() => {
  41. store.dispatch('FedLogOut').then(() => {
  42. location.href = process.env.OS_API
  43. })
  44. })
  45. } else {
  46. MessageBox.alert(res.errmsg, '操作失败', {
  47. confirmButtonText: '确定',
  48. type: 'error'
  49. })
  50. }
  51. return Promise.reject(new Error(res.errmsg || 'Error'))
  52. }
  53. return response
  54. },
  55. error => {
  56. console.log('err' + error)
  57. Message({
  58. message: '连接超时(后台不能连接,请联系系统管理员)',
  59. type: 'error',
  60. duration: 5000
  61. })
  62. return Promise.reject(error)
  63. }
  64. )
  65. export default service