import { useNavigate } from "@remix-run/react"; import { useState } from "react"; interface FileInfoProps { fileInfo: { fileName: string; contractNumber: string; fileSize?: string; fileFormat?: string; pageCount?: number; uploadTime?: string; uploadUser?: string; auditStatus?: number; path?: string; previousRoute?: string; }; onConfirmResults: () => void; } export function FileInfo({ fileInfo, onConfirmResults }: FileInfoProps) { const navigate = useNavigate(); const [isNavigating, setIsNavigating] = useState(false); const handleDownloadFile = async () => { try { const urlBefore = 'http://172.18.0.100:9000/docauditai/'; const downloadUrl = `${urlBefore}${fileInfo.path}`; // 使用fetch获取文件内容 const response = await fetch(downloadUrl); if (!response.ok) { throw new Error(`下载失败: ${response.status} ${response.statusText}`); } // 将响应转换为Blob const blob = await response.blob(); // 创建Blob URL const blobUrl = URL.createObjectURL(blob); // 创建一个隐藏的a标签并点击它 const a = document.createElement('a'); a.style.display = 'none'; a.href = blobUrl; // 从路径中获取文件名 const fileName = fileInfo.path?.split('/').pop() || 'document'; a.download = decodeURIComponent(fileName); document.body.appendChild(a); a.click(); // 清理 setTimeout(() => { document.body.removeChild(a); URL.revokeObjectURL(blobUrl); }, 100); } catch (error) { console.error('下载文件失败:', error); alert(`下载文件失败: ${error instanceof Error ? error.message : '未知错误'}`); } }; const handleBack = () => { // 防抖处理 - 如果已经在导航中,不重复触发 if (isNavigating) return; // 设置导航状态为true setIsNavigating(true); // 根据来源页面返回 const previousRoute = fileInfo.previousRoute || 'documents'; const returnTo = previousRoute === 'documents' ? "/documents" : previousRoute === 'filesUpload' ? "/files/upload" : "/rules-files"; // 立即导航返回 navigate(returnTo); }; const handleExportReport = () => { alert('导出评查报告功能'); }; return (

{fileInfo.fileName}

合同编号:{fileInfo.contractNumber} {fileInfo.fileSize && ( | {fileInfo.fileSize} | {fileInfo.fileFormat} | {fileInfo.pageCount}页 )} {fileInfo.uploadTime && (
上传时间:{fileInfo.uploadTime} | 上传用户:{fileInfo.uploadUser}
)}
{/* 返回上一级 */} {/* */}
); }