http.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import axios from 'axios'
  2. import { baseURL } from './base.js'
  3. import router from '../router/index.js'
  4. import store from '@/store'
  5. import qs from 'qs'
  6. import elementui from 'element-ui'
  7. // 创建 axios 实例
  8. const service = axios.create({
  9. baseURL: baseURL,
  10. withCredentials: false,// 是否跨站点访问控制请求
  11. timeout: 60000,
  12. headers: {
  13. 'Content-Type': 'application/x-www-form-urlencoded',//x-www-form-urlencoded
  14. // 'User_tokey':''
  15. }
  16. })
  17. // 请求拦截器
  18. service.interceptors.request.use((config) => {
  19. config.data.User_tokey = store.state.userInfo.token
  20. config.data = qs.stringify(config.data)
  21. // config.headers['Authorization'] = '1' // 让每个请求携带自定义token //设置请求头
  22. return config
  23. }, (error) => {
  24. // 错误抛到业务代码
  25. error.data = {}
  26. return Promise.resolve(error)
  27. })
  28. // 响应拦截器
  29. service.interceptors.response.use((response) => {
  30. showStatus(response.data)
  31. return response
  32. }, (error) => {
  33. // 错误抛到业务代码
  34. // router.push({
  35. // path:'/error'
  36. // })
  37. elementui.Message.error('系统异常,联系管理员处理')
  38. error.data = {}
  39. return Promise.resolve(error)
  40. })
  41. const showStatus = (status) => {//状态码
  42. switch (status.Code) {
  43. case 200:
  44. break
  45. case 201:
  46. elementui.Message.error('登录过期,请重新登陆')
  47. store.commit('setuserInfo', {
  48. username: store.state.userInfo.bzd_username,
  49. password: store.state.userInfo.bzd_password,
  50. token: ''
  51. })
  52. setTimeout(function() {
  53. router.replace({
  54. name: 'login',
  55. })
  56. }, 1000)
  57. break
  58. case 202:
  59. elementui.Message.error(status.Msg + '[' + status.Code + ']')
  60. break
  61. case 500:
  62. elementui.Message.error('服务器错误[' + status.Code + ']')
  63. break
  64. case 501:
  65. elementui.Message.error('服务未实现[' + status.Code + ']')
  66. break
  67. case 502:
  68. elementui.Message.error('网络错误[' + status.Code + ']')
  69. break
  70. default:
  71. elementui.Message.error(status.Msg + '[' + status.Code + ']')
  72. }
  73. console.log('状态码',status)
  74. }
  75. export {
  76. service as axios
  77. }