'use client'; import { Grid, Paper, Button, Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Typography } from '@mui/material'; import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; import { useTranslation } from 'react-i18next'; import { useState } from 'react'; import ProjectCard from './ProjectCard'; export default function ProjectList({ projects, onCreateProject }) { const { t } = useTranslation(); const [deleteDialogOpen, setDeleteDialogOpen] = useState(false); const [projectToDelete, setProjectToDelete] = useState(null); const [loading, setLoading] = useState(false); // 打开删除确认对话框 const handleOpenDeleteDialog = (event, project) => { setProjectToDelete(project); setDeleteDialogOpen(true); }; // 关闭删除确认对话框 const handleCloseDeleteDialog = () => { setDeleteDialogOpen(false); setProjectToDelete(null); }; // 删除项目 const handleDeleteProject = async () => { if (!projectToDelete) return; try { setLoading(true); const response = await fetch(`/api/projects/${projectToDelete.id}`, { method: 'DELETE' }); if (!response.ok) { const errorData = await response.json(); throw new Error(errorData.error || t('projects.deleteFailed')); } // 刷新页面以更新项目列表 window.location.reload(); } catch (error) { console.error('删除项目失败:', error); alert(error.message || t('projects.deleteFailed')); } finally { setLoading(false); handleCloseDeleteDialog(); } }; return ( <> {projects.length === 0 ? ( {t('projects.noProjects')} ) : ( projects.map(project => ( )) )} {/* 删除确认对话框 */} {t('projects.deleteConfirmTitle')} {projectToDelete && ( <> {t('projects.deleteConfirm')}
{projectToDelete.name} )}
); }