"use client"; import { toast } from "sonner"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Button } from "@/components/ui/button"; import { Difficulty } from "@/generated/client"; import React, { useState, useEffect } from "react"; import { getProblemData } from "@/app/actions/getProblem"; import { Card, CardContent, CardHeader } from "@/components/ui/card"; import { PanelLayout } from "@/features/problems/layouts/panel-layout"; import { updateProblemDetail } from "@/components/creater/problem-maintain"; export default function EditDetailPanel({ problemId }: { problemId: string }) { const [problemDetails, setProblemDetails] = useState({ displayId: 1000, difficulty: "EASY" as Difficulty, timeLimit: 1000, memoryLimit: 134217728, isPublished: false, }); useEffect(() => { async function fetchData() { try { const problemData = await getProblemData(problemId); setProblemDetails({ displayId: problemData.displayId, difficulty: problemData.difficulty, timeLimit: problemData.timeLimit, memoryLimit: problemData.memoryLimit, isPublished: problemData.isPublished, }); } catch (error) { console.error("获取题目信息失败:", error); toast.error("加载详情失败"); } } fetchData(); }, [problemId]); const handleNumberInputChange = ( e: React.ChangeEvent, field: keyof typeof problemDetails ) => { const value = parseInt(e.target.value, 10); if (!isNaN(value)) { setProblemDetails({ ...problemDetails, [field]: value, }); } }; const handleDifficultyChange = (e: React.ChangeEvent) => { const value = e.target.value as Difficulty; setProblemDetails({ ...problemDetails, difficulty: value }); }; const handleSave = async () => { try { const res = await updateProblemDetail(problemId, { displayId: problemDetails.displayId, difficulty: problemDetails.difficulty, timeLimit: problemDetails.timeLimit, memoryLimit: problemDetails.memoryLimit, isPublished: problemDetails.isPublished, }); if (res.success) { toast.success("保存成功"); } else { toast.error("保存失败"); } } catch (err) { console.error("保存异常:", err); toast.error("保存异常"); } }; return (
题目详情
handleNumberInputChange(e, "displayId")} placeholder="输入显示ID" />
handleNumberInputChange(e, "timeLimit")} placeholder="输入时间限制" />
handleNumberInputChange(e, "memoryLimit")} placeholder="输入内存限制" />
setProblemDetails({ ...problemDetails, isPublished: e.target.checked, }) } className="w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 focus:ring-2" />
); }