import { Card } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Badge } from '@/components/ui/badge'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'; import { Send, Clock, Users, Eye, Trash2, CheckCircle2, XCircle, Timer } from 'lucide-react'; import { format } from 'date-fns'; import { zhCN } from 'date-fns/locale'; import { MessageSendRecord } from '@/types/message'; interface MessageSendTableProps { sendRecords: MessageSendRecord[]; onPreview: (record: MessageSendRecord) => void; onCancel: (id: string) => void; onDelete: (id: string) => void; getTypeIcon: (type: string) => JSX.Element; getTypeLabel: (type: string) => string; getTypeBadge: (type: string) => string; getStatusBadge: (status: string) => JSX.Element; } export function MessageSendTable({ sendRecords, onPreview, onCancel, onDelete, getTypeIcon, getTypeLabel, getTypeBadge, getStatusBadge }: MessageSendTableProps) { return ( 消息模版 类型 接收人数 发送方式 状态 创建时间 操作 {sendRecords.length === 0 ? ( 暂无发送记录 ) : ( sendRecords.map((record) => (
{record.templateName}
{record.subject && (

{record.subject}

)}
{getTypeIcon(record.type)} {getTypeLabel(record.type)}
{record.recipientCount}
{record.sendType === 'immediate' ? ( 实时发送 ) : (
定时发送 {record.scheduledTime && (

{format(new Date(record.scheduledTime), 'MM-dd HH:mm', { locale: zhCN })}

)}
)}
{getStatusBadge(record.status)} {record.status === 'sent' && (

成功 {record.sentCount}/{record.recipientCount}

)}
{format(new Date(record.createdAt), 'MM-dd HH:mm', { locale: zhCN })}
{record.status === 'pending' && ( )} {(record.status === 'sent' || record.status === 'cancelled') && ( )}
)) )}
); }