summaryrefslogtreecommitdiff
path: root/components/additional-info/join-form.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'components/additional-info/join-form.tsx')
-rw-r--r--components/additional-info/join-form.tsx209
1 files changed, 109 insertions, 100 deletions
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>
)}