"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 { Plus, Loader2 } from "lucide-react" import { createSongBatch } from "@/lib/api/songs" import { useToast } from "@/components/ui/use-toast" interface AddPrintBatchDialogProps { songId: string isPublished: boolean onBatchCreated?: () => Promise } export function AddPrintBatchDialog({ songId, isPublished, onBatchCreated }: AddPrintBatchDialogProps) { const [open, setOpen] = useState(false) const [quantity, setQuantity] = useState(1000) const [isSubmitting, setIsSubmitting] = useState(false) const { toast } = useToast() const handleSubmit = async () => { setIsSubmitting(true) try { const response = await createSongBatch({ template: Number(songId), quantity: quantity }) toast({ title: "批次创建成功", description: `已成功创建包含 ${quantity} 个卡片的新批次`, }) // 关闭对话框 setOpen(false) // 调用回调函数刷新批次列表 if (onBatchCreated) { await onBatchCreated() } } catch (error) { console.error("创建批次失败:", error) toast({ title: "创建批次失败", description: error instanceof Error ? error.message : "无法创建批次,请稍后重试", variant: "destructive", }) } finally { setIsSubmitting(false) } } return ( 添加新印刷批次 为歌曲 {songId} 添加新的卡牌印刷批次。系统将自动生成唯一的卡牌ID。
setQuantity(Number.parseInt(e.target.value))} className="border-gray-300 focus-visible:ring-purple-500" />

将生成 {quantity} 个新的卡牌ID

批次ID:{" "} 系统自动生成

起始ID: 系统自动生成

结束ID: 系统自动生成

实际ID将在创建批次时生成

) }