'use client'; import { useState } from 'react'; import { useParams, useRouter } from 'next/navigation'; import { Container, Typography, Box, Paper, Button, Grid, CircularProgress, Alert, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, TablePagination } from '@mui/material'; import AddIcon from '@mui/icons-material/Add'; import RefreshIcon from '@mui/icons-material/Refresh'; import AssessmentIcon from '@mui/icons-material/Assessment'; import { useTranslation } from 'react-i18next'; import useEvalTasks from './hooks/useEvalTasks'; import CreateEvalTaskDialog from './components/CreateEvalTaskDialog'; import EvalTaskCard from './components/EvalTaskCard'; import styles from './styles'; export default function EvalTasksPage() { const { projectId } = useParams(); const router = useRouter(); const { t } = useTranslation(); const { tasks, loading, error, setError, loadTasks, deleteTask, interruptTask, page, setPage, pageSize, setPageSize, total } = useEvalTasks(projectId); const [createDialogOpen, setCreateDialogOpen] = useState(false); const [deleteDialog, setDeleteDialog] = useState({ open: false, task: null }); const [interruptDialog, setInterruptDialog] = useState({ open: false, task: null }); const handleView = task => router.push(`/projects/${projectId}/eval-tasks/${task.id}`); const handleDelete = task => setDeleteDialog({ open: true, task }); const handleInterrupt = task => setInterruptDialog({ open: true, task }); const handlePageChange = (event, newPage) => { setPage(newPage + 1); }; const handlePageSizeChange = event => { setPageSize(parseInt(event.target.value, 10)); setPage(1); }; const confirmDelete = async () => { if (deleteDialog.task) { await deleteTask(deleteDialog.task.id); } setDeleteDialog({ open: false, task: null }); }; const confirmInterrupt = async () => { if (interruptDialog.task) { await interruptTask(interruptDialog.task.id); } setInterruptDialog({ open: false, task: null }); }; return ( {/* 标题栏 */} {t('evalTasks.title')} {/* 错误提示 */} {error && ( setError('')}> {error} )} {/* 加载状态 */} {loading && tasks.length === 0 && ( )} {/* 空状态 */} {!loading && tasks.length === 0 && ( {t('evalTasks.noTasks')} {t('evalTasks.noTasksHint')} )} {/* 任务列表 */} {tasks.length > 0 && ( <> {tasks.map(task => ( ))} )} {/* 创建任务对话框 */} setCreateDialogOpen(false)} projectId={projectId} onSuccess={loadTasks} /> {/* 删除确认对话框 */} setDeleteDialog({ open: false, task: null })}> {t('evalTasks.deleteConfirmTitle')} {t('evalTasks.deleteConfirmMessage')} {/* 中断确认对话框 */} setInterruptDialog({ open: false, task: null })}> {t('evalTasks.interruptConfirmTitle')} {t('evalTasks.interruptConfirmMessage')} ); }