|
@@ -78,6 +78,14 @@
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ class="report-delete-btn"
|
|
|
|
|
+ :icon="Delete"
|
|
|
|
|
+ circle
|
|
|
|
|
+ size="small"
|
|
|
|
|
+ @click.stop="handleDeleteReport(report)"
|
|
|
|
|
+ title="删除报告"
|
|
|
|
|
+ />
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -973,6 +981,40 @@ function getReportStatusText(status) {
|
|
|
return statusMap[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 showNewReportDialog = ref(false)
|
|
|
const newReportType = ref('blank') // 'blank' | 'upload'
|
|
const newReportType = ref('blank') // 'blank' | 'upload'
|
|
@@ -2892,6 +2934,7 @@ onUnmounted(() => {
|
|
|
border-radius: var(--radius-md);
|
|
border-radius: var(--radius-md);
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
transition: all 0.2s;
|
|
transition: all 0.2s;
|
|
|
|
|
+ position: relative;
|
|
|
|
|
|
|
|
&:hover {
|
|
&:hover {
|
|
|
border-color: var(--primary);
|
|
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;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|