diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-09 10:34:05 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-09-09 10:34:05 +0000 |
| commit | 86b1fd1cc801f45642f84d24c0b5c84368454ff0 (patch) | |
| tree | 63176d1feb6d3fbbb71d942343056ba6d793b586 /lib/bidding/vendor/partners-bidding-list-columns.tsx | |
| parent | c62ec046327fd388ebce04571b55910747e69a3b (diff) | |
(최겸) 구매 입찰 사전견적, 입찰, 낙찰, 유찰, 재입찰 기능 개발
Diffstat (limited to 'lib/bidding/vendor/partners-bidding-list-columns.tsx')
| -rw-r--r-- | lib/bidding/vendor/partners-bidding-list-columns.tsx | 61 |
1 files changed, 45 insertions, 16 deletions
diff --git a/lib/bidding/vendor/partners-bidding-list-columns.tsx b/lib/bidding/vendor/partners-bidding-list-columns.tsx index 0d1e3123..7058f026 100644 --- a/lib/bidding/vendor/partners-bidding-list-columns.tsx +++ b/lib/bidding/vendor/partners-bidding-list-columns.tsx @@ -94,7 +94,7 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL // 액션 (드롭다운 메뉴) columnHelper.display({ id: 'actions', - header: 'Actions', + header: '액션', cell: ({ row }) => { const handleView = () => { if (setRowAction) { @@ -122,13 +122,7 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL }) } } - - const canManageAttendance = row.original.invitationStatus === 'sent' || - row.original.invitationStatus === 'accepted' - // 사전견적이 가능한 조건: 초대 발송(sent) 상태인 경우 - const canDoPreQuote = row.original.invitationStatus === 'sent' || row.original.invitationStatus === 'pending' || row.original.invitationStatus === 'submitted'; - return ( <DropdownMenu> <DropdownMenuTrigger asChild> @@ -143,20 +137,12 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL <DropdownMenuContent align="end" className="w-[160px]"> <DropdownMenuItem onClick={handleView}> <FileText className="mr-2 h-4 w-4" /> - 상세보기 + 입찰 상세보기 </DropdownMenuItem> - {canDoPreQuote && ( <DropdownMenuItem onClick={handlePreQuote}> <Calculator className="mr-2 h-4 w-4" /> 사전견적하기 </DropdownMenuItem> - )} - {canManageAttendance && ( - <DropdownMenuItem onClick={handleAttendance}> - <Users className="mr-2 h-4 w-4" /> - 참석여부 - </DropdownMenuItem> - )} </DropdownMenuContent> </DropdownMenu> ) @@ -199,6 +185,22 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL }, }), + // 사전견적 참여의사 + columnHelper.accessor('isPreQuoteParticipated', { + header: '사전견적 참여의사', + cell: ({ row }) => { + const participated = row.original.isPreQuoteParticipated + if (participated === null) { + return <Badge variant="outline">미결정</Badge> + } + return ( + <Badge variant={participated ? 'default' : 'destructive'}> + {participated ? '참여' : '미참여'} + </Badge> + ) + }, + }), + // 입찰 참여의사 columnHelper.accessor('invitationStatus', { header: '입찰 참여의사', @@ -250,6 +252,33 @@ export function getPartnersBiddingListColumns({ setRowAction }: PartnersBiddingL }, }), + // 사전견적 마감일 + columnHelper.accessor('preQuoteDeadline', { + header: '사전견적 마감일', + cell: ({ row }) => { + const deadline = row.original.preQuoteDeadline + if (!deadline) { + return <div className="text-muted-foreground">-</div> + } + + const now = new Date() + const deadlineDate = new Date(deadline) + const isExpired = deadlineDate < now + + return ( + <div className={`text-sm flex items-center gap-1 ${isExpired ? 'text-red-600' : ''}`}> + <Calendar className="w-4 h-4" /> + <span>{formatDate(deadline, 'KR')}</span> + {isExpired && ( + <Badge variant="destructive" className="text-xs"> + 마감 + </Badge> + )} + </div> + ) + }, + }), + // 계약기간 columnHelper.accessor('contractPeriod', { header: '계약기간', |
