From 534266f90a5ca846767dc2a990c77f1112a33d9c Mon Sep 17 00:00:00 2001 From: dujinkim Date: Mon, 15 Sep 2025 10:36:26 +0000 Subject: (임수민) serp 구현 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/s-erp-import/import-card.tsx | 92 +++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 components/s-erp-import/import-card.tsx (limited to 'components/s-erp-import/import-card.tsx') diff --git a/components/s-erp-import/import-card.tsx b/components/s-erp-import/import-card.tsx new file mode 100644 index 00000000..43f2aa35 --- /dev/null +++ b/components/s-erp-import/import-card.tsx @@ -0,0 +1,92 @@ +'use client' + +import * as React from 'react' +import { importExcel } from '@/lib/s-erp-import/actions' +import { RPAInfo } from './rpa-info' + +export function ImportButton({ tableName, count }: { tableName: string; count: number }) { + const [pending, setPending] = React.useState(false) + const [currentCount, setCurrentCount] = React.useState(count) + const [statusMsg, setStatusMsg] = React.useState(null) + const fileInputRef = React.useRef(null) + + const onClickImport = () => fileInputRef.current?.click() + + const onFileChange = async (e: React.ChangeEvent) => { + const file = e.target.files?.[0] + if (!file) return + setPending(true) + try { + console.log(`[SAP Import] 시작: ${tableName}, 파일: ${file.name}, 크기: ${file.size} bytes`) + const res = await importExcel(tableName, file) + if (res?.success) { + setCurrentCount((c) => c + (res.inserted ?? 0)) + console.log(`[SAP Import] 성공: ${tableName}, 입력 건수: ${res.inserted ?? 0}`) + setStatusMsg(`${res.inserted ?? 0}건`) + } else { + console.error(`[SAP Import] 실패: ${tableName}, 사유: ${res?.message ?? '임포트 실패'}`) + if ((res as any)?.unknownHeaders) { + console.error(`[SAP Import] 매핑 실패 헤더:`, (res as any).unknownHeaders) + } + if ((res as any)?.errors) { + console.error(`[SAP Import] 유효성 오류 상세:`, (res as any).errors) + } + setStatusMsg(`데이터 저장에 실패하였습니다.`) + } + } catch (err: any) { + console.error(`[SAP Import] 예외 발생: ${tableName}, 에러: ${err?.message ?? err}`) + setStatusMsg(`데이터 저장에 실패하였습니다.`) + } finally { + console.log(`[SAP Import] 종료: ${tableName}`) + setPending(false) + e.target.value = '' + } + } + + return ( +
+
+ + {statusMsg && ( + + {statusMsg} + + )} + +
+ +
+ ) +} + + -- cgit v1.2.3