From ba8cd44a0ed2c613a5f2cee06bfc9bd0f61f21c7 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Fri, 7 Nov 2025 08:39:04 +0000 Subject: (최겸) 입찰/견적 수정사항 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/general-contract-info-header.tsx | 211 +++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 lib/general-contracts_old/detail/general-contract-info-header.tsx (limited to 'lib/general-contracts_old/detail/general-contract-info-header.tsx') diff --git a/lib/general-contracts_old/detail/general-contract-info-header.tsx b/lib/general-contracts_old/detail/general-contract-info-header.tsx new file mode 100644 index 00000000..9be9840d --- /dev/null +++ b/lib/general-contracts_old/detail/general-contract-info-header.tsx @@ -0,0 +1,211 @@ +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': '도급계약', + 'IS': '검사계약', + 'LO': 'LOI', + 'FA': 'FA', + 'SC': '납품합의계약', + 'OF': '클레임상계계약', + 'AW': '사전작업합의', + 'AD': '사전납품합의', + 'AM': '설계계약', + 'SC_SELL': '폐기물매각계약' +} + +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}
+
+ )} +
+ )} +
+
+
+
+ ) +} -- cgit v1.2.3