http.js 5.8 KB

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