"use client" import { useState } from "react" import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Switch } from "@/components/ui/switch" import { Trophy, Loader2 } from "lucide-react" import { toast } from "@/components/ui/use-toast" import type { Achievement } from "@/lib/api/types" type AddAchievementDialogProps = { onAchievementAdded: () => void } export function AddAchievementDialog({ onAchievementAdded }: AddAchievementDialogProps) { const [open, setOpen] = useState(false) const [loading, setLoading] = useState(false) const [formData, setFormData] = useState>({ name: "", description: "", category: "互动", requirement: "", rewardType: "经验值", rewardAmount: 100, isHidden: false, }) const handleChange = (field: keyof Achievement, value: any) => { setFormData((prev) => ({ ...prev, [field]: value })) } const handleSubmit = async () => { if (!formData.name || !formData.description || !formData.requirement) { toast({ title: "表单不完整", description: "请填写所有必填字段", variant: "destructive", }) return } setLoading(true) try { // 模拟API调用 await new Promise((resolve) => setTimeout(resolve, 1000)) toast({ title: "成就添加成功", description: `成就 "${formData.name}" 已成功添加到系统`, }) setOpen(false) setFormData({ name: "", description: "", category: "互动", requirement: "", rewardType: "经验值", rewardAmount: 100, isHidden: false, }) onAchievementAdded() } catch (error) { toast({ title: "添加失败", description: "添加成就时发生错误,请重试", variant: "destructive", }) } finally { setLoading(false) } } return ( 添加新成就 创建新的系统成就和解锁条件
handleChange("name", e.target.value)} placeholder="输入成就名称" />