diff options
Diffstat (limited to 'lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx')
| -rw-r--r-- | lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx b/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx index 1a1b331e..6e5481f4 100644 --- a/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx +++ b/lib/bidding/detail/table/bidding-detail-vendor-edit-dialog.tsx @@ -24,6 +24,7 @@ interface BiddingDetailVendorEditDialogProps { onSuccess: () => void biddingAwardCount?: string // 낙찰수 정보 추가 biddingStatus?: string // 입찰 상태 정보 추가 + allVendors?: QuotationVendor[] // 전체 벤더 목록 추가 } export function BiddingDetailVendorEditDialog({ @@ -32,7 +33,8 @@ export function BiddingDetailVendorEditDialog({ onOpenChange, onSuccess, biddingAwardCount, - biddingStatus + biddingStatus, + allVendors = [] }: BiddingDetailVendorEditDialogProps) { const { toast } = useToast() const [isPending, startTransition] = useTransition() @@ -42,6 +44,14 @@ export function BiddingDetailVendorEditDialog({ awardRatio: 0, }) + // 단수낙찰의 경우 이미 100%인 벤더가 있는지 확인 + const hasWinnerWith100Percent = React.useMemo(() => { + if (biddingAwardCount === 'single') { + return allVendors.some(v => v.awardRatio === 100 && v.id !== vendor?.id) + } + return false + }, [allVendors, biddingAwardCount, vendor?.id]) + // vendor가 변경되면 폼 데이터 업데이트 React.useEffect(() => { if (vendor) { @@ -135,7 +145,7 @@ export function BiddingDetailVendorEditDialog({ value={formData.awardRatio} onChange={(e) => setFormData({ ...formData, awardRatio: Number(e.target.value) })} placeholder="발주비율을 입력하세요" - disabled={vendor?.isBiddingParticipated !== true || biddingAwardCount === 'single' || biddingStatus === 'vendor_selected'} + disabled={vendor?.isBiddingParticipated !== true || biddingAwardCount === 'single' || biddingStatus === 'vendor_selected' || hasWinnerWith100Percent} /> {vendor?.isBiddingParticipated !== true && ( <p className="text-sm text-muted-foreground"> @@ -152,15 +162,20 @@ export function BiddingDetailVendorEditDialog({ 낙찰이 완료되어 발주비율을 수정할 수 없습니다. </p> )} + {hasWinnerWith100Percent && ( + <p className="text-sm text-orange-600"> + 단수 낙찰의 경우 이미 100% 발주비율이 설정된 업체가 있어 다른 업체의 발주비율을 수정할 수 없습니다. + </p> + )} </div> </div> <DialogFooter> <Button variant="outline" onClick={() => onOpenChange(false)}> 취소 </Button> - <Button - onClick={handleEdit} - disabled={isPending || vendor?.isBiddingParticipated !== true} + <Button + onClick={handleEdit} + disabled={isPending || vendor?.isBiddingParticipated !== true || hasWinnerWith100Percent} > 산정 </Button> |
