http.js 5.4 KB

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