diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-18 10:30:31 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-18 10:30:31 +0000 |
| commit | c4f5472b961afb237dc819f9dd3f42a7b8f71075 (patch) | |
| tree | a1c0d00e46a005ff472bf1125e739bae73b0a53e /lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx | |
| parent | 1d1f6010704a1d655b3007887db0fe3ac866177a (diff) | |
(최겸) 구매 입찰 수정, 입찰초대 결재 등록, 재입찰, 차수증가, 폐찰, 유찰취소 로직 수정, readonly 추가 등
Diffstat (limited to 'lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx')
| -rw-r--r-- | lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx b/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx index c1677ae7..f2c23de9 100644 --- a/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx +++ b/lib/bidding/detail/table/bidding-detail-vendor-toolbar-actions.tsx @@ -4,6 +4,7 @@ import * as React from "react" import { useRouter } from "next/navigation" import { useTransition } from "react" import { Button } from "@/components/ui/button" +import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Plus, Send, RotateCcw, XCircle, Trophy, FileText, DollarSign, RotateCw } from "lucide-react" import { registerBidding, markAsDisposal, createRebidding } from "@/lib/bidding/detail/service" import { sendBiddingBasicContracts, getSelectedVendorsForBidding } from "@/lib/bidding/pre-quote/service" @@ -37,6 +38,7 @@ export function BiddingDetailVendorToolbarActions({ const [isPricesDialogOpen, setIsPricesDialogOpen] = React.useState(false) const [isBiddingInvitationDialogOpen, setIsBiddingInvitationDialogOpen] = React.useState(false) const [selectedVendors, setSelectedVendors] = React.useState<any[]>([]) + const [isRoundIncreaseDialogOpen, setIsRoundIncreaseDialogOpen] = React.useState(false) // 본입찰 초대 다이얼로그가 열릴 때 선정된 업체들 조회 React.useEffect(() => { @@ -176,6 +178,32 @@ export function BiddingDetailVendorToolbarActions({ }) } + const handleRoundIncreaseWithNavigation = () => { + startTransition(async () => { + const result = await increaseRoundOrRebid(bidding.id, userId, 'round_increase') + + if (result.success) { + toast({ + title: "성공", + description: result.message, + }) + // 새로 생성된 입찰의 상세 페이지로 이동 + if (result.biddingId) { + router.push(`/evcp/bid/${result.biddingId}`) + } else { + router.push(`/evcp/bid`) + } + onSuccess() + } else { + toast({ + title: "오류", + description: result.error || "차수증가 중 오류가 발생했습니다.", + variant: 'destructive', + }) + } + }) + } + return ( <> <div className="flex items-center gap-2"> @@ -185,7 +213,7 @@ export function BiddingDetailVendorToolbarActions({ <Button variant="outline" size="sm" - onClick={handleRoundIncrease} + onClick={() => setIsRoundIncreaseDialogOpen(true)} disabled={isPending} > <RotateCw className="mr-2 h-4 w-4" /> @@ -250,6 +278,35 @@ export function BiddingDetailVendorToolbarActions({ onSuccess={onSuccess} /> + {/* 차수증가 확인 다이얼로그 */} + <Dialog open={isRoundIncreaseDialogOpen} onOpenChange={setIsRoundIncreaseDialogOpen}> + <DialogContent> + <DialogHeader> + <DialogTitle>차수증가 확인</DialogTitle> + <DialogDescription> + 입찰을 차수증가 처리하시겠습니까? 차수증가 후 새로운 입찰 화면으로 이동합니다. + </DialogDescription> + </DialogHeader> + <DialogFooter> + <Button + variant="outline" + onClick={() => setIsRoundIncreaseDialogOpen(false)} + > + 아니오 + </Button> + <Button + onClick={async () => { + setIsRoundIncreaseDialogOpen(false) + await handleRoundIncreaseWithNavigation() + }} + disabled={isPending} + > + 예 + </Button> + </DialogFooter> + </DialogContent> + </Dialog> + </> ) } |
