import React from 'react'; import { Progress, Tag, Tooltip } from 'antd'; import { ClockCircleOutlined, SyncOutlined, CheckCircleOutlined, CloseCircleOutlined } from '@ant-design/icons'; import { ProcessingStatus } from '../api/types'; interface TaskProgressBarProps { status: ProcessingStatus; progress: number; error?: string; showLabel?: boolean; size?: 'small' | 'default'; className?: string; style?: React.CSSProperties; } const TaskProgressBar: React.FC = ({ status, progress, error, showLabel = true, size = 'default', className, style }) => { let statusColor = ''; let icon = null; let statusText = ''; let progressStatus: "success" | "exception" | "active" | "normal" | undefined; switch (status) { case ProcessingStatus.Pending: statusColor = 'orange'; progressStatus = 'normal'; icon = ; statusText = '等待中'; break; case ProcessingStatus.Processing: statusColor = 'processing'; progressStatus = 'active'; icon = ; statusText = '处理中'; break; case ProcessingStatus.Completed: statusColor = 'success'; progressStatus = 'success'; icon = ; statusText = '已完成'; break; case ProcessingStatus.Failed: statusColor = 'error'; progressStatus = 'exception'; icon = ; statusText = '失败'; break; } return (
{showLabel && (
{statusText} {status === ProcessingStatus.Failed && error && ( 查看错误 )}
)}
); }; export default TaskProgressBar;