http.js 5.8 KB

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