/** * 交叉评查文件信息组件 */ // 导入统一的下载方法和提示服务 import { downloadFile } from '~/api/axios-client'; import { toastService } from '~/components/ui/Toast'; interface FileInfoProps { fileInfo: { fileName: string; contractNumber: string; fileSize?: string; fileFormat?: string; pageCount?: number; uploadTime?: string; uploadUser?: string; auditStatus?: number; path?: string; previousRoute?: string; fileType?: string; }; onConfirmResults: () => void; } export function FileInfo({ fileInfo, onConfirmResults }: FileInfoProps) { // 使用统一的下载方法(与 rules-files.tsx 相同) const handleDownloadFile = async () => { if (!fileInfo.path) { toastService.error('文件路径不存在,无法下载'); return; } try { // 使用axios封装的下载方法 const blob = await downloadFile(fileInfo.path); // 创建Blob URL const blobUrl = URL.createObjectURL(blob); // 创建一个隐藏的a标签并点击它 const a = document.createElement('a'); a.style.display = 'none'; a.href = blobUrl; a.download = fileInfo.fileName || 'document'; document.body.appendChild(a); a.click(); // 清理 setTimeout(() => { document.body.removeChild(a); URL.revokeObjectURL(blobUrl); }, 100); } catch (error) { console.error('下载文件失败:', error); toastService.error(`下载文件失败: ${error instanceof Error ? error.message : '未知错误'}`); } }; const handleExportReport = () => { alert('导出交叉评查报告功能'); }; return (
{/* 文件基本信息已在面包屑区域显示,这里可以不重复显示 */}
{/* 操作按钮区域 */}
{/* 下载文件按钮 */} {/* 导出评查报告按钮 */} {/* 确认评查结果按钮 - 只在未审核通过时显示 */} {fileInfo.auditStatus !== 1 && ( )} {/* 已确认状态显示 */} {fileInfo.auditStatus === 1 && ( 评查结果已确认 )}
); }