From 535de26b9cf3242c04543d6891d78352b9593a60 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 11 Nov 2025 09:22:58 +0000 Subject: (최겸) 구매 수정사항 개발 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/create-general-contract-dialog.tsx | 413 --------------------- 1 file changed, 413 deletions(-) delete mode 100644 lib/general-contracts_old/main/create-general-contract-dialog.tsx (limited to 'lib/general-contracts_old/main/create-general-contract-dialog.tsx') diff --git a/lib/general-contracts_old/main/create-general-contract-dialog.tsx b/lib/general-contracts_old/main/create-general-contract-dialog.tsx deleted file mode 100644 index 2c3fc8bc..00000000 --- a/lib/general-contracts_old/main/create-general-contract-dialog.tsx +++ /dev/null @@ -1,413 +0,0 @@ -"use client" - -import * as React from "react" -import { useRouter } from "next/navigation" -import { Plus } from "lucide-react" -import { toast } from "sonner" -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, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" -import { Calendar } from "@/components/ui/calendar" -import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" -import { CalendarIcon } from "lucide-react" -import { format } from "date-fns" -import { ko } from "date-fns/locale" -import { cn } from "@/lib/utils" -import { createContract, getVendors, getProjects } from "@/lib/general-contracts/service" -import { - GENERAL_CONTRACT_CATEGORIES, - GENERAL_CONTRACT_TYPES, - GENERAL_EXECUTION_METHODS -} from "@/lib/general-contracts/types" -import { useSession } from "next-auth/react" - -interface CreateContractForm { - contractNumber: string - name: string - category: string - type: string - executionMethod: string - vendorId: number | null - projectId: number | null - startDate: Date | undefined - endDate: Date | undefined - validityEndDate: Date | undefined - notes: string -} - -export function CreateGeneralContractDialog() { - const router = useRouter() - const { data: session } = useSession() - const [open, setOpen] = React.useState(false) - const [isLoading, setIsLoading] = React.useState(false) - const [vendors, setVendors] = React.useState>([]) - const [projects, setProjects] = React.useState>([]) - - const [form, setForm] = React.useState({ - contractNumber: '', - name: '', - category: '', - type: '', - executionMethod: '', - vendorId: null, - projectId: null, - startDate: undefined, - endDate: undefined, - validityEndDate: undefined, - notes: '', - }) - - // 업체 목록 조회 - React.useEffect(() => { - const fetchVendors = async () => { - try { - const vendorList = await getVendors() - setVendors(vendorList) - } catch (error) { - console.error('Error fetching vendors:', error) - } - } - fetchVendors() - }, []) - - // 프로젝트 목록 조회 - React.useEffect(() => { - const fetchProjects = async () => { - try { - const projectList = await getProjects() - console.log(projectList) - setProjects(projectList) - } catch (error) { - console.error('Error fetching projects:', error) - } - } - fetchProjects() - }, []) - - const handleSubmit = async () => { - // 필수 필드 검증 - if (!form.name || !form.category || !form.type || !form.executionMethod || - !form.vendorId || !form.startDate || !form.endDate) { - toast.error("필수 항목을 모두 입력해주세요.") - return - } - - if (!form.validityEndDate) { - setForm(prev => ({ ...prev, validityEndDate: form.endDate })) - } - - try { - setIsLoading(true) - - const contractData = { - contractNumber: '', - name: form.name, - category: form.category, - type: form.type, - executionMethod: form.executionMethod, - projectId: form.projectId, - contractSourceType: 'manual', - vendorId: form.vendorId!, - startDate: form.startDate!.toISOString().split('T')[0], - endDate: form.endDate!.toISOString().split('T')[0], - validityEndDate: (form.validityEndDate || form.endDate!).toISOString().split('T')[0], - status: 'Draft', - registeredById: session?.user?.id || 1, - lastUpdatedById: session?.user?.id || 1, - notes: form.notes, - } - - await createContract(contractData) - - toast.success("새 계약이 생성되었습니다.") - setOpen(false) - resetForm() - - // 상세 페이지로 이동 - router.refresh() - } catch (error) { - console.error('Error creating contract:', error) - toast.error("계약 생성 중 오류가 발생했습니다.") - } finally { - setIsLoading(false) - } - } - - const resetForm = () => { - setForm({ - contractNumber: '', - name: '', - category: '', - type: '', - executionMethod: '', - vendorId: null, - projectId: null, - startDate: undefined, - endDate: undefined, - validityEndDate: undefined, - notes: '', - }) - } - - return ( - { - setOpen(newOpen) - if (!newOpen) resetForm() - }}> - - - - - - 새 계약 등록 - - 새로운 계약의 기본 정보를 입력하세요. - - - -
-
-
- - setForm(prev => ({ ...prev, name: e.target.value }))} - placeholder="계약명을 입력하세요" - /> -
-
- -
-
- - -
- -
- - -
- -
- - -
-
- -
- - -
- -
- - -
- -
-
- - - - - - - setForm(prev => ({ ...prev, startDate: date }))} - initialFocus - /> - - -
- -
- - - - - - - setForm(prev => ({ ...prev, endDate: date }))} - initialFocus - /> - - -
- -
- - - - - - - setForm(prev => ({ ...prev, validityEndDate: date }))} - initialFocus - /> - - -
-
-
- -