httpUtil.js 3.6 KB

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