http.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**
  2. * author 赵越
  3. * 2018-11-04
  4. */
  5. import axios from '@/plugins/axios'
  6. import Vue from 'vue'
  7. /**
  8. *
  9. * @param {string} path 请求地址的 path
  10. * @param {string} data 请求实体
  11. * @param {object} payload 其他选项
  12. * @param {object} promise 返回一个 promise
  13. */
  14. const get = async (path, data, payload = {}) => await request('get', path, data, payload)
  15. /**
  16. *
  17. * @param {string} path 请求地址的 path
  18. * @param {string} data 请求实体
  19. * @param {object} payload 其他选项
  20. * @param {object} promise 返回一个 promise
  21. */
  22. const post = async (path, data = {}, payload = {}) => {
  23. let formData = ''
  24. for(const key in data) {
  25. if(data.hasOwnProperty(key)) {
  26. const element = data[key]
  27. formData += `${key}=${element}&`
  28. }
  29. }
  30. formData = formData.slice(0, formData.length - 1)
  31. let config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }
  32. if(payload.config && payload.config.headers) config.headers = {
  33. ...config.headers,
  34. ...payload.config.headers,
  35. }
  36. return await request('post', path, formData, { config })
  37. }
  38. /**
  39. *
  40. * @param {method} method 请求方法
  41. * @param {string} path 请求地址的 path
  42. * @param {string} data 请求实体
  43. * @param {object} payload 其他选项
  44. * @param {object} promise 返回一个 promise
  45. */
  46. const request = async (method, path, data, payload = {}) => {
  47. let host = ''
  48. let url = host + path
  49. let body = {
  50. url,
  51. data,
  52. method,
  53. params: data,
  54. }
  55. if(payload.config) body = {
  56. ...body,
  57. ...payload.config,
  58. params: '',
  59. }// Object.assign(body, payload.config, { params: '' })
  60. consoleFormat({ body })
  61. const res = await axios.request(body)
  62. let rData = res.data
  63. if(typeof rData !== 'object') rData = JSON.parse(rData)
  64. // consoleFormat({ rData })
  65. if(rData.status === 1) return rData
  66. else if(rData.status === -99 && !payload.neverLogout) {
  67. location.href = 'https://www.proginn.com/?loginbox=show'
  68. return
  69. } else {
  70. if(!payload.neverLogout) Vue.prototype.$message.error(rData.info)
  71. return
  72. }
  73. }
  74. const consoleFormat = obj => {
  75. const key = Object.keys(obj)[0]
  76. }
  77. Vue.prototype.$get = get
  78. Vue.prototype.$post = post
  79. Vue.prototype.$request = request
  80. let host = `https://dev.test.proginn.com`
  81. // host = `https://www.proginn.com`
  82. export default { get, post, request, host }