"use client" import * as React from "react" import { useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" import { z } from "zod" import { toast } from "sonner" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Button } from "@/components/ui/button" import { Textarea } from "@/components/ui/textarea" import { updateSafetyQualification } from "../service" const formSchema = z.object({ safetyQualificationContent: z.string().min(1, "안전적격성 평가 내용을 입력해주세요."), }) interface SafetyQualificationUpdateDialogProps { open: boolean onOpenChange: (open: boolean) => void registrationId?: number vendorName?: string currentContent?: string | null onSuccess?: () => void } export function SafetyQualificationUpdateDialog({ open, onOpenChange, registrationId, vendorName, currentContent, onSuccess, }: SafetyQualificationUpdateDialogProps) { const [isLoading, setIsLoading] = React.useState(false) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { safetyQualificationContent: currentContent || "", }, }) // 폼 값 초기화 React.useEffect(() => { if (open) { form.reset({ safetyQualificationContent: currentContent || "", }) } }, [open, currentContent, form]) async function onSubmit(values: z.infer) { if (!registrationId) { toast.error("등록 ID가 없습니다.") return } setIsLoading(true) try { const result = await updateSafetyQualification( registrationId, values.safetyQualificationContent ) if (result.success) { toast.success("안전적격성 평가가 등록되었습니다.") onOpenChange(false) onSuccess?.() } else { toast.error(result.error || "안전적격성 평가 등록에 실패했습니다.") } } catch (error) { console.error("안전적격성 평가 등록 오류:", error) toast.error("안전적격성 평가 등록 중 오류가 발생했습니다.") } finally { setIsLoading(false) } } return ( 안전적격성 평가 입력 {vendorName && `${vendorName}의 `}안전적격성 평가 내용을 입력해주세요.
( 안전적격성 평가 내용