httpUtil.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. import {Message} from "element-ui";
  2. import fetch from "./fetch";
  3. import storage from "@/framework/utils/storage";
  4. import lStorage from '@/utils/localStorage';
  5. import store from "@/store/index";
  6. function successResponse(vm, response, success, failed) {
  7. let resp = response.data;
  8. let result = resp.result ? resp.result : resp.Result;
  9. if (result === "success") {
  10. if (success) {
  11. success(resp);
  12. }
  13. } else {
  14. let msg = resp.message
  15. ? resp.message
  16. : resp.ResultMsg || resp.resultMsg || resp.Message;
  17. Message.error({ message: msg });
  18. if (failed) {
  19. failed(resp);
  20. }
  21. }
  22. }
  23. function errorResponse(vm, response, err) {
  24. let json = JSON.parse(JSON.stringify(response));
  25. if (json.message === "路由调整取消请求") return;
  26. console.error(response);
  27. if (json.response) {
  28. Message.error({
  29. message: `接口:${json.response.config.url}请求错误,错误状态为:${json.response.status}`
  30. });
  31. } else {
  32. console.error(vm, response, err);
  33. Message.error({ message: "请求错误" });
  34. }
  35. }
  36. function downFile(blob, fileName, success) {
  37. // 非IE下载
  38. if ("download" in document.createElement("a")) {
  39. let link = document.createElement("a");
  40. link.href = window.URL.createObjectURL(blob); // 创建下载的链接
  41. link.download = fileName; // 下载后文件名
  42. link.style.display = "none";
  43. document.body.appendChild(link);
  44. link.click(); // 点击下载
  45. window.URL.revokeObjectURL(link.href); // 释放掉blob对象
  46. document.body.removeChild(link); // 下载完成移除元素
  47. success && success()
  48. } else {
  49. // IE10+下载
  50. window.navigator.msSaveBlob(blob, fileName);
  51. success && success()
  52. }
  53. }
  54. export default {
  55. getJson: function(url, data, success, failed, err) {
  56. let ssoToken = store.state.ssoToken
  57. ? store.state.ssoToken
  58. : lStorage.get("ssoToken");
  59. let ProjectId = store.state.layout.projectId
  60. ? store.state.layout.projectId
  61. : lStorage.get("projectId");
  62. let userName = store.state.layout.userInfo.userName
  63. ? store.state.layout.userInfo.userName
  64. : storage.get("user_name");
  65. let group_code = store.state.layout.group_code
  66. ? store.state.layout.group_code
  67. : lStorage.get("group_code");
  68. let vm = this;
  69. fetch({
  70. url: url,
  71. method: "get",
  72. params: data,
  73. headers: {
  74. projectId: ProjectId,
  75. token: ssoToken,
  76. appId: "adm",
  77. userId: userName,
  78. groupCode: group_code
  79. }
  80. })
  81. .then(response => {
  82. successResponse(vm, response, success, failed);
  83. })
  84. .catch(error => {
  85. errorResponse(vm, error, err);
  86. });
  87. },
  88. postJson: function (url, data, success, failed, err, isShowPid) {
  89. let ssoToken = store.state.ssoToken
  90. ? store.state.ssoToken
  91. : lStorage.get("ssoToken");
  92. let ProjectId = store.state.layout.projectId
  93. ? store.state.layout.projectId
  94. : lStorage.get("projectId");
  95. let userName = store.state.layout.userInfo.userName
  96. ? store.state.layout.userInfo.userName
  97. : storage.get("user_name");
  98. let group_code = store.state.layout.group_code
  99. ? store.state.layout.group_code
  100. : lStorage.get("group_code");
  101. let vm = this;
  102. let params = {
  103. url: url,
  104. method: "post",
  105. data: data,
  106. headers: {
  107. // projectId: ProjectId,
  108. token: ssoToken,
  109. appId: "adm",
  110. userId: userName,
  111. groupCode: group_code
  112. }
  113. }
  114. let params1 = {
  115. url: url,
  116. method: "post",
  117. data: data,
  118. headers: {
  119. projectId: ProjectId,
  120. token: ssoToken,
  121. appId: "adm",
  122. userId: userName,
  123. groupCode: group_code
  124. }
  125. }
  126. fetch(isShowPid ? {...params} : { ...params1})
  127. .then(response => {
  128. successResponse(vm, response, success, failed);
  129. })
  130. .catch(error => {
  131. errorResponse(vm, error, err);
  132. });
  133. },
  134. getDownload(url, requestData, success, name) {
  135. // 响应类型:arraybuffer, blob
  136. fetch
  137. .get(url, { params: requestData, responseType: "blob" })
  138. .then(resp => {
  139. const headers = resp.headers;
  140. const contentType = headers["content-type"];
  141. console.log("响应头信息", headers);
  142. if (!resp.data) {
  143. console.error("响应异常:", resp);
  144. return false;
  145. } else {
  146. console.log("下载文件:", resp);
  147. const blob = new Blob([resp.data], { type: contentType });
  148. const contentDisposition = resp.headers["content-disposition"];
  149. let fileName = "unknown";
  150. if (name) {
  151. fileName = name
  152. } else if (contentDisposition) {
  153. fileName = window.decodeURI(
  154. resp.headers["content-disposition"].split("=")[1]
  155. );
  156. }
  157. console.log("文件名称:", fileName);
  158. downFile(blob, fileName);
  159. success();
  160. }
  161. })
  162. .catch(function(error) {
  163. console.log(error);
  164. });
  165. },
  166. download(url, requestData, success) {
  167. // 响应类型:arraybuffer, blob
  168. fetch
  169. .post(url, requestData, { responseType: "blob" })
  170. .then(resp => {
  171. let headers = resp.headers;
  172. let contentType = headers["content-type"];
  173. console.log("响应头信息", headers);
  174. if (!resp.data) {
  175. console.error("响应异常:", resp);
  176. return false;
  177. } else {
  178. console.log("下载文件:", resp);
  179. const blob = new Blob([resp.data], { type: contentType });
  180. console.log({blob})
  181. const contentDisposition = resp.headers["content-disposition"];
  182. let fileName = "unknown";
  183. if (contentDisposition) {
  184. fileName = window.decodeURI(
  185. resp.headers["content-disposition"].split("=")[1]
  186. );
  187. }
  188. console.log("文件名称:", fileName);
  189. downFile(blob, fileName, success);
  190. }
  191. })
  192. .catch(function(error) {
  193. console.log(error);
  194. });
  195. }
  196. };