http.js 5.5 KB

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