http.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. import axios from 'axios'
  2. import qs from 'qs'
  3. const TIME_OUT_MS = 60 * 1000 // 默认请求超时时间
  4. /*
  5. * @param response 返回数据列表
  6. */
  7. function handleResults (response) {
  8. let remoteResponse = response.data;
  9. // var result = {
  10. // success: false,
  11. // message: '',
  12. // status: [],
  13. // errorCode: '',
  14. // data: {
  15. // total: 0,
  16. // results: []
  17. // }
  18. // }
  19. // if (remoteResponse.code == "ok") {
  20. // result.data.results = remoteResponse.data
  21. // result.data.total = remoteResponse.total
  22. // result.success = true
  23. // }
  24. // if (remoteResponse.code == "error") {
  25. // let status = remoteResponse.status
  26. // if (status === 400) {
  27. // console.log('传参错误')
  28. // }
  29. // result.errorCode = remoteResponse.errorCode
  30. // result.message = remoteResponse.message
  31. // }
  32. //return result
  33. return remoteResponse
  34. }
  35. function handleUrl (url) {
  36. url = BASE_URL + url
  37. return url
  38. }
  39. /*
  40. * @param data 参数列表
  41. * @return
  42. */
  43. function handleParams (data) {
  44. return data
  45. }
  46. export default {
  47. /*
  48. * @param url
  49. * @param data
  50. * @param response 请求成功时的回调函数
  51. * @param exception 异常的回调函数
  52. */
  53. post (url, data, response, exception) {
  54. var user = sessionStorage.getItem('user') , token = "";
  55. if(user != null){
  56. token = JSON.parse(user).headImgurl
  57. data.token = token
  58. }
  59. axios({
  60. method: 'post',
  61. url: handleUrl(url),
  62. data: handleParams(qs.stringify(data)),
  63. timeout: TIME_OUT_MS,
  64. headers: {
  65. //'Content-Type': 'application/json; charset=UTF-8'
  66. 'Content-type': ' application/x-www-form-urlencoded; charset=UTF-8',
  67. //'token': token
  68. }
  69. }).then(
  70. (result) => {
  71. response(handleResults(result))
  72. }
  73. ).catch(
  74. (error) => {
  75. if (exception) {
  76. exception(error)
  77. } else {
  78. console.log(error)
  79. }
  80. }
  81. )
  82. },
  83. /*
  84. * get 请求
  85. * @param url
  86. * @param response 请求成功时的回调函数
  87. * @param exception 异常的回调函数
  88. */
  89. get (url, response, exception) {
  90. var user = sessionStorage.getItem('user') , token = "";
  91. if(user != null){
  92. token = JSON.parse(user).headImgurl
  93. }
  94. axios({
  95. method: 'get',
  96. url: handleUrl(url),
  97. timeout: TIME_OUT_MS,
  98. headers: {
  99. 'Content-Type': 'application/json; charset=UTF-8'
  100. }
  101. }).then(
  102. (result) => {
  103. response(handleResults(result))
  104. }
  105. ).catch(
  106. (error) => {
  107. if (exception) {
  108. exception(error)
  109. } else {
  110. console.log(error)
  111. }
  112. }
  113. )
  114. },
  115. /*
  116. * 导入文件
  117. * @param url
  118. * @param data
  119. * @param response 请求成功时的回调函数
  120. * @param exception 异常的回调函数
  121. */
  122. uploadFile (url, data, response, exception) {
  123. var user = sessionStorage.getItem('user') , token = "";
  124. if(user != null){
  125. token = JSON.parse(user).headImgurl
  126. }
  127. axios({
  128. method: 'post',
  129. url: handleUrl(url),
  130. data: handleParams(data),
  131. dataType: 'json',
  132. processData: false,
  133. contentType: false
  134. }).then(
  135. (result) => {
  136. response(handleResults(result, data))
  137. }
  138. ).catch(
  139. (error) => {
  140. if (exception) {
  141. exception(error)
  142. } else {
  143. console.log(error)
  144. }
  145. }
  146. )
  147. },
  148. /*
  149. * 下载文件用,导出 Excel 表格可以用这个方法
  150. * @param url
  151. * @param param
  152. * @param fileName 如果是导出 Excel 表格文件名后缀最好用.xls 而不是.xlsx,否则文件可能会因为格式错误导致无法打开
  153. * @param exception 异常的回调函数
  154. */
  155. downloadFile (url, data, fileName, exception) {
  156. var user = sessionStorage.getItem('user') , token = "";
  157. if(user != null){
  158. token = JSON.parse(user).headImgurl
  159. }
  160. axios({
  161. method: 'post',
  162. url: handleUrl(url),
  163. data: handleParams(data),
  164. responseType: 'blob'
  165. }).then(
  166. (result) => {
  167. const excelBlob = result.data
  168. if ('msSaveOrOpenBlob' in navigator) {
  169. // Microsoft Edge and Microsoft Internet Explorer 10-11
  170. window.navigator.msSaveOrOpenBlob(excelBlob, fileName)
  171. } else {
  172. const elink = document.createElement('a')
  173. elink.download = fileName
  174. elink.style.display = 'none'
  175. const blob = new Blob([excelBlob])
  176. elink.href = URL.createObjectURL(blob)
  177. document.body.appendChild(elink)
  178. elink.click()
  179. document.body.removeChild(elink)
  180. }
  181. }
  182. ).catch(
  183. (error) => {
  184. if (exception) {
  185. exception(error)
  186. } else {
  187. console.log(error)
  188. }
  189. }
  190. )
  191. },
  192. uploadFileFormData (url, data, response, exception) {
  193. axios({
  194. method: 'post',
  195. url: handleUrl(url),
  196. data: data,
  197. timeout: TIME_OUT_MS,
  198. headers: {
  199. 'Content-Type': 'multipart/form-data'
  200. }
  201. }).then(
  202. (result) => {
  203. response(handleResults(result))
  204. }
  205. ).catch(
  206. (error) => {
  207. if (exception) {
  208. exception(error)
  209. } else {
  210. console.log(error)
  211. }
  212. }
  213. )
  214. }
  215. }