http.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 = {}) => {
  15. console.log('ajax get req:' + path)
  16. return await request('get', path, data, payload)
  17. }
  18. /**
  19. *
  20. * @param {string} path 请求地址的 path
  21. * @param {string} data 请求实体
  22. * @param {object} payload 其他选项
  23. * @param {object} promise 返回一个 promise
  24. */
  25. const post = async (path, data = {}, payload = {}) => {
  26. console.log('ajax req:' + path)
  27. let urlParams = [];
  28. console.log(data)
  29. for(const key in data) {
  30. console.log(key)
  31. if(data.hasOwnProperty(key)) {
  32. const element = encodeURIComponent(data[key])
  33. console.log(element)
  34. urlParams.push(`${key}=${element}`)
  35. }
  36. }
  37. console.log(urlParams)
  38. let formData = urlParams.join('&')
  39. console.log(formData)
  40. let config = { headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' } }
  41. if(payload.config && payload.config.headers) config.headers = {
  42. ...config.headers,
  43. ...payload.config.headers,
  44. }
  45. return await request('post', path, formData, { config })
  46. }
  47. /**
  48. *
  49. * @param {method} method 请求方法
  50. * @param {string} path 请求地址的 path
  51. * @param {string} data 请求实体
  52. * @param {object} payload 其他选项
  53. * @param {object} promise 返回一个 promise
  54. */
  55. const request = async (method, path, data, payload = {}) => {
  56. let host = ''
  57. let url = host + path
  58. let body = {
  59. url,
  60. data,
  61. method,
  62. params: data,
  63. }
  64. if(payload.config) body = {
  65. ...body,
  66. ...payload.config,
  67. params: '',
  68. }// Object.assign(body, payload.config, { params: '' })
  69. consoleFormat({ body })
  70. const res = await axios.request(body)
  71. let rData = res.data
  72. if(typeof rData !== 'object') rData = JSON.parse(rData)
  73. consoleFormat({ rData })
  74. if(rData.status === 1) return rData
  75. else if((rData.status === -99 || rData.status === '-99') && !payload.neverLogout) {
  76. // alert('not login ..');
  77. // const deviceType = getDeviceType();
  78. // alert('deviceType ..' + deviceType);
  79. // if (deviceType === 'ios' || deviceType === 'android') {
  80. // alert('redirect to login:' + 'proginn://login')
  81. // location.href = 'proginn://login'
  82. // } else {
  83. // location.href = 'https://www.proginn.com/?loginbox=show'
  84. // }
  85. return
  86. } else {
  87. if(!payload.neverLogout) Vue.prototype.$message.error(rData.info)
  88. return
  89. }
  90. }
  91. /**
  92. * 设备判断
  93. */
  94. // const getDeviceType = function() {
  95. // if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS
  96. // return 'ios';
  97. // } else if (/(Android)/i.test(navigator.userAgent)) { //判断Android
  98. // return 'android';
  99. // } else { //pc
  100. // return 'pc';
  101. // }
  102. // }
  103. const consoleFormat = obj => {
  104. const key = Object.keys(obj)[0]
  105. }
  106. Vue.prototype.$get = get
  107. Vue.prototype.$post = post
  108. Vue.prototype.$request = request
  109. // let host = `https://dev.test.proginn.com`
  110. let host = `https://www.proginn.com`
  111. export default { get, post, request, host }