diff options
Diffstat (limited to 'lib/bidding/list')
| -rw-r--r-- | lib/bidding/list/biddings-table-columns.tsx | 4 | ||||
| -rw-r--r-- | lib/bidding/list/biddings-table-toolbar-actions.tsx | 57 | ||||
| -rw-r--r-- | lib/bidding/list/biddings-table.tsx | 1 | ||||
| -rw-r--r-- | lib/bidding/list/biddings-transmission-dialog.tsx | 34 | ||||
| -rw-r--r-- | lib/bidding/list/create-bidding-dialog.tsx | 4 |
5 files changed, 43 insertions, 57 deletions
diff --git a/lib/bidding/list/biddings-table-columns.tsx b/lib/bidding/list/biddings-table-columns.tsx index 40c7f271..36abd03c 100644 --- a/lib/bidding/list/biddings-table-columns.tsx +++ b/lib/bidding/list/biddings-table-columns.tsx @@ -122,14 +122,14 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef // ░░░ 프로젝트명 ░░░ { accessorKey: "projectName", - header: ({ column }) => <DataTableColumnHeaderSimple column={column} title="프로젝트명" />, + header: ({ column }) => <DataTableColumnHeaderSimple column={column} title="프로젝트 No." />, cell: ({ row }) => ( <div className="truncate max-w-[150px]" title={row.original.projectName || ''}> {row.original.projectName || '-'} </div> ), size: 150, - meta: { excelHeader: "프로젝트명" }, + meta: { excelHeader: "프로젝트 No." }, }, // ░░░ 입찰명 ░░░ { diff --git a/lib/bidding/list/biddings-table-toolbar-actions.tsx b/lib/bidding/list/biddings-table-toolbar-actions.tsx index 0cb87b11..3f65f559 100644 --- a/lib/bidding/list/biddings-table-toolbar-actions.tsx +++ b/lib/bidding/list/biddings-table-toolbar-actions.tsx @@ -80,26 +80,12 @@ export function BiddingsTableToolbarActions({ table }: BiddingsTableToolbarActio .getFilteredSelectedRowModel() .rows .map(row => row.original) - }, [table]) + }, [table.getFilteredSelectedRowModel().rows]) // 업체선정이 완료된 입찰만 전송 가능 - const canTransmit = selectedBiddings.length === 1 && selectedBiddings[0].status === 'vendor_selected' - - const handleExport = async () => { - try { - setIsExporting(true) - await exportTableToExcel(table, { - filename: "biddings", - excludeColumns: ["select", "actions"], - }) - toast.success("입찰 목록이 성공적으로 내보내졌습니다.") - } catch { - toast.error("내보내기 중 오류가 발생했습니다.") - } finally { - setIsExporting(false) - } - } - + const canTransmit = true + console.log(canTransmit, 'canTransmit') + console.log(selectedBiddings, 'selectedBiddings') return ( <> @@ -121,41 +107,6 @@ export function BiddingsTableToolbarActions({ table }: BiddingsTableToolbarActio <Send className="size-4" aria-hidden="true" /> <span className="hidden sm:inline">전송하기</span> </Button> - - {/* 개찰 (입찰 오픈) */} - {/* {openEligibleBiddings.length > 0 && ( - <Button - variant="outline" - size="sm" - onClick={handleBiddingOpen} - > - <Gavel className="mr-2 h-4 w-4" /> - 개찰 ({openEligibleBiddings.length}) - </Button> - )} */} - - {/* Export */} - <DropdownMenu> - <DropdownMenuTrigger asChild> - <Button - variant="outline" - size="sm" - className="gap-2" - disabled={isExporting} - > - <Download className="size-4" aria-hidden="true" /> - <span className="hidden sm:inline"> - {isExporting ? "내보내는 중..." : "Export"} - </span> - </Button> - </DropdownMenuTrigger> - <DropdownMenuContent align="end"> - <DropdownMenuItem onClick={handleExport} disabled={isExporting}> - <FileSpreadsheet className="mr-2 size-4" /> - <span>입찰 목록 내보내기</span> - </DropdownMenuItem> - </DropdownMenuContent> - </DropdownMenu> </div> {/* 전송 다이얼로그 */} diff --git a/lib/bidding/list/biddings-table.tsx b/lib/bidding/list/biddings-table.tsx index 89b6260c..35d57726 100644 --- a/lib/bidding/list/biddings-table.tsx +++ b/lib/bidding/list/biddings-table.tsx @@ -128,6 +128,7 @@ export function BiddingsTable({ promises }: BiddingsTableProps) { filterFields, enablePinning: true, enableAdvancedFilter: true, + enableMultiRowSelection: false, initialState: { sorting: [{ id: "createdAt", desc: true }], columnPinning: { right: ["actions"] }, diff --git a/lib/bidding/list/biddings-transmission-dialog.tsx b/lib/bidding/list/biddings-transmission-dialog.tsx index de28bf54..7eb7ffd1 100644 --- a/lib/bidding/list/biddings-transmission-dialog.tsx +++ b/lib/bidding/list/biddings-transmission-dialog.tsx @@ -92,6 +92,40 @@ export function TransmissionDialog({ open, onOpenChange, bidding, userId }: Tran if (!bidding) return null
+ // 업체선정이 완료되지 않은 경우 에러 표시
+ if (bidding.status !== 'vendor_selected') {
+ return (
+ <Dialog open={open} onOpenChange={onOpenChange}>
+ <DialogContent className="sm:max-w-[400px]">
+ <DialogHeader>
+ <DialogTitle className="flex items-center gap-2 text-red-600">
+ <Send className="w-5 h-5" />
+ 전송 불가
+ </DialogTitle>
+ <DialogDescription>
+ 업체선정이 완료된 입찰만 전송할 수 있습니다.
+ </DialogDescription>
+ </DialogHeader>
+ <div className="py-4">
+ <div className="text-center">
+ <p className="text-sm text-muted-foreground">
+ 현재 상태: <span className="font-medium">{bidding.status}</span>
+ </p>
+ <p className="text-xs text-muted-foreground mt-2">
+ 업체선정이 완료된 후 다시 시도해주세요.
+ </p>
+ </div>
+ </div>
+ <DialogFooter>
+ <Button onClick={() => onOpenChange(false)}>
+ 확인
+ </Button>
+ </DialogFooter>
+ </DialogContent>
+ </Dialog>
+ )
+ }
+
const handleToContract = async () => {
try {
setIsLoading(true)
diff --git a/lib/bidding/list/create-bidding-dialog.tsx b/lib/bidding/list/create-bidding-dialog.tsx index ff68e739..2f458873 100644 --- a/lib/bidding/list/create-bidding-dialog.tsx +++ b/lib/bidding/list/create-bidding-dialog.tsx @@ -1438,11 +1438,11 @@ export function CreateBiddingDialog() { name="awardCount" render={({ field }) => ( <FormItem> - <FormLabel>낙찰수 <span className="text-red-500">*</span></FormLabel> + <FormLabel>낙찰업체 수 <span className="text-red-500">*</span></FormLabel> <Select onValueChange={field.onChange} defaultValue={field.value}> <FormControl> <SelectTrigger> - <SelectValue placeholder="낙찰수 선택" /> + <SelectValue placeholder="낙찰업체 수 선택" /> </SelectTrigger> </FormControl> <SelectContent> |
