httpUtil.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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 vm = this;
  51. fetch({
  52. url: url,
  53. method: 'get',
  54. params: data,
  55. headers: { 'ProjectId': ProjectId, 'Comming': 'adm', 'Account': userName }
  56. }).then((response) => {
  57. successResponse(vm, response, success, failed)
  58. }).catch(error => {
  59. errorResponse(vm, error, err);
  60. });
  61. },
  62. postJson: function (url, data, success, failed, err) {
  63. let ProjectId = localStorage.getItem("projectId")
  64. // let ProjectId = "Pj1101050029"
  65. let userName = storage.get("user_name")
  66. let vm = this;
  67. fetch({
  68. url: url,
  69. method: 'post',
  70. data: data,
  71. headers: { 'ProjectId': ProjectId, 'Comming': 'adm', 'Account': userName }
  72. }).then((response) => {
  73. successResponse(vm, response, success, failed)
  74. }).catch(error => {
  75. errorResponse(vm, error, err);
  76. });
  77. },
  78. download(url, requestData) {
  79. // 响应类型:arraybuffer, blob
  80. fetch
  81. .post(url, requestData, { responseType: 'blob' })
  82. .then(resp => {
  83. let headers = resp.headers
  84. let contentType = headers['content-type']
  85. console.log('响应头信息', headers)
  86. if (!resp.data) {
  87. console.error('响应异常:', resp)
  88. return false
  89. } else {
  90. console.log('下载文件:', resp)
  91. const blob = new Blob([resp.data], { type: contentType })
  92. const contentDisposition = resp.headers['content-disposition']
  93. let fileName = 'unknown'
  94. if (contentDisposition) {
  95. fileName = window.decodeURI(resp.headers['content-disposition'].split('=')[1])
  96. }
  97. console.log('文件名称:', fileName)
  98. downFile(blob, fileName)
  99. }
  100. })
  101. .catch(function (error) {
  102. console.log(error)
  103. })
  104. },
  105. }