From 12e936c0b45ffa1c8f3c02ff77961212767be9a7 Mon Sep 17 00:00:00 2001
From: dujinkim <dujin.kim@dtsolution.co.kr>
Date: Tue, 26 Aug 2025 01:17:56 +0000
Subject: (대표님) 가입, 기본계약, 벤더 (최겸) 기술영업 아이템 관련
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 components/additional-info/join-form.tsx | 209 ++++++++++++++++---------------
 1 file changed, 109 insertions(+), 100 deletions(-)

(limited to 'components/additional-info/join-form.tsx')

diff --git a/components/additional-info/join-form.tsx b/components/additional-info/join-form.tsx
index 90effddb..4f3998e3 100644
--- a/components/additional-info/join-form.tsx
+++ b/components/additional-info/join-form.tsx
@@ -755,6 +755,113 @@ export function InfoForm() {
 
           <Separator />
 
+          {/* 서명/직인 등록 섹션 - 독립적으로 사용 가능 */}
+          <Card>
+            <CardHeader>
+              <CardTitle className="flex items-center gap-2">
+                <CheckCircle className="w-5 h-5" />
+                회사 서명/직인 등록 (선택사항)
+              </CardTitle>
+              <CardDescription>
+                회사의 공식 서명이나 직인을 등록하여 계약서 및 공식 문서에 사용할 수 있습니다.
+              </CardDescription>
+            </CardHeader>
+            <CardContent className="space-y-4">
+              {/* 현재 등록된 서명/직인 파일 표시 (한 개만) */}
+              {(existingSignatureFiles.length > 0 || signatureFiles.length > 0) && (
+                <div className="space-y-2">
+                  <div className="flex items-center gap-2 p-2 border rounded-lg bg-green-50">
+                    <CheckCircle className="w-4 h-4 text-green-600" />
+                    <span className="text-sm text-green-800">서명/직인 등록됨</span>
+                  </div>
+                  
+                  {/* 기존 등록된 서명/직인 (첫 번째만 표시) */}
+                  {existingSignatureFiles.length > 0 && signatureFiles.length === 0 && (
+                    <div className="p-2 border rounded-lg">
+                      {(() => {
+                        const file = existingSignatureFiles[0];
+                        const fileInfo = getFileInfo(file.fileName);
+                        return (
+                          <div className="flex items-center gap-2">
+                            <FileListIcon />
+                            <div className="flex-1">
+                              <div className="text-xs font-medium">{fileInfo.icon} {file.fileName}</div>
+                              <div className="text-xs text-muted-foreground">
+                                {getAttachmentTypeLabel(file.attachmentType)} | {file.fileSize ? formatFileSize(file.fileSize) : '크기 정보 없음'}
+                              </div>
+                            </div>
+                            <div className="flex items-center space-x-1">
+                              <FileListAction 
+                                onClick={() => handleDownloadFile(file)}
+                                disabled={isDownloading}
+                              >
+                                {isDownloading ? <Loader2 className="h-3 w-3 animate-spin" /> : <Download className="h-3 w-3" />}
+                              </FileListAction>
+                              <FileListAction onClick={() => handleDeleteExistingFile(file.id)}>
+                                <X className="h-3 w-3" />
+                              </FileListAction>
+                            </div>
+                          </div>
+                        );
+                      })()}
+                    </div>
+                  )}
+                  
+                  {/* 새로 업로드된 서명/직인 */}
+                  {signatureFiles.length > 0 && (
+                    <div className="p-2 border rounded-lg bg-blue-50">
+                      {(() => {
+                        const file = signatureFiles[0];
+                        return (
+                          <div className="flex items-center gap-2">
+                            <FileListIcon />
+                            <div className="flex-1">
+                              <div className="text-xs font-medium">{file.name}</div>
+                              <div className="text-xs text-muted-foreground">
+                                서명/직인 (새 파일) | {prettyBytes(file.size)}
+                              </div>
+                            </div>
+                            <FileListAction onClick={removeSignatureFile}>
+                              <X className="h-3 w-3" />
+                            </FileListAction>
+                          </div>
+                        );
+                      })()}
+                    </div>
+                  )}
+                </div>
+              )}
+              
+              {/* 서명/직인 업로드 드롭존 */}
+              <Dropzone
+                maxSize={MAX_FILE_SIZE}
+                onDropAccepted={handleSignatureDropAccepted}
+                onDropRejected={handleSignatureDropRejected}
+                disabled={isSubmitting}
+              >
+                {({ maxSize }) => (
+                  <DropzoneZone className="flex justify-center min-h-[50px]">
+                    <DropzoneInput />
+                    <div className="flex items-center gap-2">
+                      <Upload className="w-4 h-4" />
+                      <div className="text-sm">
+                        <DropzoneTitle>
+                          {existingSignatureFiles.length > 0 || signatureFiles.length > 0 
+                            ? "서명/직인 교체" 
+                            : "서명/직인 업로드"
+                          }
+                        </DropzoneTitle>
+                        <DropzoneDescription>
+                          한 개 파일만 업로드 가능 {maxSize ? ` | 최대: ${prettyBytes(maxSize)}` : ""}
+                        </DropzoneDescription>
+                      </div>
+                    </div>
+                  </DropzoneZone>
+                )}
+              </Dropzone>
+            </CardContent>
+          </Card>
+
           {/* 정규업체 등록 현황 섹션 */}
           {registrationData ? (
             <Card>
@@ -781,104 +888,6 @@ export function InfoForm() {
                   </div>
                 )}
 
-                {/* 서명/직인 등록 */}
-                <div className="space-y-2">
-                  <h4 className="font-medium text-sm">회사 서명/직인 등록</h4>
-                  
-                  {/* 현재 등록된 서명/직인 파일 표시 (한 개만) */}
-                  {(existingSignatureFiles.length > 0 || signatureFiles.length > 0) && (
-                    <div className="space-y-2">
-                      <div className="flex items-center gap-2 p-2 border rounded-lg bg-green-50">
-                        <CheckCircle className="w-4 h-4 text-green-600" />
-                        <span className="text-sm text-green-800">서명/직인 등록됨</span>
-                      </div>
-                      
-                      {/* 기존 등록된 서명/직인 (첫 번째만 표시) */}
-                      {existingSignatureFiles.length > 0 && signatureFiles.length === 0 && (
-                        <div className="p-2 border rounded-lg">
-                          {(() => {
-                            const file = existingSignatureFiles[0];
-                            const fileInfo = getFileInfo(file.fileName);
-                            return (
-                              <div className="flex items-center gap-2">
-                                <FileListIcon />
-                                <div className="flex-1">
-                                  <div className="text-xs font-medium">{fileInfo.icon} {file.fileName}</div>
-                                  <div className="text-xs text-muted-foreground">
-                                    {getAttachmentTypeLabel(file.attachmentType)} | {file.fileSize ? formatFileSize(file.fileSize) : '크기 정보 없음'}
-                                  </div>
-                                </div>
-                                <div className="flex items-center space-x-1">
-                                  <FileListAction 
-                                    onClick={() => handleDownloadFile(file)}
-                                    disabled={isDownloading}
-                                  >
-                                    {isDownloading ? <Loader2 className="h-3 w-3 animate-spin" /> : <Download className="h-3 w-3" />}
-                                  </FileListAction>
-                                  <FileListAction onClick={() => handleDeleteExistingFile(file.id)}>
-                                    <X className="h-3 w-3" />
-                                  </FileListAction>
-                                </div>
-                              </div>
-                            );
-                          })()}
-                        </div>
-                      )}
-                      
-                      {/* 새로 업로드된 서명/직인 */}
-                      {signatureFiles.length > 0 && (
-                        <div className="p-2 border rounded-lg bg-blue-50">
-                          {(() => {
-                            const file = signatureFiles[0];
-                            return (
-                              <div className="flex items-center gap-2">
-                                <FileListIcon />
-                                <div className="flex-1">
-                                  <div className="text-xs font-medium">{file.name}</div>
-                                  <div className="text-xs text-muted-foreground">
-                                    서명/직인 (새 파일) | {prettyBytes(file.size)}
-                                  </div>
-                                </div>
-                                <FileListAction onClick={removeSignatureFile}>
-                                  <X className="h-3 w-3" />
-                                </FileListAction>
-                              </div>
-                            );
-                          })()}
-                        </div>
-                      )}
-                    </div>
-                  )}
-                  
-                  {/* 서명/직인 업로드 드롭존 */}
-                  <Dropzone
-                    maxSize={MAX_FILE_SIZE}
-                    onDropAccepted={handleSignatureDropAccepted}
-                    onDropRejected={handleSignatureDropRejected}
-                    disabled={isSubmitting}
-                  >
-                    {({ maxSize }) => (
-                      <DropzoneZone className="flex justify-center min-h-[50px]">
-                        <DropzoneInput />
-                        <div className="flex items-center gap-2">
-                          <Upload className="w-4 h-4" />
-                          <div className="text-sm">
-                            <DropzoneTitle>
-                              {existingSignatureFiles.length > 0 || signatureFiles.length > 0 
-                                ? "서명/직인 교체" 
-                                : "서명/직인 업로드"
-                              }
-                            </DropzoneTitle>
-                            <DropzoneDescription>
-                              한 개 파일만 업로드 가능 {maxSize ? ` | 최대: ${prettyBytes(maxSize)}` : ""}
-                            </DropzoneDescription>
-                          </div>
-                        </div>
-                      </DropzoneZone>
-                    )}
-                  </Dropzone>
-                </div>
-
                 {/* 액션 버튼들 */}
                 <div className="grid grid-cols-1 md:grid-cols-2 gap-3">
                   <Button
@@ -912,12 +921,12 @@ export function InfoForm() {
                   현재 정규업체 등록 진행 상황이 없습니다.
                 </CardDescription>
               </CardHeader>
-              <CardContent>
+              {/* <CardContent>
                 <div className="text-center py-4 text-muted-foreground">
                   <p>이미 정규업체로 등록되어 있거나, 아직 정규업체 등록을 진행하지 않았습니다.</p>
                   <p className="text-sm mt-1">정규업체 등록이 필요한 경우 담당자에게 문의하세요.</p>
                 </div>
-              </CardContent>
+              </CardContent> */}
             </Card>
           )}
 
-- 
cgit v1.2.3

