diff options
Diffstat (limited to 'lib/bidding/detail/table/bidding-detail-vendor-table.tsx')
| -rw-r--r-- | lib/bidding/detail/table/bidding-detail-vendor-table.tsx | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/lib/bidding/detail/table/bidding-detail-vendor-table.tsx b/lib/bidding/detail/table/bidding-detail-vendor-table.tsx index 7ad7056c..b1f0b08e 100644 --- a/lib/bidding/detail/table/bidding-detail-vendor-table.tsx +++ b/lib/bidding/detail/table/bidding-detail-vendor-table.tsx @@ -9,7 +9,9 @@ import { BiddingDetailVendorToolbarActions } from './bidding-detail-vendor-toolb import { BiddingDetailVendorCreateDialog } from './bidding-detail-vendor-create-dialog' import { BiddingDetailVendorEditDialog } from './bidding-detail-vendor-edit-dialog' import { getBiddingDetailVendorColumns } from './bidding-detail-vendor-columns' -import { QuotationVendor } from '@/lib/bidding/detail/service' +import { QuotationVendor, getPriceAdjustmentFormByBiddingCompanyId } from '@/lib/bidding/detail/service' +import { Bidding } from '@/db/schema' +import { PriceAdjustmentDialog } from '@/components/bidding/price-adjustment-dialog' import { deleteQuotationVendor, selectWinner @@ -20,6 +22,7 @@ import { useTransition } from 'react' interface BiddingDetailVendorTableContentProps { biddingId: number + bidding: Bidding vendors: QuotationVendor[] onRefresh: () => void onOpenItemsDialog: () => void @@ -83,6 +86,7 @@ const advancedFilterFields: DataTableAdvancedFilterField<QuotationVendor>[] = [ export function BiddingDetailVendorTableContent({ biddingId, + bidding, vendors, onRefresh, onOpenItemsDialog, @@ -96,6 +100,8 @@ export function BiddingDetailVendorTableContent({ const [isPending, startTransition] = useTransition() const [selectedVendor, setSelectedVendor] = React.useState<QuotationVendor | null>(null) const [isEditDialogOpen, setIsEditDialogOpen] = React.useState(false) + const [priceAdjustmentData, setPriceAdjustmentData] = React.useState<any>(null) + const [isPriceAdjustmentDialogOpen, setIsPriceAdjustmentDialogOpen] = React.useState(false) const handleDelete = (vendor: QuotationVendor) => { if (!confirm(`${vendor.vendorName} 업체를 삭제하시겠습니까?`)) return @@ -170,13 +176,38 @@ export function BiddingDetailVendorTableContent({ setIsEditDialogOpen(true) } + const handleViewPriceAdjustment = async (vendor: QuotationVendor) => { + try { + const priceAdjustmentForm = await getPriceAdjustmentFormByBiddingCompanyId(vendor.id) + if (priceAdjustmentForm) { + setPriceAdjustmentData(priceAdjustmentForm) + setSelectedVendor(vendor) + setIsPriceAdjustmentDialogOpen(true) + } else { + toast({ + title: '연동제 정보 없음', + description: '해당 업체의 연동제 정보가 없습니다.', + variant: 'default', + }) + } + } catch (error) { + console.error('Failed to load price adjustment form:', error) + toast({ + title: '오류', + description: '연동제 정보를 불러오는데 실패했습니다.', + variant: 'destructive', + }) + } + } + const columns = React.useMemo( () => getBiddingDetailVendorColumns({ onEdit: onEdit || handleEdit, onDelete: onDelete || handleDelete, - onSelectWinner: onSelectWinner || handleSelectWinner + onSelectWinner: onSelectWinner || handleSelectWinner, + onViewPriceAdjustment: handleViewPriceAdjustment }), - [onEdit, onDelete, onSelectWinner, handleEdit, handleDelete, handleSelectWinner] + [onEdit, onDelete, onSelectWinner, handleEdit, handleDelete, handleSelectWinner, handleViewPriceAdjustment] ) const { table } = useDataTable({ @@ -205,10 +236,10 @@ export function BiddingDetailVendorTableContent({ <BiddingDetailVendorToolbarActions table={table} biddingId={biddingId} + bidding={bidding} onOpenItemsDialog={onOpenItemsDialog} onOpenTargetPriceDialog={onOpenTargetPriceDialog} onOpenSelectionReasonDialog={onOpenSelectionReasonDialog} - onSuccess={onRefresh} /> </DataTableAdvancedToolbar> @@ -220,6 +251,13 @@ export function BiddingDetailVendorTableContent({ onOpenChange={setIsEditDialogOpen} onSuccess={onRefresh} /> + + <PriceAdjustmentDialog + open={isPriceAdjustmentDialogOpen} + onOpenChange={setIsPriceAdjustmentDialogOpen} + data={priceAdjustmentData} + vendorName={selectedVendor?.vendorName || ''} + /> </> ) } |
