diff options
Diffstat (limited to 'lib/general-contracts/detail/general-contract-detail.tsx')
| -rw-r--r-- | lib/general-contracts/detail/general-contract-detail.tsx | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/lib/general-contracts/detail/general-contract-detail.tsx b/lib/general-contracts/detail/general-contract-detail.tsx index 7c01fb16..9d9f35bd 100644 --- a/lib/general-contracts/detail/general-contract-detail.tsx +++ b/lib/general-contracts/detail/general-contract-detail.tsx @@ -3,19 +3,20 @@ import { useState, useEffect } from 'react' import { useParams } from 'next/navigation' import Link from 'next/link' -import { getContractById } from '../service' +import { getContractById, getSubcontractChecklist } from '../service' import { GeneralContractInfoHeader } from './general-contract-info-header' import { Alert, AlertDescription } from '@/components/ui/alert' import { Button } from '@/components/ui/button' import { AlertCircle, ArrowLeft } from 'lucide-react' import { Skeleton } from '@/components/ui/skeleton' import { ContractItemsTable } from './general-contract-items-table' -import { SubcontractChecklist } from './subcontract-checklist' +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' export default function ContractDetailPage() { const params = useParams() @@ -24,14 +25,30 @@ export default function ContractDetailPage() { const [contract, setContract] = useState<Record<string, unknown> | null>(null) const [loading, setLoading] = useState(true) const [error, setError] = useState<string | null>(null) + const [showApprovalDialog, setShowApprovalDialog] = useState(false) + const [subcontractChecklistData, setSubcontractChecklistData] = useState<any>(null) useEffect(() => { const fetchContract = async () => { try { setLoading(true) setError(null) + + // 계약 기본 정보 로드 const contractData = await getContractById(contractId!) setContract(contractData) + + // 하도급법 체크리스트 데이터 로드 + try { + const checklistData = await getSubcontractChecklist(contractId!) + if (checklistData.success && checklistData.data) { + setSubcontractChecklistData(checklistData.data) + } + } catch (checklistError) { + console.log('하도급법 체크리스트 데이터 로드 실패:', checklistError) + // 체크리스트 로드 실패는 전체 로드를 실패시키지 않음 + } + } catch (err) { console.error('Error fetching contract:', err) setError('계약 정보를 불러오는 중 오류가 발생했습니다.') @@ -92,13 +109,22 @@ export default function ContractDetailPage() { 계약번호: {contract?.contractNumber as string} (Rev.{contract?.revision as number}) </p> </div> - {/* 계약목록으로 돌아가기 버튼 */} - <Button asChild variant="outline" size="sm"> - <Link href="/evcp/general-contracts"> - <ArrowLeft className="h-4 w-4 mr-2" /> - 계약목록으로 돌아가기 - </Link> - </Button> + <div className="flex gap-2"> + {/* 계약승인요청 버튼 */} + <Button + onClick={() => setShowApprovalDialog(true)} + className="bg-blue-600 hover:bg-blue-700" + > + 계약승인요청 + </Button> + {/* 계약목록으로 돌아가기 버튼 */} + <Button asChild variant="outline" size="sm"> + <Link href="/evcp/general-contracts"> + <ArrowLeft className="h-4 w-4 mr-2" /> + 계약목록으로 돌아가기 + </Link> + </Button> + </div> </div> {/* 계약 정보 헤더 */} {contract && <GeneralContractInfoHeader contract={contract} />} @@ -130,9 +156,9 @@ export default function ContractDetailPage() { {/* 하도급법 자율점검 체크리스트 */} <SubcontractChecklist contractId={contract.id as number} - onDataChange={() => {}} + onDataChange={(data) => setSubcontractChecklistData(data)} readOnly={false} - initialData={undefined} + initialData={subcontractChecklistData} /> {/* Communication Channel */} <CommunicationChannel contractId={Number(contract.id)} /> @@ -147,6 +173,15 @@ export default function ContractDetailPage() { <OffsetDetails contractId={Number(contract.id)} /> </div> )} + + {/* 계약승인요청 다이얼로그 */} + {contract && ( + <ContractApprovalRequestDialog + contract={contract} + open={showApprovalDialog} + onOpenChange={setShowApprovalDialog} + /> + )} </div> ) } |
