import { useState } from 'react'; import { Upload, Trash2, Clock, X } from 'lucide-react'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { parseExcelFile } from '@/lib/projectUtils'; import type { ProjectData } from '@/types/project'; interface AdminModalProps { open: boolean; onOpenChange: (open: boolean) => void; lastUpdated: string; onDataUpdate: (data: ProjectData[]) => void; onDataClear: () => void; } /** * Admin Modal for data management * Provides upload new file and clear data functionality */ export function AdminModal({ open, onOpenChange, lastUpdated, onDataUpdate, onDataClear, }: AdminModalProps) { const [isUploading, setIsUploading] = useState(false); const handleFileUpload = async (event: React.ChangeEvent) => { const file = event.target.files?.[0]; if (!file) return; setIsUploading(true); try { const projects = await parseExcelFile(file); onDataUpdate(projects); onOpenChange(false); } catch (error) { console.error('Failed to parse Excel file:', error); alert('文件解析失败,请检查文件格式是否正确'); } finally { setIsUploading(false); // Reset file input event.target.value = ''; } }; const handleClearData = () => { if (confirm('确定要清除所有数据吗?此操作不可恢复。')) { onDataClear(); onOpenChange(false); } }; return ( 数据管理 管理项目进度数据,上传新文件或清除现有数据
{/* Last Updated Info */}
最后更新: {lastUpdated}
{/* Upload New File Button */}

上传新文件将覆盖当前数据

{/* Clear Data Button */}
{/* Close Button */}
); }