httpUtil.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import {Message} from 'element-ui';
  2. import fetch from './fetch'
  3. import storage from '@/framework/utils/storage'
  4. import store from '@/store/index'
  5. function successResponse(vm, response, success, failed) {
  6. let resp = response.data;
  7. let result = resp.result ? resp.result : resp.Result;
  8. if (result === 'success') {
  9. if (success) {
  10. success(resp);
  11. }
  12. } else {
  13. let msg = resp.message ? resp.message : resp.ResultMsg || resp.resultMsg || resp.Message;
  14. Message.error({ message: msg });
  15. if (failed) {
  16. failed(resp);
  17. }
  18. }
  19. }
  20. function errorResponse(vm, response, err) {
  21. let json = JSON.parse(JSON.stringify(response))
  22. if (json.message === '路由调整取消请求')
  23. return
  24. console.error(response)
  25. if (json.response) {
  26. Message.error({ message: `接口:${json.response.config.url}请求错误,错误状态为:${json.response.status}` })
  27. } else {
  28. console.error(vm, response, err)
  29. Message.error({ message: '请求错误' });
  30. }
  31. }
  32. function downFile(blob, fileName) {
  33. // 非IE下载
  34. if ('download' in document.createElement('a')) {
  35. let link = document.createElement('a')
  36. link.href = window.URL.createObjectURL(blob) // 创建下载的链接
  37. link.download = fileName // 下载后文件名
  38. link.style.display = 'none'
  39. document.body.appendChild(link)
  40. link.click() // 点击下载
  41. window.URL.revokeObjectURL(link.href) // 释放掉blob对象
  42. document.body.removeChild(link) // 下载完成移除元素
  43. } else {
  44. // IE10+下载
  45. window.navigator.msSaveBlob(blob, fileName)
  46. }
  47. }
  48. export default {
  49. getJson: function (url, data, success, failed, err) {
  50. let ProjectId = store.state.layout.projectId ? store.state.layout.projectId : localStorage.getItem("projectId");
  51. let userName = storage.get("user_name")
  52. let group_code = localStorage.getItem("group_code")
  53. let vm = this;
  54. fetch({
  55. url: url,
  56. method: 'get',
  57. params: data,
  58. headers: {'ProjectId': ProjectId, 'Comming': 'adm', 'Account': userName, 'group_code': group_code}
  59. }).then((response) => {
  60. successResponse(vm, response, success, failed)
  61. }).catch(error => {
  62. errorResponse(vm, error, err);
  63. });
  64. },
  65. postJson: function (url, data, success, failed, err) {
  66. let ProjectId = store.state.layout.projectId ? store.state.layout.projectId : localStorage.getItem("projectId");
  67. let userName = storage.get("user_name")
  68. let group_code = localStorage.getItem("group_code")
  69. let vm = this;
  70. fetch({
  71. url: url,
  72. method: 'post',
  73. data: data,
  74. headers: {'ProjectId': ProjectId, 'Comming': 'adm', 'Account': userName, 'group_code': group_code}
  75. }).then((response) => {
  76. successResponse(vm, response, success, failed)
  77. }).catch(error => {
  78. errorResponse(vm, error, err);
  79. });
  80. },
  81. download(url, requestData) {
  82. // 响应类型:arraybuffer, blob
  83. fetch
  84. .post(url, requestData, { responseType: 'blob' })
  85. .then(resp => {
  86. let headers = resp.headers
  87. let contentType = headers['content-type']
  88. console.log('响应头信息', headers)
  89. if (!resp.data) {
  90. console.error('响应异常:', resp)
  91. return false
  92. } else {
  93. console.log('下载文件:', resp)
  94. const blob = new Blob([resp.data], { type: contentType })
  95. const contentDisposition = resp.headers['content-disposition']
  96. let fileName = 'unknown'
  97. if (contentDisposition) {
  98. fileName = window.decodeURI(resp.headers['content-disposition'].split('=')[1])
  99. }
  100. console.log('文件名称:', fileName)
  101. downFile(blob, fileName)
  102. }
  103. })
  104. .catch(function (error) {
  105. console.log(error)
  106. })
  107. },
  108. }