This commit is contained in:
2025-06-28 10:57:35 +09:00
parent 6487b3c11e
commit f5d8f8fe23
3 changed files with 52 additions and 51 deletions
@@ -1,7 +1,7 @@
import {useState, useEffect} from 'react';
const convertToTextValArray = (yyyymms: string[]): { text: string; val: string }[] => {
return yyyymms.map(dateStr => {
let yyyymms1 = yyyymms.map(dateStr => {
const year = dateStr.slice(0, 4);
const month = dateStr.slice(4, 6);
return {
@@ -9,6 +9,8 @@ const convertToTextValArray = (yyyymms: string[]): { text: string; val: string }
val: dateStr
};
});
yyyymms1.unshift({ val: '0', text: '선택' });
return yyyymms1;
};
const selectAplcnYms = async() => { // 상수사용월
try {
@@ -23,7 +25,6 @@ const selectAplcnYms = async() => { // 상수사용월
}
if (result && result.length > 0) {
//setAplcnYms(convertToTextValArray(result));
console.log("selectAplcnYms", result);
return convertToTextValArray(result);
}
@@ -31,6 +32,47 @@ const selectAplcnYms = async() => { // 상수사용월
console.error(error);
}
};
type InftwtAnls = {
inftwtAnlsSn:number;
aplcnYm: string;
enoCd: string;
ctpvCd: string;
sggCd: string;
swageTmplntCd: string;
swageTmplntNm: string;
swtrmtZoneCd: string;
swtrmtZoneNm: string;
atflCd: string;
atflId: string;
atflInpNm: string;
atflHrPttnNm: string;
atflMpngNm: string;
atflOilqNm: string;
atflNm: string;
drtwSwtcRt:number;
anlsInfo: string;
scsYn: string;
};
const selectInftwtAnls = async(aplcnYm:String) => { // 침입수분석
try {
//const result = await getData('v1/inftwtAnlsRslt/aplcnYm');
let result = null;
const res = await fetch('http://con.mind-one.co.kr:11083/sewerage-service/api/v1/inftwtAnls', {
method: "GET",
body: JSON.stringify({aplcnYm}),
});
if (res.ok) {
result = await res.json();
}
if (result && result.numberOfElements > 0) {
console.log("selectInftwtAnls", result.content);
return result.content as InftwtAnls[];
}
} catch (error) {
console.error(error);
}
};
export const useAplcnYms = () => {
const [data, setData] = useState<{ text: string; val: string }[]>([]);
@@ -18,8 +18,8 @@ const InfilChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal }: ModalOp
const buttonRef = React.useRef<HTMLButtonElement>(null); // 버튼 참조
const [popupPosition, setPopupPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 }); // 팝업 위치
const [aplcnYm, setAplcnYm] = useState("");
const [aplcnYms, setAplcnYms] = useState<{ text: string; val: string }[]>([]);
//const aplcnYms = useAplcnYms(); // 상수사용월 데이터 가져오기
//const [aplcnYms, setAplcnYms] = useState<{ text: string; val: string }[]>([]);
const aplcnYms = useAplcnYms(); // 상수사용월 데이터 가져오기
const openPopup = () => {
if (buttonRef.current) {
const rect = buttonRef.current.getBoundingClientRect(); // 버튼 위치 계산
@@ -59,46 +59,6 @@ const InfilChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal }: ModalOp
return `${year}-${month}`;
};
const convertToTextValArray = (yyyymms: string[]): { text: string; val: string }[] => {
return yyyymms.map(dateStr => {
const year = dateStr.slice(0, 4);
const month = dateStr.slice(4, 6);
return {
text: `${year}-${month}`,
val: dateStr
};
});
};
const selectAplcnYms = async() => { // 상수사용월
try {
//const result = await getData('v1/inftwtAnlsRslt/aplcnYm');
let result = null;
const res = await fetch('http://con.mind-one.co.kr:11083/sewerage-service/api/v1/inftwtAnlsRslt/aplcnYm', {
method: "GET",
body: null,
});
if (res.ok) {
result = await res.json();
}
if (result && result.length > 0) {
//setAplcnYms(convertToTextValArray(result));
console.log("selectAplcnYms", result);
return convertToTextValArray(result);
}
} catch (error) {
console.error(error);
}
}
useEffect(() => {
const fetchAplcnYms = async () => {
const aplcnYmsData = await selectAplcnYms();
setAplcnYms(aplcnYmsData||[]);
console.log("aplcnYms: ", aplcnYms);
//setAplcnYm(getCurrentDate());
};
fetchAplcnYms();
}, [aplcnYms]);
return (
<Modal isModalOpen={isModalOpen} setIsModalOpen={setIsModalOpen} closeModal={closeModal}>
{/* 분석 입력현황 조회 */}
@@ -135,13 +95,12 @@ const InfilChart = ({ btnTxt, isModalOpen, setIsModalOpen, closeModal }: ModalOp
<div className="grid grid-cols-2 gap-2">
<div><label>상수사용월:</label></div>
<div>
<SelectBox
className="w-[90px] mr-3 ml-4"
selectClass="rounded-lg bg-white"
label=""
selectArray={aplcnYms}
onSelectValue={(value: string|number) => setAplcnYm(String(value))}
/>
<select className="border border-gray-300 rounded px-2 py-1"
onChange={e => setAplcnYm(e.target.value)} value={aplcnYm}>
{aplcnYms.map(opt => (
<option key={opt.val} value={opt.val}>{opt.text}</option>
))}
</select>
</div>
<div><label>분석정보:</label></div>
<div>