Explorar el Código

feat(editor): 添加报告删除功能

- 报告项右侧添加删除按钮(悬停时显示)
- 点击删除弹出确认对话框
- 删除成功后刷新列表并清除选中状态
何文松 hace 3 semanas
padre
commit
27599746a7
Se han modificado 2 ficheros con 62 adiciones y 1 borrados
  1. 61 0
      frontend/vue-demo/src/views/Editor.vue
  2. 1 1
      frontend/vue-demo/vite.config.js

+ 61 - 0
frontend/vue-demo/src/views/Editor.vue

@@ -78,6 +78,14 @@
                   </span>
                 </div>
               </div>
+              <el-button
+                class="report-delete-btn"
+                :icon="Delete"
+                circle
+                size="small"
+                @click.stop="handleDeleteReport(report)"
+                title="删除报告"
+              />
             </div>
           </div>
           
@@ -973,6 +981,40 @@ function getReportStatusText(status) {
   return statusMap[status] || '草稿'
 }
 
+// 删除报告
+async function handleDeleteReport(report) {
+  try {
+    await ElMessageBox.confirm(
+      `确定要删除报告「${report.name}」吗?此操作不可恢复。`,
+      '删除确认',
+      {
+        confirmButtonText: '删除',
+        cancelButtonText: '取消',
+        type: 'warning',
+        confirmButtonClass: 'el-button--danger'
+      }
+    )
+    
+    await templateApi.delete(report.id)
+    ElMessage.success('报告已删除')
+    
+    // 如果删除的是当前选中的报告,清除选中状态
+    if (currentReportId.value === report.id) {
+      currentReportId.value = null
+      currentDocumentId.value = null
+      documentContent.value = ''
+    }
+    
+    // 刷新报告列表
+    await loadMyReports()
+  } catch (error) {
+    if (error !== 'cancel') {
+      console.error('删除报告失败:', error)
+      ElMessage.error('删除报告失败')
+    }
+  }
+}
+
 // 新建报告对话框
 const showNewReportDialog = ref(false)
 const newReportType = ref('blank')  // 'blank' | 'upload'
@@ -2892,6 +2934,7 @@ onUnmounted(() => {
       border-radius: var(--radius-md);
       cursor: pointer;
       transition: all 0.2s;
+      position: relative;
       
       &:hover {
         border-color: var(--primary);
@@ -2968,6 +3011,24 @@ onUnmounted(() => {
           }
         }
       }
+      
+      .report-delete-btn {
+        opacity: 0;
+        flex-shrink: 0;
+        transition: opacity 0.2s;
+        border: none;
+        background: transparent;
+        color: var(--text-3);
+        
+        &:hover {
+          color: var(--danger);
+          background: rgba(255, 77, 79, 0.1);
+        }
+      }
+      
+      &:hover .report-delete-btn {
+        opacity: 1;
+      }
     }
   }
   

+ 1 - 1
frontend/vue-demo/vite.config.js

@@ -7,7 +7,7 @@ import vue from '@vitejs/plugin-vue'
 // 
 // 修改下方 API_SERVER 变量即可切换
 
-const API_SERVER = process.env.API_SERVER || 'http://192.168.2.3:18520'
+const API_SERVER = process.env.API_SERVER || 'http://47.101.133.94:18520'
 
 export default defineConfig({
   plugins: [vue()],