'use client' import { VerticalTable } from '@/components/ui/verticalTable'; import React, { useState, useEffect } from 'react' import InputSection from '../InputSection'; import { handleInputChange } from '../common'; import { getData } from "@/components/lib/api"; import useStore from '../../../../store/useStore'; // 하수관로 const inputColumn = [ { id: "instlMbdyCd", title: "설치주제", type: "select", options: ["BTL", "재정사업"] }, { id: "swtrmtZoneNm", title: "처리구역", type: "input" }, { id: "mltvZoneNm", title: "배수구역", type: "input" }, { id: "mltvDtdvNm", title: "배수분구", type: "input" }, { id: "lineCd", title: "지선/간선", type: "select", options: ["지선", "간선"] }, { id: "floCd", title: "흐름방식", type: "select", options: ["자연유하", "압송"] }, { id: "layCd", title: "매설위치", type: "select", options: ["도로", "하상"] }, ]; type operationDataType = { year: string; type: string, bizInfoNm: string, bizType: string }; const MsSwagePpl = ({ featureData, onSaveClick }: { featureData: any, onSaveClick?: () => void }) => { const [formData, setFormData] = useState({}); const [repairData, setRepairData] = useState([]); const [cleaningData, setCleaningData] = useState([]); const [inspectionData, setInspectionData] = useState([]); const dataMap = { repair: { data: repairData, setData: setRepairData }, cleaning: { data: cleaningData, setData: setCleaningData }, inspection: { data: inspectionData, setData: setInspectionData }, }; const { BIZ_SE_CD, BIZ_TY_CD } = useStore(); // 마운트 및 업데이트 시 API 호출 useEffect(() => { if (featureData) { setFormData(featureData); } const fetchAll = async () => { const operationData = await getData(`v1/bizInfo/bizByFclt?mngInstCd=${featureData?.mng_inst_cd}&fcltMngNo=${featureData?.fclt_mng_no}&page=0&size=1`); let inspectionArr: operationDataType[] = []; let cleaningArr: operationDataType[] = []; let repairArr: operationDataType[] = []; if (Array.isArray(operationData)) { operationData.forEach(item => { if (!item.flfmt_yr) return; // biz_se_cd에 해당하는 type명 찾기 const seCodeObj = BIZ_SE_CD.find(code => code.lwpoCd === item.biz_se_cd); const tyCodeObj = BIZ_TY_CD.find(code => code.lwpoCd === item.biz_ty_cd); const seTypeName = seCodeObj ? seCodeObj.lwpoCdNm : ""; const tyTypeName = tyCodeObj ? tyCodeObj.lwpoCdNm : ""; switch (item.biz_se_cd) { case "100": inspectionArr.push({ year: String(item.flfmt_yr), type: seTypeName, bizInfoNm: String(item.biz_info_nm), bizType: tyTypeName, }); break; case "203": cleaningArr.push({ year: String(item.flfmt_yr), type: seTypeName, bizInfoNm: String(item.biz_info_nm), bizType: tyTypeName, }); break; case "200": case "201": case "204": repairArr.push({ year: String(item.flfmt_yr), type: seTypeName, bizInfoNm: String(item.biz_info_nm), bizType: tyTypeName, }); break; } }); } setInspectionData(inspectionArr); setCleaningData(cleaningArr); setRepairData(repairArr); console.log('inspectionArr', inspectionArr); console.log('cleaningArr', cleaningArr); console.log('repairArr', repairArr); }; fetchAll(); }, [featureData]); // 폼 데이터가 변경될 때 호출될 핸들러 const handleFormDataChange = (newFormData: any) => { setFormData(newFormData); }; // 저장 버튼 클릭 시 최신 formData를 부모에게 전달 const handleSaveClick = () => { if (onSaveClick) { // 저장 전에 formData를 부모 컴포넌트의 handleSaveClick에 전달 onSaveClick(); } }; return ( <> handleInputChange(section, index, field, value, dataMap)} /> handleInputChange(section, index, field, value, dataMap)} /> handleInputChange(section, index, field, value, dataMap)} /> ) } export default MsSwagePpl