networkfile.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <div>
  3. <!-- 历史文件列表 -->
  4. <el-card class="history-section">
  5. <h3>历史上传记录</h3>
  6. <el-table :data="fileHistory" style="width: 100%">
  7. <el-table-column prop="mission.name" label="分析任务" width="260"/>
  8. <el-table-column prop="mission.id" label="任务ID" width="260"/>
  9. <el-table-column label="" width="40">
  10. <template #default="scope">
  11. <el-button v-if="scope.row.content == 'node'" type="primary"
  12. style="width: 20px; height:20px; padding: 2px;">N</el-button>
  13. <el-button v-if="scope.row.content == 'edge'" type="warning"
  14. style="width: 20px; height:20px; padding: 2px;">E</el-button>
  15. </template>
  16. </el-table-column>
  17. <el-table-column prop="fileName" label="文件名" width="280" />
  18. <el-table-column prop="uploadTime" label="上传时间" width="280" />
  19. <el-table-column prop="fileSize" label="文件大小" width="280">
  20. </el-table-column>
  21. <el-table-column label="文件信息" width="280">
  22. <template #default="{ row }">
  23. <el-dropdown>
  24. <span v-if="row.content === 'node'" class="analysis-records">
  25. {{ '节点总数:' + row.fileInfo.节点总数 }}<el-icon><arrow-down /></el-icon>
  26. </span>
  27. <span v-else class="analysis-records">
  28. {{ '边总数:' + row.fileInfo.边总数 }}<el-icon><arrow-down /></el-icon>
  29. </span>
  30. <template #dropdown>
  31. <el-dropdown-menu>
  32. <el-dropdown-item v-for="(value, key) in row.fileInfo" :key="key">
  33. {{ key }} - {{ value }}
  34. </el-dropdown-item>
  35. </el-dropdown-menu>
  36. </template>
  37. </el-dropdown>
  38. </template>
  39. </el-table-column>
  40. <el-table-column label="操作" width="120">
  41. <template #default="{ row }">
  42. <el-button type="danger" size="small" @click="handleDeleteFile(row)" plain>
  43. 删除
  44. </el-button>
  45. </template>
  46. </el-table-column>
  47. </el-table>
  48. </el-card>
  49. </div>
  50. </template>
  51. <script setup>
  52. import { ref, computed, onMounted, inject } from 'vue'
  53. import { useRouter } from 'vue-router'
  54. import { ElMessage, ElMessageBox } from 'element-plus'
  55. import { Upload, ArrowDown, Plus } from '@element-plus/icons-vue'
  56. import { getData, postData, deleteData, postFile } from '@/api/axios.js'
  57. const fileHistory = ref([])
  58. const handleDeleteFile = (file) => {
  59. ElMessageBox.confirm(
  60. `确定要删除文件 ${file.fileName} 吗?此操作不可恢复。`,
  61. '警告',
  62. {
  63. confirmButtonText: '确定',
  64. cancelButtonText: '取消',
  65. type: 'warning'
  66. }
  67. ).then(() => {
  68. deleteData('/uploadfile/', { id: file.id }).then(response => {
  69. if (response.status == 'success') {
  70. ElMessage.success('文件已删除')
  71. updateUploadHistory()
  72. } else {
  73. ElMessage.error('文件删除失败' + response.message)
  74. }
  75. })
  76. .catch(error => {
  77. ElMessage.error('文件删除失败');
  78. console.log(error)
  79. })
  80. }).catch(() => { })
  81. }
  82. const updateUploadHistory = () => {
  83. getData('/uploadfile/')
  84. .then(response => {
  85. fileHistory.value = []
  86. response.data.reverse().forEach(item => {
  87. fileHistory.value.push({
  88. id: item.id,
  89. content: item.content,
  90. fileName: item.name,
  91. uploadTime: item.uploadTime.split('.')[0].replace('T', ' '),
  92. fileSize: item.size,
  93. // 按照目前逻辑,每个文件的关联mission应该只有一个
  94. mission: item.missions[0],
  95. fileInfo: item.fileInfo,
  96. })
  97. })
  98. // history.forEach(element => {
  99. // console.log(element.uploadTime.replace('T', ' ').aplit('.')[0])
  100. // });
  101. console.log(fileHistory.value)
  102. })
  103. .catch(error => {
  104. ElMessage.error('获取上传历史失败')
  105. console.log(error)
  106. })
  107. }
  108. onMounted(() => {
  109. updateUploadHistory();
  110. })
  111. </script>
  112. <style lang="scss" scoped>
  113. .history-section {
  114. h3 {
  115. margin-bottom: 15px;
  116. color: var(--el-text-color-primary);
  117. }
  118. .analysis-records {
  119. cursor: pointer;
  120. color: var(--el-color-primary);
  121. display: flex;
  122. align-items: center;
  123. gap: 5px;
  124. }
  125. }
  126. </style>