diff options
Diffstat (limited to 'lib/basic-contract/viewer/basic-contract-sign-viewer.tsx')
| -rw-r--r-- | lib/basic-contract/viewer/basic-contract-sign-viewer.tsx | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx b/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx index 8185e33e..98204763 100644 --- a/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx +++ b/lib/basic-contract/viewer/basic-contract-sign-viewer.tsx @@ -54,6 +54,8 @@ interface BasicContractSignViewerProps { mode?: 'vendor' | 'buyer'; // 추가된 mode prop t?: (key: string) => string; negotiationCompletedAt?: Date | null; // 협의 완료 시간 추가 + vendorTaxId?: string; + vendorCountry?: string; } // 자동 서명 필드 생성을 위한 타입 정의 @@ -694,6 +696,8 @@ export function BasicContractSignViewer({ mode = 'vendor', // 기본값 vendor t = (key: string) => key, negotiationCompletedAt, + vendorTaxId, + vendorCountry, }: BasicContractSignViewerProps) { const { toast } = useToast(); @@ -1255,6 +1259,12 @@ export function BasicContractSignViewer({ const currentInstance = webViewerInstance.current || instance; if (!currentInstance) return; + // 내자(KR)인 경우 TrustNet 공동인증 서명 팝업 호출 (구매자 모드가 아닐 때만) + if (mode === 'vendor' && vendorCountry === 'KR') { + handleCertificateSign(); + return; + } + try { const { documentViewer, annotationManager } = currentInstance.Core; const doc = documentViewer.getDocument(); @@ -1325,6 +1335,31 @@ export function BasicContractSignViewer({ } }; + const handleCertificateSign = () => { + if (!contractId) { + toast({ title: "계약서 ID가 없습니다.", variant: "destructive" }); + return; + } + + // 사업자번호가 없으면 입력하도록 안내 (혹은 그냥 빈값으로 열어서 직접 입력하게 할 수도 있음) + // 여기서는 경고만 하고 열어줌 + if (!vendorTaxId) { + // toast({ title: "사업자번호 정보를 불러올 수 없습니다.", description: "팝업에서 직접 입력해주세요.", variant: "default" }); + } + + const width = 600; + const height = 700; + const left = window.screenX + (window.outerWidth - width) / 2; + const top = window.screenY + (window.outerHeight - height) / 2; + + const ssnParam = vendorTaxId ? `&ssn=${encodeURIComponent(vendorTaxId)}` : ''; + const baseUrl = `${window.location.protocol}//${window.location.hostname}`; + const apiOrigin = encodeURIComponent(window.location.origin); + const url = `${baseUrl}/trustnet?contractId=${contractId}${ssnParam}&autoStart=true&apiOrigin=${apiOrigin}`; + + window.open(url, 'TrustNetSign', `width=${width},height=${height},top=${top},left=${left}`); + }; + // 서명 상태 표시 컴포넌트 - 처리 중이거나 오류일 때만 표시 const SignatureFieldsStatus = () => { // 처리 중이거나 오류가 있을 때만 표시 (완료 후에는 자동으로 사라짐) |
