From ee57cc221ff2edafd3c0f12a181214c602ed257e Mon Sep 17 00:00:00 2001 From: dujinkim Date: Tue, 22 Jul 2025 02:57:00 +0000 Subject: (대표님, 최겸) 이메일 템플릿, 벤더데이터 변경사항 대응, 기술영업 변경요구사항 구현 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ship-vendor-document/add-attachment-dialog.tsx | 40 ++++++------ .../ship-vendor-document/new-revision-dialog.tsx | 62 +++++++++--------- .../user-vendor-document-table-container.tsx | 76 +++++++++++----------- 3 files changed, 89 insertions(+), 89 deletions(-) (limited to 'components/ship-vendor-document') diff --git a/components/ship-vendor-document/add-attachment-dialog.tsx b/components/ship-vendor-document/add-attachment-dialog.tsx index 2f2467a3..a285b4de 100644 --- a/components/ship-vendor-document/add-attachment-dialog.tsx +++ b/components/ship-vendor-document/add-attachment-dialog.tsx @@ -55,15 +55,15 @@ const ACCEPTED_FILE_TYPES = [ const attachmentUploadSchema = z.object({ attachments: z .array(z.instanceof(File)) - .min(1, "최소 1개의 파일을 업로드해주세요") - .max(10, "최대 10개의 파일까지 업로드 가능합니다") + .min(1, "Please upload at least 1 file") + .max(10, "Maximum 10 files can be uploaded") .refine( (files) => files.every((file) => file.size <= MAX_FILE_SIZE), - "파일 크기는 50MB 이하여야 합니다" + "File size must be 50MB or less" ) .refine( (files) => files.every((file) => ACCEPTED_FILE_TYPES.includes(file.type)), - "지원하지 않는 파일 형식입니다" + "Unsupported file format" ), }) @@ -128,10 +128,10 @@ function FileUploadArea({ >

- 추가할 파일을 드래그하여 놓거나 클릭하여 선택하세요 + Drag files to add here or click to select

- PDF, Word, Excel, 이미지, 텍스트, ZIP 파일 지원 (최대 50MB) + Supports PDF, Word, Excel, Image, Text, ZIP files (max 50MB)

0 && (
-

선택된 파일 ({files.length}개)

+

Selected Files ({files.length})

{files.map((file, index) => (
{ handleDialogClose() @@ -270,8 +270,8 @@ export function AddAttachmentDialog({ }, 1000) } catch (error) { - console.error('❌ 첨부파일 업로드 오류:', error) - toast.error(error instanceof Error ? error.message : "첨부파일 업로드 중 오류가 발생했습니다") + console.error('❌ Attachment upload error:', error) + toast.error(error instanceof Error ? error.message : "An error occurred while uploading attachments") } finally { setIsUploading(false) setTimeout(() => setUploadProgress(0), 2000) @@ -285,10 +285,10 @@ export function AddAttachmentDialog({ - 첨부파일 추가 + Add Attachments - 리비전 {revisionName}에 추가 첨부파일을 업로드합니다 + Upload additional attachments to revision {revisionName} @@ -302,7 +302,7 @@ export function AddAttachmentDialog({ name="attachments" render={({ field }) => ( - 첨부파일 + Attachments
- 업로드 진행률 + Upload Progress {uploadProgress.toFixed(0)}%
{uploadProgress === 100 && (
- 업로드 완료 + Upload Complete
)}
@@ -340,7 +340,7 @@ export function AddAttachmentDialog({ onClick={handleDialogClose} disabled={isUploading} > - 취소 + Cancel diff --git a/components/ship-vendor-document/new-revision-dialog.tsx b/components/ship-vendor-document/new-revision-dialog.tsx index 83c9c658..7adc0b3a 100644 --- a/components/ship-vendor-document/new-revision-dialog.tsx +++ b/components/ship-vendor-document/new-revision-dialog.tsx @@ -67,20 +67,20 @@ const ACCEPTED_FILE_TYPES = [ // drawingKind에 따른 동적 스키마 생성 const createRevisionUploadSchema = (drawingKind: string) => { const baseSchema = { - usage: z.string().min(1, "용도를 선택해주세요"), - revision: z.string().min(1, "리비전을 입력해주세요").max(50, "리비전은 50자 이내로 입력해주세요"), + usage: z.string().min(1, "Please select a usage"), + revision: z.string().min(1, "Please enter a revision").max(50, "Revision must be 50 characters or less"), comment: z.string().optional(), attachments: z .array(z.instanceof(File)) - .min(1, "최소 1개의 파일을 업로드해주세요") - .max(10, "최대 10개의 파일까지 업로드 가능합니다") + .min(1, "Please upload at least 1 file") + .max(10, "Maximum 10 files can be uploaded") .refine( (files) => files.every((file) => file.size <= MAX_FILE_SIZE), - "파일 크기는 50MB 이하여야 합니다" + "File size must be 50MB or less" ) .refine( (files) => files.every((file) => ACCEPTED_FILE_TYPES.includes(file.type)), - "지원하지 않는 파일 형식입니다" + "Unsupported file format" ), } @@ -88,7 +88,7 @@ const createRevisionUploadSchema = (drawingKind: string) => { if (drawingKind === 'B3') { return z.object({ ...baseSchema, - usageType: z.string().min(1, "용도 타입을 선택해주세요"), + usageType: z.string().min(1, "Please select a usage type"), }) } else { return z.object({ @@ -151,7 +151,7 @@ const getUsageTypeOptions = (usage: string) => { // 리비전 형식 가이드 생성 const getRevisionGuide = () => { - return "R01, R02, R03... 형식으로 입력하세요" + return "Enter in R01, R02, R03... format" } interface NewRevisionDialogProps { @@ -216,10 +216,10 @@ function FileUploadArea({ >

- 파일을 드래그하여 놓거나 클릭하여 선택하세요 + Drag files here or click to select

- PDF, Word, Excel, 이미지, 텍스트, ZIP 파일 지원 (최대 50MB) + Supports PDF, Word, Excel, Image, Text, ZIP files (max 50MB)

0 && (
-

선택된 파일 ({files.length}개)

+

Selected Files ({files.length})

{files.map((file, index) => (
{ handleDialogClose() @@ -405,8 +405,8 @@ export function NewRevisionDialog({ }, 1000) } catch (error) { - console.error('❌ 업로드 오류:', error) - toast.error(error instanceof Error ? error.message : "업로드 중 오류가 발생했습니다") + console.error('❌ Upload error:', error) + toast.error(error instanceof Error ? error.message : "An error occurred during upload") } finally { setIsUploading(false) setTimeout(() => setUploadProgress(0), 2000) @@ -420,11 +420,11 @@ export function NewRevisionDialog({ - 새 리비전 업로드 + Upload New Revision {documentTitle && ( -
문서: {documentTitle}
+
Document: {documentTitle}
)}
@@ -439,11 +439,11 @@ export function NewRevisionDialog({ name="usage" render={({ field }) => ( - 용도 + Usage - + @@ -493,7 +493,7 @@ export function NewRevisionDialog({ name="revision" render={({ field }) => ( - 리비전 + Revision ( - 코멘트 + Comment