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': '폐기물매각계약' } export function GeneralContractInfoHeader({ contract }: GeneralContractInfoHeaderProps) { return (
{/* 3개 섹션을 Grid로 배치 - 각 섹션이 동일한 width로 꽉 채움 */}
{/* 왼쪽 섹션: 계약 기본 정보 */}
{/* 계약번호 */}
계약번호 (Rev.)
{contract.contractNumber} (Rev.{contract.revision})
{/* 계약명 */}
계약명
{contract.name}
{/* 협력업체 */}
협력업체
{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}
)}
)}
) }