import { Building2, Package, DollarSign, Calendar, FileText } from 'lucide-react'
import { formatDate } from '@/lib/utils'
interface GeneralContractInfoHeaderProps {
contract: {
id: number
contractNumber: string
revision: number
status: string
category: string
type: string
name: string
vendorName?: string
vendorCode?: string
startDate: string
endDate: string
validityEndDate: string
contractAmount?: string
currency?: string
registeredAt: string
signedAt?: string
linkedRfqOrItb?: string
linkedBidNumber?: string
linkedPoNumber?: string
}
}
const statusLabels = {
'Draft': '임시저장',
'Request to Review': '조건검토요청',
'Confirm to Review': '조건검토완료',
'Contract Accept Request': '계약승인요청',
'Complete the Contract': '계약체결',
'Reject to Accept Contract': '계약승인거절',
'Contract Delete': '계약폐기',
'PCR Request': 'PCR요청',
'VO Request': 'VO요청',
'PCR Accept': 'PCR승인',
'PCR Reject': 'PCR거절'
}
const categoryLabels = {
'단가계약': '단가계약',
'일반계약': '일반계약',
'매각계약': '매각계약'
}
const typeLabels = {
'UP': '자재단가계약',
'LE': '임대차계약',
'IL': '개별운송계약',
'AL': '연간운송계약',
'OS': '외주용역계약',
'OW': '도급계약',
'LO': 'LOI',
'FA': 'FA',
'SC': '납품합의계약',
'OF': '클레임상계계약',
'AW': '사전작업합의',
'AD': '사전납품합의',
'SG': '임치(물품보관)계약',
'SR': '폐기물매각계약',
'SP': 'S-PEpC'
}
export function GeneralContractInfoHeader({ contract }: GeneralContractInfoHeaderProps) {
return (
{/* 3개 섹션을 Grid로 배치 - 각 섹션이 동일한 width로 꽉 채움 */}
{/* 왼쪽 섹션: 계약 기본 정보 */}
{/* 계약번호 */}
계약번호 (Rev.)
{contract.contractNumber} (Rev.{contract.revision})
{/* 계약명 */}
{/* 협력업체 */}
협력업체
{contract.vendorName || '협력업체 미선택'}
{contract.vendorCode && (
({contract.vendorCode})
)}
{/* 계약금액 */}
{contract.contractAmount && (
계약금액
{new Intl.NumberFormat('ko-KR', {
style: 'currency',
currency: contract.currency || 'KRW',
}).format(Number(contract.contractAmount))}
)}
{/* 가운데 섹션: 계약 분류 정보 */}
계약상태
{statusLabels[contract.status as keyof typeof statusLabels] || contract.status}
계약구분
{categoryLabels[contract.category as keyof typeof categoryLabels] || contract.category}
계약종류
{typeLabels[contract.type as keyof typeof typeLabels] || contract.type}
통화
{contract.currency || 'KRW'}
{/* 오른쪽 섹션: 일정 및 연계 정보 */}
일정 및 연계 정보
계약기간
{formatDate(contract.startDate, 'KR')} ~ {formatDate(contract.endDate, 'KR')}
계약 유효기간
{formatDate(contract.validityEndDate, 'KR')}
{contract.signedAt && (
계약체결일
{formatDate(contract.signedAt, 'KR')}
)}
{contract.registeredAt && (
등록일
{formatDate(contract.registeredAt, 'KR')}
)}
{(contract.linkedRfqOrItb || contract.linkedBidNumber || contract.linkedPoNumber) && (
연계 정보
{contract.linkedRfqOrItb && (
연계 견적/입찰번호
{contract.linkedRfqOrItb}
)}
{contract.linkedBidNumber && (
연계 BID번호
{contract.linkedBidNumber}
)}
{contract.linkedPoNumber && (
연계 PO번호
{contract.linkedPoNumber}
)}
)}
)
}