diff options
Diffstat (limited to 'components/bidding/manage/bidding-detail-vendor-create-dialog.tsx')
| -rw-r--r-- | components/bidding/manage/bidding-detail-vendor-create-dialog.tsx | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/components/bidding/manage/bidding-detail-vendor-create-dialog.tsx b/components/bidding/manage/bidding-detail-vendor-create-dialog.tsx index de813121..0dd9f0eb 100644 --- a/components/bidding/manage/bidding-detail-vendor-create-dialog.tsx +++ b/components/bidding/manage/bidding-detail-vendor-create-dialog.tsx @@ -28,7 +28,7 @@ import { import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs' import { ChevronsUpDown, Loader2, X, Plus } from 'lucide-react' import { createBiddingDetailVendor } from '@/lib/bidding/detail/service' -import { searchVendorsForBidding } from '@/lib/bidding/service' +import { searchVendorsForBidding, getVendorsBusinessSize } from '@/lib/bidding/service' import { useToast } from '@/hooks/use-toast' import { useTransition } from 'react' import { Badge } from '@/components/ui/badge' @@ -68,6 +68,9 @@ export function BiddingDetailVendorCreateDialog({ const [selectedVendorsWithQuestion, setSelectedVendorsWithQuestion] = React.useState<SelectedVendorWithQuestion[]>([]) const [vendorOpen, setVendorOpen] = React.useState(false) + // Business size 정보 캐싱 + const [businessSizeMap, setBusinessSizeMap] = React.useState<Record<number, string | null>>({}) + // 벤더 로드 const loadVendors = React.useCallback(async () => { try { @@ -204,6 +207,28 @@ export function BiddingDetailVendorCreateDialog({ const selectedVendors = selectedVendorsWithQuestion.map(item => item.vendor) + // 선택된 vendor들의 businessSize 정보를 useMemo로 캐싱 + const loadBusinessSize = React.useMemo(() => { + const selectedVendorIds = selectedVendors.map(v => v.id) + if (selectedVendorIds.length === 0) return + + // 이미 로드된 vendor들은 제외 + const newVendorIds = selectedVendorIds.filter(id => !(id in businessSizeMap)) + + if (newVendorIds.length > 0) { + getVendorsBusinessSize(newVendorIds).then(result => { + setBusinessSizeMap(prev => ({ ...prev, ...result })) + }).catch(error => { + console.error('Failed to load business size:', error) + }) + } + }, [selectedVendors, businessSizeMap]) + + // selectedVendors가 변경될 때마다 businessSize 로드 + React.useEffect(() => { + loadBusinessSize + }, [loadBusinessSize]) + return ( <Dialog open={open} onOpenChange={onOpenChange}> <DialogContent className="max-w-4xl max-h-[90vh] p-0 flex flex-col"> @@ -382,6 +407,9 @@ export function BiddingDetailVendorCreateDialog({ > 연동제 적용요건 문의 </Label> + <span className="text-xs text-muted-foreground"> + 기업규모: {businessSizeMap[item.vendor.id] || '미정'} + </span> </div> </div> ))} |
