From 1ac7c970417bfcb93bc389489ee4c8ae3d6cc838 Mon Sep 17 00:00:00 2001 From: swcho Date: Tue, 26 Aug 2025 09:59:10 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B9=A8=EC=9E=85=EC=88=98=20=EB=B6=84?= =?UTF-8?q?=EC=84=9D=20=EC=98=A4=EC=88=98=EA=B4=80=EB=A7=9D=EB=8F=84=20inp?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=EC=9D=B4=20=EB=A7=88=EC=9D=B8=EB=93=9C?= =?UTF-8?q?=EC=9B=90=20DB=EC=97=90=20=EC=A0=80=EC=9E=A5=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../(with-base-layout)/ii/irsetting/page.tsx | 64 ++++++++----------- apps/sn/app/components/ui/fileUploadForm.tsx | 15 +++-- 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/apps/sn/app/(with-base-layout)/ii/irsetting/page.tsx b/apps/sn/app/(with-base-layout)/ii/irsetting/page.tsx index d9d49d4c7..721931a0f 100644 --- a/apps/sn/app/(with-base-layout)/ii/irsetting/page.tsx +++ b/apps/sn/app/(with-base-layout)/ii/irsetting/page.tsx @@ -1,5 +1,5 @@ 'use client' -import { postData , postMutiPart} from '@/components/lib/api' +import { postData, postMutiPart } from '@/components/lib/api' import FileUploadForm from '@/components/ui/fileUploadForm' import FormSection from '@/components/ui/formSection' import { DateMonthPicker, filePicked, downloadExcel } from '@common/business_components/ui' @@ -52,11 +52,19 @@ const IrSetting = () => { const [sggCd, setSggCd] = useState('0'); // 시군구 코드 상태 const [sggName, setSggName] = useState(''); // 시군구 이름 상태 const [swtrmtFcltNm, setSwtrmtFcltNm] = useState(''); // 하수처리시설명 상태 - const [file, setFile] = useState(null); - - const handleFileChange = (e: any) => { - setFile(e.target.files[0]); - }; + const [uploadedFilesData, setUploadedFilesData] = useState([ + initialFileInfo, // 0: 오수관망도 + initialFileInfo, // 1: 수용가-맨홀 매칭결과 + initialFileInfo, // 2: 오수량 시간패턴 + initialFileInfo // 3: 유량자료 등록 + ]); + // selectedDate를 yyyyMM 문자열 형식으로 변경 + const [selectedDate, setSelectedDate] = useState(() => { + const now = new Date(); + const year = now.getFullYear(); + const month = String(now.getMonth() + 1).padStart(2, '0'); + return `${year}${month}`; + }); const { data: userInfo } = useQuery({ queryKey: [ENDPOINT.USER_SERVICE.USERS], @@ -77,21 +85,6 @@ const IrSetting = () => { } }) - const [uploadedFilesData, setUploadedFilesData] = useState([ - initialFileInfo, // 0: 오수관망도 - initialFileInfo, // 1: 수용가-맨홀 매칭결과 - initialFileInfo, // 2: 오수량 시간패턴 - initialFileInfo // 3: 유량자료 등록 - ]); - - // selectedDate를 yyyyMM 문자열 형식으로 변경 - const [selectedDate, setSelectedDate] = useState(() => { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, '0'); - return `${year}${month}`; - }); - // 폼 초기화 함수 const resetAllForms = () => { form.reset({ // react-hook-form 초기화 @@ -126,7 +119,7 @@ const IrSetting = () => { index: number, // FileUploadForm의 fileIdx 값 selectedFile: File | null, cd: string | null, - id: string | null + id: string | null, ) => { setUploadedFilesData(prevData => { const newData = [...prevData]; @@ -144,17 +137,7 @@ const IrSetting = () => { const registFile = async (analysisData: any) => { setIsLoadingResult(true); // 로딩 상태 시작 console.log("Submitting combined analysis data to backend:", analysisData); - // 추후 API 엔드포인트에 맞게 URL 수정 필요 - // const data = await postData('v1/inftwtAnls', analysisData); - const jsonBlob = new Blob([JSON.stringify(analysisData)], { - type: 'application/json' - }); - const formData = new FormData(); - formData.append('data', jsonBlob); - if (file) { - formData.append('inpFile', file); - } - const data = await postMutiPart('v1/inftwtAnls/savewithfile', formData); + const data = await postMutiPart('v1/inftwtAnls/savewithfile', analysisData); console.log("Response from backend:", data); if (data) { setIsLoadingResult(false); // 로딩 상태 시작 @@ -323,7 +306,7 @@ const IrSetting = () => { : null; // 새로운 JSON 데이터 생성 - const combinedAnalysisData = { + const jsonData = { ctpvCd: ctpvCd !== '0' ? String(ctpvCd).trim() : null, sggCd: sggCd !== '0' ? String(sggCd) : null, // 시군구코드 (선택값) swtrmtFcltNm: swtrmtFcltNm ?? null, @@ -344,7 +327,16 @@ const IrSetting = () => { tbSnRcptrInfo: rcptrInfoData, // 수용가 상수사용량 (없을 수 있음) }; - console.log("통합 분석 데이터 (JSON):", combinedAnalysisData); + const jsonBlob = new Blob([JSON.stringify(jsonData)], { + type: 'application/json' + }); + const combinedAnalysisData = new FormData(); + combinedAnalysisData.append('data', jsonBlob); + if (file1?.file) { + combinedAnalysisData.append('inpFile', file1.file); + } + + console.log("통합 분석 데이터 (JSON):", jsonData); // 수정된 registFile 함수를 호출하여 combinedAnalysisData를 전송합니다. await registFile(combinedAnalysisData); @@ -412,7 +404,7 @@ const IrSetting = () => { showPreview={true} accept={".inp"} fileIdx={0} /> - +