summaryrefslogtreecommitdiff
path: root/lib/general-contracts/detail/general-contract-detail.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/general-contracts/detail/general-contract-detail.tsx')
-rw-r--r--lib/general-contracts/detail/general-contract-detail.tsx81
1 files changed, 58 insertions, 23 deletions
diff --git a/lib/general-contracts/detail/general-contract-detail.tsx b/lib/general-contracts/detail/general-contract-detail.tsx
index 8e7a7aff..f2a916f8 100644
--- a/lib/general-contracts/detail/general-contract-detail.tsx
+++ b/lib/general-contracts/detail/general-contract-detail.tsx
@@ -12,11 +12,11 @@ import { Skeleton } from '@/components/ui/skeleton'
import { ContractItemsTable } from './general-contract-items-table'
import { SubcontractChecklist } from './general-contract-subcontract-checklist'
import { ContractBasicInfo } from './general-contract-basic-info'
-import { CommunicationChannel } from './general-contract-communication-channel'
-import { Location } from './general-contract-location'
-import { FieldServiceRate } from './general-contract-field-service-rate'
-import { OffsetDetails } from './general-contract-offset-details'
import { ContractApprovalRequestDialog } from './general-contract-approval-request-dialog'
+import { ContractStorageInfo } from './general-contract-storage-info'
+import { ContractYardEntryInfo } from './general-contract-yard-entry-info'
+import { ContractReviewComments } from './general-contract-review-comments'
+import { ContractReviewRequestDialog } from './general-contract-review-request-dialog'
export default function ContractDetailPage() {
const params = useParams()
@@ -26,7 +26,8 @@ export default function ContractDetailPage() {
const [loading, setLoading] = useState(true)
const [error, setError] = useState<string | null>(null)
const [showApprovalDialog, setShowApprovalDialog] = useState(false)
- const [subcontractChecklistData, setSubcontractChecklistData] = useState<any>(null)
+ const [subcontractChecklistData, setSubcontractChecklistData] = useState<Record<string, unknown> | null>(null)
+ const [showReviewDialog, setShowReviewDialog] = useState(false)
useEffect(() => {
const fetchContract = async () => {
@@ -110,13 +111,24 @@ export default function ContractDetailPage() {
</p>
</div>
<div className="flex gap-2">
+ {/* 조건검토요청 버튼 - Draft 상태일 때만 표시 */}
+ {contract?.status === 'Draft' && (
+ <Button
+ onClick={() => setShowReviewDialog(true)}
+ className="bg-green-600 hover:bg-green-700"
+ >
+ 조건검토요청
+ </Button>
+ )}
{/* 계약승인요청 버튼 */}
- <Button
- onClick={() => setShowApprovalDialog(true)}
- className="bg-blue-600 hover:bg-blue-700"
- >
- 계약승인요청
- </Button>
+ <>
+ <Button
+ onClick={() => setShowApprovalDialog(true)}
+ className="bg-blue-600 hover:bg-blue-700"
+ >
+ 계약승인요청
+ </Button>
+ </>
{/* 계약목록으로 돌아가기 버튼 */}
<Button asChild variant="outline" size="sm">
<Link href="/evcp/general-contracts">
@@ -150,7 +162,8 @@ export default function ContractDetailPage() {
onItemsChange={() => {}}
onTotalAmountChange={() => {}}
availableBudget={0}
- readOnly={contract?.contractScope === '단가' || contract?.contractScope === '물량(실적)'}
+ readOnly={false}
+ contractScope={contract?.contractScope as string || ''}
/>
{/* 하도급법 자율점검 체크리스트 */}
<SubcontractChecklist
@@ -158,18 +171,31 @@ export default function ContractDetailPage() {
onDataChange={(data) => setSubcontractChecklistData(data)}
readOnly={false}
initialData={subcontractChecklistData}
+ contractType={contract?.type as string || ''}
+ vendorCountry={(contract as any)?.vendorCountry || 'KR'}
+ />
+
+ {/* 임치(물품보관)계약 상세 정보 - SG 계약종류일 때만 표시 */}
+ {contract?.type === 'SG' && (
+ <ContractStorageInfo
+ contractId={contract.id as number}
+ readOnly={false}
+ />
+ )}
+
+ {/* 사외업체 야드투입 정보 - externalYardEntry가 'Y'일 때만 표시 */}
+ {contract?.externalYardEntry === 'Y' && (
+ <ContractYardEntryInfo
+ contractId={contract.id as number}
+ readOnly={false}
+ />
+ )}
+
+ {/* 계약 조건 검토 의견 섹션 */}
+ <ContractReviewComments
+ contractId={contract.id as number}
+ contractStatus={contract.status as string}
/>
- {/* Communication Channel */}
- <CommunicationChannel contractId={Number(contract.id)} />
-
- {/* Location */}
- <Location contractId={Number(contract.id)} />
-
- {/* Field Service Rate */}
- <FieldServiceRate contractId={Number(contract.id)} />
-
- {/* Offset Details */}
- <OffsetDetails contractId={Number(contract.id)} />
</div>
)}
@@ -181,6 +207,15 @@ export default function ContractDetailPage() {
onOpenChange={setShowApprovalDialog}
/>
)}
+
+ {/* 조건검토요청 다이얼로그 */}
+ {contract && (
+ <ContractReviewRequestDialog
+ contract={contract}
+ open={showReviewDialog}
+ onOpenChange={setShowReviewDialog}
+ />
+ )}
</div>
)
}