'use client' import type { BatchUploadStatus, BatchFileItem } from './upload-types' import { formatTransferProgress } from './upload-utils' interface UploadProgressProps { uploading: boolean isBatchMode: boolean batchUploadStatus: BatchUploadStatus | null batchFiles?: BatchFileItem[] // 用于计算实际文件大小 uploadProgress: number uploadSpeed: number uploadTotalBytes?: number isProcessing: boolean onCancel: () => void } export default function UploadProgress({ uploading, isBatchMode, batchUploadStatus, batchFiles, uploadProgress, uploadSpeed, uploadTotalBytes, isProcessing, onCancel, }: UploadProgressProps) { if (!uploading) return null if (isBatchMode && batchUploadStatus) { const { currentFileIndex, totalFiles, currentFileName, currentFileProgress, currentFileSpeed, fileStatuses } = batchUploadStatus const completedFiles = fileStatuses.filter(s => s.status === 'done').length const failedFiles = fileStatuses.filter(s => s.status === 'failed').length const processingFiles = fileStatuses.filter(s => s.status === 'uploading' || s.status === 'processing' || s.status === 'pending') const currentBatchFile = batchFiles?.find(bf => bf.file.name === currentFileName) const currentFileTotalBytes = currentBatchFile?.file.size || 0 const currentFileLoadedBytes = currentFileTotalBytes * (currentFileProgress / 100) // 只显示正在处理/等待中的文件,已完成的文件不显示(避免队列过长) const visibleFileStatuses = fileStatuses.filter(s => s.status !== 'done') return (