summaryrefslogtreecommitdiff
path: root/lib/bidding/vendor
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-09-16 09:20:58 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-09-16 09:20:58 +0000
commit6c11fccc84f4c84fa72ee01f9caad9f76f35cea2 (patch)
treefa88d10ea7d21fe6b59ed0c1569856a73d56547a /lib/bidding/vendor
parent14e3990aba7e1ad1cdd0965cbd167c50230cbfbf (diff)
(대표님, 최겸) 계약, 업로드 관련, 메뉴처리, 입찰, 프리쿼트, rfqLast관련, tbeLast관련
Diffstat (limited to 'lib/bidding/vendor')
-rw-r--r--lib/bidding/vendor/partners-bidding-detail.tsx25
-rw-r--r--lib/bidding/vendor/partners-bidding-list-columns.tsx7
-rw-r--r--lib/bidding/vendor/partners-bidding-pre-quote.tsx33
3 files changed, 58 insertions, 7 deletions
diff --git a/lib/bidding/vendor/partners-bidding-detail.tsx b/lib/bidding/vendor/partners-bidding-detail.tsx
index 4b316eee..89ca426b 100644
--- a/lib/bidding/vendor/partners-bidding-detail.tsx
+++ b/lib/bidding/vendor/partners-bidding-detail.tsx
@@ -296,6 +296,19 @@ export function PartnersBiddingDetail({ biddingId, companyId }: PartnersBiddingD
const handleSaveDraft = async () => {
if (!biddingDetail || !userId) return
+ // 입찰 마감 상태 체크
+ const biddingStatus = biddingDetail.status
+ const isClosed = biddingStatus === 'bidding_closed' || biddingStatus === 'vendor_selected' || biddingStatus === 'bidding_disposal'
+
+ if (isClosed) {
+ toast({
+ title: "접근 제한",
+ description: "입찰이 마감되어 더 이상 입찰에 참여할 수 없습니다.",
+ variant: "destructive",
+ })
+ return
+ }
+
if (prItemQuotations.length === 0) {
toast({
title: '저장할 데이터 없음',
@@ -350,6 +363,18 @@ export function PartnersBiddingDetail({ biddingId, companyId }: PartnersBiddingD
const handleSubmitResponse = () => {
if (!biddingDetail) return
+ // 입찰 마감 상태 체크
+ const biddingStatus = biddingDetail.status
+ const isClosed = biddingStatus === 'bidding_closed' || biddingStatus === 'vendor_selected' || biddingStatus === 'bidding_disposal'
+
+ if (isClosed) {
+ toast({
+ title: "접근 제한",
+ description: "입찰이 마감되어 더 이상 입찰에 참여할 수 없습니다.",
+ variant: "destructive",
+ })
+ return
+ }
// 필수값 검증
if (!responseData.finalQuoteAmount.trim()) {
diff --git a/lib/bidding/vendor/partners-bidding-list-columns.tsx b/lib/bidding/vendor/partners-bidding-list-columns.tsx
index 431f7e9a..534e8838 100644
--- a/lib/bidding/vendor/partners-bidding-list-columns.tsx
+++ b/lib/bidding/vendor/partners-bidding-list-columns.tsx
@@ -177,7 +177,10 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL
})
}
}
-
+
+ const biddingStatus = row.original.status
+ const isClosed = biddingStatus === 'bidding_closed' || biddingStatus === 'vendor_selected' || biddingStatus === 'bidding_disposal'
+
return (
<DropdownMenu>
<DropdownMenuTrigger asChild>
@@ -194,10 +197,12 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL
<FileText className="mr-2 h-4 w-4" />
입찰 상세보기
</DropdownMenuItem>
+ {!isClosed && (
<DropdownMenuItem onClick={handlePreQuote}>
<Calculator className="mr-2 h-4 w-4" />
사전견적하기
</DropdownMenuItem>
+ )}
</DropdownMenuContent>
</DropdownMenu>
)
diff --git a/lib/bidding/vendor/partners-bidding-pre-quote.tsx b/lib/bidding/vendor/partners-bidding-pre-quote.tsx
index bdc860f4..4ec65413 100644
--- a/lib/bidding/vendor/partners-bidding-pre-quote.tsx
+++ b/lib/bidding/vendor/partners-bidding-pre-quote.tsx
@@ -254,6 +254,19 @@ export function PartnersBiddingPreQuote({ biddingId, companyId }: PartnersBiddin
})
return
}
+ // 입찰 마감 상태 체크
+ const biddingStatus = biddingDetail.status
+ const isClosed = biddingStatus === 'bidding_closed' || biddingStatus === 'vendor_selected' || biddingStatus === 'bidding_disposal'
+
+ if (isClosed) {
+ toast({
+ title: "접근 제한",
+ description: "입찰이 마감되어 더 이상 사전견적을 제출할 수 없습니다.",
+ variant: "destructive",
+ })
+ router.back()
+ return
+ }
if (!userId) {
toast({
@@ -356,6 +369,20 @@ export function PartnersBiddingPreQuote({ biddingId, companyId }: PartnersBiddin
const handleSubmitResponse = () => {
if (!biddingDetail) return
+ // 입찰 마감 상태 체크
+ const biddingStatus = biddingDetail.status
+ const isClosed = biddingStatus === 'bidding_closed' || biddingStatus === 'vendor_selected' || biddingStatus === 'bidding_disposal'
+
+ if (isClosed) {
+ toast({
+ title: "접근 제한",
+ description: "입찰이 마감되어 더 이상 사전견적을 제출할 수 없습니다.",
+ variant: "destructive",
+ })
+ router.back()
+ return
+ }
+
// 견적마감일 체크
if (biddingDetail.preQuoteDeadline) {
const now = new Date()
@@ -519,12 +546,6 @@ export function PartnersBiddingPreQuote({ biddingId, companyId }: PartnersBiddin
})
}
- const formatCurrency = (amount: number) => {
- return new Intl.NumberFormat('ko-KR', {
- style: 'currency',
- currency: biddingDetail?.currency || 'KRW',
- }).format(amount)
- }
if (isLoading) {
return (