微信

ajax.js 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import axios from 'axios'
  2. import qs from 'qs'
  3. import toolClass from './util'
  4. import { Toast } from '../../node_modules/vant';
  5. const Axios = axios.create({
  6. timeout: 60000,
  7. responseType: 'json',
  8. withCredentials: true,
  9. queryData: {},
  10. urlData: {},
  11. headers: {
  12. 'Content-Type': 'multipart/form-data'
  13. }
  14. })
  15. Axios.interceptors.request.use((config) => {
  16. // 处理请求data,若为get请求,拼到url后面,若为post请求,直接添加到body中
  17. config.urlData = {...config.urlData, org: 'MQ'}
  18. let urlData = qs.stringify(config.urlData)
  19. let queryData = qs.stringify(config.queryData)
  20. // 判断是通过斜杠传参还是通过query传参
  21. if (config.url.indexOf(':') > -1) {
  22. if (typeof config.urlData === 'object') {
  23. config.url = Object.keys(config.urlData).reduce((url, k) => { // 此方法对每个元素进行处理
  24. const re = new RegExp(`:${k}(?!w)`, 'i')
  25. return url.replace(re, config.urlData[k])
  26. }, config.url)
  27. }
  28. }
  29. if (queryData) {
  30. config.url += '?' + queryData
  31. }
  32. let fm = new FormData()
  33. for (let k in config.data) {
  34. if (Array.isArray(config.data[k])) {
  35. fm.append(k, ...config.data[k].map(v => `${k}=${encodeURIComponent(v)}`))
  36. } else {
  37. fm.append(k, config.data[k])
  38. }
  39. }
  40. config.data = fm
  41. return config
  42. }, (error) => {
  43. console.log(error)
  44. })
  45. const ajax = (...args) => {
  46. return new Promise((resolve, reject) => {
  47. Axios(...args).then(({ data }) => {
  48. // console.log(111)
  49. const { code, message, result } = data
  50. if (code === 200) {
  51. resolve(result)
  52. } else if (code === 401) {
  53. // reject(code)
  54. toolClass.getCode()
  55. } else {
  56. Toast({
  57. message: message,
  58. type: 'error'
  59. })
  60. }
  61. }).catch(reject)
  62. })
  63. }
  64. export default ajax