"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, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Calendar as CalendarComponent } from "@/components/ui/calendar" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" import { Calendar, Edit, Loader2 } from "lucide-react" import { format } from "date-fns" import { ko } from "date-fns/locale" import { cn } from "@/lib/utils" import { EnhancedDocumentsView } from "@/db/schema/vendorDocu" // 단순화된 문서 편집 스키마 const documentEditSchema = z.object({ docNumber: z.string().min(1, "문서번호는 필수입니다"), title: z.string().min(1, "제목은 필수입니다"), pic: z.string().optional(), status: z.string().min(1, "상태는 필수입니다"), issuedDate: z.date().optional(), description: z.string().optional(), }) type DocumentEditSchema = z.infer const statusOptions = [ { value: "ACTIVE", label: "활성" }, { value: "INACTIVE", label: "비활성" }, { value: "COMPLETED", label: "완료" }, { value: "CANCELLED", label: "취소" }, ] interface SimplifiedDocumentEditDialogProps { open: boolean onOpenChange: (open: boolean) => void document: EnhancedDocumentsView | null projectType: "ship" | "plant" } export function SimplifiedDocumentEditDialog({ open, onOpenChange, document, projectType, }: SimplifiedDocumentEditDialogProps) { const [isUpdating, setIsUpdating] = React.useState(false) const form = useForm({ resolver: zodResolver(documentEditSchema), defaultValues: { docNumber: "", title: "", pic: "", status: "ACTIVE", issuedDate: undefined, description: "", }, }) // 폼 초기화 React.useEffect(() => { if (document) { form.reset({ docNumber: document.docNumber, title: document.title, pic: document.pic || "", status: document.status, issuedDate: document.issuedDate ? new Date(document.issuedDate) : undefined, description: "", }) } }, [document, form]) async function onSubmit(data: DocumentEditSchema) { if (!document) return setIsUpdating(true) try { // 실제 업데이트 API 호출 (구현 필요) // await updateDocumentInfo({ documentId: document.documentId, ...data }) toast.success("문서 정보가 업데이트되었습니다") onOpenChange(false) } catch (error) { toast.error("업데이트 중 오류가 발생했습니다") console.error(error) } finally { setIsUpdating(false) } } return ( 문서 정보 수정 {document ? `${document.docNumber}의 기본 정보를 수정합니다.` : "문서 기본 정보를 수정합니다."}
( 문서번호 )} /> ( 제목 )} />
( 담당자 (PIC) )} /> ( 상태 )} />
( 발행일 date > new Date()} initialFocus /> )} /> ( 설명 (선택)