summaryrefslogtreecommitdiff
path: root/components/bidding/manage/bidding-detail-vendor-create-dialog.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'components/bidding/manage/bidding-detail-vendor-create-dialog.tsx')
-rw-r--r--components/bidding/manage/bidding-detail-vendor-create-dialog.tsx30
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>
))}