ArchivalRecord.vue 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <template>
  2. <Loading v-if="loading" />
  3. </template>
  4. <script setup>
  5. import { ref, onMounted } from 'vue';
  6. import { useRouter } from 'vue-router';
  7. import Common from '../common/Common.js';
  8. import UserStorageResource from '../api/base/UserStorageResource.js';
  9. import { message } from 'ant-design-vue';
  10. const router = useRouter();
  11. const loading = ref(false);
  12. onMounted(() => {
  13. const uuid = router.currentRoute.value.query.uuid;
  14. UserStorageResource.uniqueByKey(uuid).then(
  15. success => {
  16. if (success.errorCode == 0) {
  17. if (success.data) {
  18. const allData = JSON.parse(success.data);
  19. downloadRecord(allData[0].id);
  20. } else {
  21. message.warning('请选择一条归档记录');
  22. }
  23. } else {
  24. message.warning(success.errorMessage);
  25. }
  26. },
  27. error => {
  28. Common.processException(error);
  29. },
  30. router.back(),
  31. );
  32. });
  33. const downloadRecord = recordId => {
  34. loading.value = true;
  35. const xhr = new XMLHttpRequest();
  36. xhr.open(
  37. 'get',
  38. `api/ArchivesResource/download?archiveLogId=${recordId}`,
  39. true,
  40. );
  41. const token = localStorage.getItem('#token');
  42. xhr.setRequestHeader('token', token);
  43. xhr.setRequestHeader('Content-type', 'application/json');
  44. xhr.responseType = 'blob';
  45. xhr.onreadystatechange = function () {
  46. if (xhr.readyState === 4 && xhr.status === 200) {
  47. loading.value = false;
  48. let res = xhr.response;
  49. let blob = new Blob([res]);
  50. const blobUrl = URL.createObjectURL(blob);
  51. const link = document.createElement('a');
  52. link.download = '可视数据.zip';
  53. link.style.display = 'none';
  54. link.href = blobUrl;
  55. document.body.appendChild(link);
  56. link.click();
  57. URL.revokeObjectURL(blobUrl);
  58. document.body.removeChild(link);
  59. message.success('下载成功');
  60. } else {
  61. loading.value = false;
  62. }
  63. };
  64. xhr.send();
  65. };
  66. </script>
  67. <style scoped>
  68. </style>