"use client" import * as React from "react" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Checkbox } from "@/components/ui/checkbox" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" interface BulkImportDialogProps { open: boolean onOpenChange: (open: boolean) => void onSubmit: (data: Record) => void } export function BulkImportDialog({ open, onOpenChange, onSubmit }: BulkImportDialogProps) { const [formData, setFormData] = React.useState>({ equipBulkDivision: "", similarMaterialNamePurchase: "", faTarget: null, tier: "", isAgent: null, headquarterLocation: "", manufacturingLocation: "", avlVendorName: "", isBlacklist: null, isBcc: null, }) const handleSubmit = (e: React.FormEvent) => { e.preventDefault() // 빈 값이나 기본값은 제외하고 실제 변경할 값만 전달 const filteredData: Record = {} Object.entries(formData).forEach(([key, value]) => { if (value !== "" && value !== null && value !== undefined) { filteredData[key] = value } }) if (Object.keys(filteredData).length === 0) { return } onSubmit(filteredData) // 폼 초기화 setFormData({ equipBulkDivision: "", similarMaterialNamePurchase: "", faTarget: null, tier: "", isAgent: null, headquarterLocation: "", manufacturingLocation: "", avlVendorName: "", isBlacklist: null, isBcc: null, }) } const handleCancel = () => { setFormData({ equipBulkDivision: "", similarMaterialNamePurchase: "", faTarget: null, tier: "", isAgent: null, headquarterLocation: "", manufacturingLocation: "", avlVendorName: "", isBlacklist: null, isBcc: null, }) onOpenChange(false) } return ( 일괄 입력 선택된 행들에 동일한 값을 입력합니다. 빈 칸은 변경하지 않습니다.
{/* Equip/Bulk 구분 */}
{/* 유사자재명(구매) */}
setFormData(prev => ({ ...prev, similarMaterialNamePurchase: e.target.value }))} placeholder="유사자재명 입력" />
{/* FA대상 */}
setFormData(prev => ({ ...prev, faTarget: checked ? true : null }))} />
{/* 등급 */}
setFormData(prev => ({ ...prev, tier: e.target.value }))} placeholder="등급 입력" />
{/* Agent 여부 */}
setFormData(prev => ({ ...prev, isAgent: checked ? true : null }))} />
{/* 본사위치(국가) */}
setFormData(prev => ({ ...prev, headquarterLocation: e.target.value }))} placeholder="국가명 입력" />
{/* 제작/선적지(국가) */}
setFormData(prev => ({ ...prev, manufacturingLocation: e.target.value }))} placeholder="국가명 입력" />
{/* AVL등재업체명 */}
setFormData(prev => ({ ...prev, avlVendorName: e.target.value }))} placeholder="업체명 입력" />
{/* Blacklist */}
setFormData(prev => ({ ...prev, isBlacklist: checked ? true : null }))} />
{/* BCC */}
setFormData(prev => ({ ...prev, isBcc: checked ? true : null }))} />
) }