http.js 6.7 KB

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