http.js 5.6 KB

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