http.js 5.5 KB

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