'use client'; import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Checkbox, IconButton, Chip, Typography, Tooltip, Box } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; import EditIcon from '@mui/icons-material/Edit'; import VisibilityIcon from '@mui/icons-material/Visibility'; import { useTranslation } from 'react-i18next'; export default function EvalDatasetList({ items, selectedIds, onSelect, onSelectAll, onEdit, onDelete, onView }) { const { t } = useTranslation(); const isAllSelected = items.length > 0 && selectedIds.length === items.length; const isIndeterminate = selectedIds.length > 0 && selectedIds.length < items.length; // 题型颜色映射 const getTypeColor = type => { const colors = { true_false: 'success', single_choice: 'primary', multiple_choice: 'secondary', short_answer: 'warning', open_ended: 'info' }; return colors[type] || 'default'; }; // 格式化答案显示 const formatAnswer = item => { const { questionType, correctAnswer, options } = item; if (questionType === 'true_false') { return correctAnswer; } if (questionType === 'single_choice' || questionType === 'multiple_choice') { return correctAnswer; } // 非选择题,截断显示 if (correctAnswer && correctAnswer.length > 50) { return correctAnswer.substring(0, 50) + '...'; } return correctAnswer || '-'; }; return ( {t('eval.questionType')} {t('eval.question')} {t('eval.answer')} {t('eval.sourceChunk')} {t('common.actions')} {items.map(item => ( onSelect(item.id)} /> {item.question} {formatAnswer(item)} {item.chunks ? ( ) : ( - )} onView(item)}> onDelete(item.id)}> ))} {items.length === 0 && ( {t('common.noData')} )}
); }