summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
Diffstat (limited to 'components')
-rw-r--r--components/bidding/create/bidding-create-dialog.tsx12
-rw-r--r--components/bidding/manage/bidding-basic-info-editor.tsx6
-rw-r--r--components/bidding/manage/bidding-schedule-editor.tsx7
-rw-r--r--components/vendor-regular-registrations/document-status-dialog.tsx6
4 files changed, 12 insertions, 19 deletions
diff --git a/components/bidding/create/bidding-create-dialog.tsx b/components/bidding/create/bidding-create-dialog.tsx
index 4ef403c9..30550ca4 100644
--- a/components/bidding/create/bidding-create-dialog.tsx
+++ b/components/bidding/create/bidding-create-dialog.tsx
@@ -43,6 +43,7 @@ import { ProcurementManagerSelector } from '@/components/common/selectors/procur
import type { PurchaseGroupCodeWithUser } from '@/components/common/selectors/purchase-group-code/purchase-group-code-service'
import type { ProcurementManagerWithUser } from '@/components/common/selectors/procurement-manager/procurement-manager-service'
import { createBidding } from '@/lib/bidding/service'
+import { useSession } from 'next-auth/react'
interface BiddingCreateDialogProps {
form: UseFormReturn<CreateBiddingSchema>
@@ -50,6 +51,9 @@ interface BiddingCreateDialogProps {
}
export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProps) {
+ const { data: session } = useSession()
+ const userId = session?.user?.id ? Number(session.user.id) : null;
+
const [isOpen, setIsOpen] = React.useState(false)
const [isSubmitting, setIsSubmitting] = React.useState(false)
@@ -290,7 +294,7 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp
},
}
- const result = await createBidding(biddingData, '1') // 실제로는 현재 사용자 ID
+ const result = await createBidding(biddingData, userId?.toString() || '') // 실제로는 현재 사용자 ID
if (result.success) {
toast.success("입찰이 성공적으로 생성되었습니다.")
@@ -1147,9 +1151,6 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp
찾아보세요
</label>
</p>
- <p className="text-xs text-gray-500">
- PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, JPEG 파일을 업로드할 수 있습니다
- </p>
</div>
</div>
</div>
@@ -1217,9 +1218,6 @@ export function BiddingCreateDialog({ form, onSuccess }: BiddingCreateDialogProp
찾아보세요
</label>
</p>
- <p className="text-xs text-gray-500">
- PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, JPEG 파일을 업로드할 수 있습니다
- </p>
</div>
</div>
</div>
diff --git a/components/bidding/manage/bidding-basic-info-editor.tsx b/components/bidding/manage/bidding-basic-info-editor.tsx
index a956d73c..2f55d563 100644
--- a/components/bidding/manage/bidding-basic-info-editor.tsx
+++ b/components/bidding/manage/bidding-basic-info-editor.tsx
@@ -1199,9 +1199,6 @@ export function BiddingBasicInfoEditor({ biddingId }: BiddingBasicInfoEditorProp
찾아보세요
</label>
</p>
- <p className="text-xs text-gray-500">
- PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, JPEG 파일을 업로드할 수 있습니다
- </p>
</div>
</div>
</div>
@@ -1334,9 +1331,6 @@ export function BiddingBasicInfoEditor({ biddingId }: BiddingBasicInfoEditorProp
찾아보세요
</label>
</p>
- <p className="text-xs text-gray-500">
- PDF, DOC, DOCX, XLS, XLSX, PNG, JPG, JPEG 파일을 업로드할 수 있습니다
- </p>
</div>
</div>
</div>
diff --git a/components/bidding/manage/bidding-schedule-editor.tsx b/components/bidding/manage/bidding-schedule-editor.tsx
index d64c16c0..ce03c742 100644
--- a/components/bidding/manage/bidding-schedule-editor.tsx
+++ b/components/bidding/manage/bidding-schedule-editor.tsx
@@ -108,7 +108,7 @@ export function BiddingScheduleEditor({ biddingId }: BiddingScheduleEditorProps)
})
const [isLoading, setIsLoading] = React.useState(false)
const [isSubmitting, setIsSubmitting] = React.useState(false)
- const [biddingInfo, setBiddingInfo] = React.useState<{ title: string; projectName?: string } | null>(null)
+ const [biddingInfo, setBiddingInfo] = React.useState<{ title: string; projectName?: string; status: string } | null>(null)
const [isBiddingInvitationDialogOpen, setIsBiddingInvitationDialogOpen] = React.useState(false)
const [selectedVendors, setSelectedVendors] = React.useState<VendorContractRequirement[]>([])
@@ -123,6 +123,7 @@ export function BiddingScheduleEditor({ biddingId }: BiddingScheduleEditorProps)
setBiddingInfo({
title: bidding.title || '',
projectName: bidding.projectName || undefined,
+ status: bidding.status || '',
})
// 날짜를 문자열로 변환하는 헬퍼
@@ -617,7 +618,7 @@ export function BiddingScheduleEditor({ biddingId }: BiddingScheduleEditorProps)
<Button
variant="default"
onClick={() => setIsBiddingInvitationDialogOpen(true)}
- disabled={!biddingInfo}
+ disabled={!biddingInfo || biddingInfo.status !== 'bidding_generated'}
className="min-w-[120px]"
>
<Send className="w-4 h-4 mr-2" />
@@ -626,7 +627,7 @@ export function BiddingScheduleEditor({ biddingId }: BiddingScheduleEditorProps)
<div className="flex gap-4">
<Button
onClick={handleSave}
- disabled={isSubmitting}
+ disabled={isSubmitting || !biddingInfo || biddingInfo.status !== 'bidding_generated'}
className="min-w-[120px]"
>
{isSubmitting ? (
diff --git a/components/vendor-regular-registrations/document-status-dialog.tsx b/components/vendor-regular-registrations/document-status-dialog.tsx
index 3073a651..5efee64e 100644
--- a/components/vendor-regular-registrations/document-status-dialog.tsx
+++ b/components/vendor-regular-registrations/document-status-dialog.tsx
@@ -229,8 +229,8 @@ export function DocumentStatusDialog({
return (
<Dialog open={open} onOpenChange={onOpenChange}>
- <DialogContent className="max-w-4xl max-h-[80vh] overflow-y-auto">
- <DialogHeader>
+ <DialogContent className="max-w-4xl max-h-[80vh]">
+ <DialogHeader className="sticky top-0 z-10 border-b pr-4 pb-4 mb-4">
<DialogTitle className="flex items-center justify-between">
<div className="flex items-center gap-2">
<FileText className="w-5 h-5" />
@@ -250,7 +250,7 @@ export function DocumentStatusDialog({
</DialogTitle>
</DialogHeader>
- <div className="space-y-6">
+ <div className="overflow-y-auto max-h-[calc(80vh-120px)] space-y-6">
{/* 기본 정보 */}
<div className="grid grid-cols-2 gap-4 p-4 bg-gray-50 rounded-lg">
<div>