summaryrefslogtreecommitdiff
path: root/lib/bidding/list
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bidding/list')
-rw-r--r--lib/bidding/list/biddings-table-columns.tsx4
-rw-r--r--lib/bidding/list/biddings-table-toolbar-actions.tsx57
-rw-r--r--lib/bidding/list/biddings-table.tsx1
-rw-r--r--lib/bidding/list/biddings-transmission-dialog.tsx34
-rw-r--r--lib/bidding/list/create-bidding-dialog.tsx4
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>