diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-12 10:42:36 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-12 10:42:36 +0000 |
| commit | 8642ee064ddf96f1db2b948b4cc8bbbd6cfee820 (patch) | |
| tree | 36bd57d147ba929f1d72918d1fb91ad2c4778624 /lib/bidding/list | |
| parent | 57ea2f740abf1c7933671561cfe0e421fb5ef3fc (diff) | |
(최겸) 구매 일반계약, 입찰 수정
Diffstat (limited to 'lib/bidding/list')
| -rw-r--r-- | lib/bidding/list/bidding-detail-dialogs.tsx | 122 | ||||
| -rw-r--r-- | lib/bidding/list/biddings-table-columns.tsx | 13 | ||||
| -rw-r--r-- | lib/bidding/list/biddings-table.tsx | 21 | ||||
| -rw-r--r-- | lib/bidding/list/create-bidding-dialog.tsx | 2 |
4 files changed, 8 insertions, 150 deletions
diff --git a/lib/bidding/list/bidding-detail-dialogs.tsx b/lib/bidding/list/bidding-detail-dialogs.tsx index 065000ce..c7045c51 100644 --- a/lib/bidding/list/bidding-detail-dialogs.tsx +++ b/lib/bidding/list/bidding-detail-dialogs.tsx @@ -359,128 +359,6 @@ export function SpecificationMeetingDialog({ // PR 문서 다이얼로그는 bidding-pr-documents-dialog.tsx로 이동됨 // import { PrDocumentsDialog } from './bidding-pr-documents-dialog'로 사용하세요 -// 폐찰하기 다이얼로그 -interface BidClosureDialogProps { - open: boolean; - onOpenChange: (open: boolean) => void; - bidding: BiddingListItem | null; - userId: string; -} - -export function BidClosureDialog({ - open, - onOpenChange, - bidding, - userId -}: BidClosureDialogProps) { - const [description, setDescription] = useState('') - const [files, setFiles] = useState<File[]>([]) - const [isSubmitting, setIsSubmitting] = useState(false) - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault() - - if (!bidding || !description.trim()) { - toast.error('폐찰 사유를 입력해주세요.') - return - } - - setIsSubmitting(true) - - try { - const result = await bidClosureAction(bidding.id, { - description: description.trim(), - files - }, userId) - - if (result.success) { - toast.success(result.message) - onOpenChange(false) - // 페이지 새로고침 또는 상태 업데이트 - window.location.reload() - } else { - toast.error(result.error || '폐찰 처리 중 오류가 발생했습니다.') - } - } catch (error) { - toast.error('폐찰 처리 중 오류가 발생했습니다.') - } finally { - setIsSubmitting(false) - } - } - - const handleFileChange = (e: React.ChangeEvent<HTMLInputElement>) => { - if (e.target.files) { - setFiles(Array.from(e.target.files)) - } - } - - if (!bidding) return null - - return ( - <Dialog open={open} onOpenChange={onOpenChange}> - <DialogContent className="max-w-2xl"> - <DialogHeader> - <DialogTitle className="flex items-center gap-2"> - <FileXIcon className="h-5 w-5 text-destructive" /> - 폐찰하기 - </DialogTitle> - <DialogDescription> - {bidding.title} ({bidding.biddingNumber})를 폐찰합니다. - </DialogDescription> - </DialogHeader> - - <form onSubmit={handleSubmit} className="space-y-4"> - <div className="space-y-2"> - <Label htmlFor="description">폐찰 사유 <span className="text-destructive">*</span></Label> - <Textarea - id="description" - placeholder="폐찰 사유를 입력해주세요..." - value={description} - onChange={(e) => setDescription(e.target.value)} - className="min-h-[100px]" - required - /> - </div> - - <div className="space-y-2"> - <Label htmlFor="files">첨부파일</Label> - <Input - id="files" - type="file" - multiple - onChange={handleFileChange} - className="cursor-pointer" - accept=".pdf,.doc,.docx,.xls,.xlsx,.txt,.jpg,.jpeg,.png" - /> - {files.length > 0 && ( - <div className="text-sm text-muted-foreground"> - 선택된 파일: {files.map(f => f.name).join(', ')} - </div> - )} - </div> - - <div className="flex justify-end gap-2 pt-4"> - <Button - type="button" - variant="outline" - onClick={() => onOpenChange(false)} - disabled={isSubmitting} - > - 취소 - </Button> - <Button - type="submit" - variant="destructive" - disabled={isSubmitting || !description.trim()} - > - {isSubmitting ? '처리 중...' : '폐찰하기'} - </Button> - </div> - </form> - </DialogContent> - </Dialog> - ) -} // Re-export for backward compatibility export { PrDocumentsDialog } from './bidding-pr-documents-dialog'
\ No newline at end of file diff --git a/lib/bidding/list/biddings-table-columns.tsx b/lib/bidding/list/biddings-table-columns.tsx index 10966e0e..f5e77d03 100644 --- a/lib/bidding/list/biddings-table-columns.tsx +++ b/lib/bidding/list/biddings-table-columns.tsx @@ -136,7 +136,7 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef header: ({ column }) => <DataTableColumnHeaderSimple column={column} title="입찰명" />, cell: ({ row }) => ( <div className="truncate max-w-[200px]" title={row.original.title}> - <Button + {/* <Button variant="link" className="p-0 h-auto text-left justify-start font-bold underline" onClick={() => setRowAction({ row, type: "view" })} @@ -144,7 +144,8 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef <div className="whitespace-pre-line"> {row.original.title} </div> - </Button> + </Button> */} + {row.original.title} </div> ), size: 200, @@ -389,7 +390,7 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef <Eye className="mr-2 h-4 w-4" /> 상세보기 </DropdownMenuItem> - <DropdownMenuItem + {/* <DropdownMenuItem onClick={() => setRowAction({ row, type: "update" })} disabled={['bidding_opened', 'bidding_closed', 'vendor_selected'].includes(row.original.status)} > @@ -398,8 +399,8 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef {['bidding_opened', 'bidding_closed', 'vendor_selected'].includes(row.original.status) && ( <span className="text-xs text-muted-foreground ml-2">(수정 불가)</span> )} - </DropdownMenuItem> - <DropdownMenuSeparator /> + </DropdownMenuItem> */} + {/* <DropdownMenuSeparator /> <DropdownMenuItem onClick={() => setRowAction({ row, type: "bid_closure" })} disabled={row.original.status !== 'bidding_disposal'} @@ -409,7 +410,7 @@ export function getBiddingsColumns({ setRowAction }: GetColumnsProps): ColumnDef {row.original.status !== 'bidding_disposal' && ( <span className="text-xs text-muted-foreground ml-2">(유찰 시에만 가능)</span> )} - </DropdownMenuItem> + </DropdownMenuItem> */} {/* <DropdownMenuSeparator /> <DropdownMenuItem onClick={() => setRowAction({ row, type: "copy" })}> <Package className="mr-2 h-4 w-4" /> diff --git a/lib/bidding/list/biddings-table.tsx b/lib/bidding/list/biddings-table.tsx index 39952d5a..89b6260c 100644 --- a/lib/bidding/list/biddings-table.tsx +++ b/lib/bidding/list/biddings-table.tsx @@ -23,8 +23,7 @@ import { biddingTypeLabels } from "@/db/schema" import { EditBiddingSheet } from "./edit-bidding-sheet" -import { SpecificationMeetingDialog, PrDocumentsDialog, BidClosureDialog } from "./bidding-detail-dialogs" - +import { SpecificationMeetingDialog, PrDocumentsDialog } from "./bidding-detail-dialogs" interface BiddingsTableProps { promises: Promise< @@ -44,7 +43,6 @@ export function BiddingsTable({ promises }: BiddingsTableProps) { const [isCompact, setIsCompact] = React.useState<boolean>(false) const [specMeetingDialogOpen, setSpecMeetingDialogOpen] = React.useState(false) const [prDocumentsDialogOpen, setPrDocumentsDialogOpen] = React.useState(false) - const [bidClosureDialogOpen, setBidClosureDialogOpen] = React.useState(false) const [selectedBidding, setSelectedBidding] = React.useState<BiddingListItemWithManagerCode | null>(null) console.log(data,"data") @@ -78,10 +76,6 @@ export function BiddingsTable({ promises }: BiddingsTableProps) { case "pr_documents": setPrDocumentsDialogOpen(true) break - case "bid_closure": - setBidClosureDialogOpen(true) - break - // 기존 다른 액션들은 그대로 유지 default: break } @@ -160,12 +154,6 @@ export function BiddingsTable({ promises }: BiddingsTableProps) { setSelectedBidding(null) }, []) - const handleBidClosureDialogClose = React.useCallback(() => { - setBidClosureDialogOpen(false) - setRowAction(null) - setSelectedBidding(null) - }, []) - return ( <> @@ -208,13 +196,6 @@ export function BiddingsTable({ promises }: BiddingsTableProps) { bidding={selectedBidding} /> - {/* 폐찰하기 다이얼로그 */} - <BidClosureDialog - open={bidClosureDialogOpen} - onOpenChange={handleBidClosureDialogClose} - bidding={selectedBidding} - userId={session?.user?.id ? String(session.user.id) : ''} - /> </> ) diff --git a/lib/bidding/list/create-bidding-dialog.tsx b/lib/bidding/list/create-bidding-dialog.tsx index 20ea740f..ff68e739 100644 --- a/lib/bidding/list/create-bidding-dialog.tsx +++ b/lib/bidding/list/create-bidding-dialog.tsx @@ -62,8 +62,6 @@ import { createBiddingSchema, type CreateBiddingSchema } from '@/lib/bidding/val import { contractTypeLabels, biddingTypeLabels, awardCountLabels } from '@/db/schema' import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from '@/components/ui/alert-dialog' import { cn } from '@/lib/utils' -import { MaterialGroupSingleSelector } from '@/components/common/material/material-group-single-selector' -import { MaterialSingleSelector } from '@/components/common/selectors/material/material-single-selector' import { PurchaseGroupCodeSelector } from '@/components/common/selectors/purchase-group-code/purchase-group-code-selector' import { ProcurementManagerSelector } from '@/components/common/selectors/procurement-manager/procurement-manager-selector' import { WbsCodeSingleSelector } from '@/components/common/selectors/wbs-code/wbs-code-single-selector' |
