Merge remote-tracking branch 'origin/iipbs/st/dev' into deploy
This commit is contained in:
@@ -172,6 +172,30 @@ const SearchForm = (props: SearchFormProps = {}) => {
|
||||
);
|
||||
const sggOptions = sggList?.data ?? [];
|
||||
|
||||
// 시도 설정 후 시군구 목록이 오면 첫 번째 항목 자동 선택
|
||||
useEffect(() => {
|
||||
if (!mergedProps.gugun) return;
|
||||
if (props.defaultValues?.gugun) return;
|
||||
if (!values.sido || values.sido === "ALL") return;
|
||||
|
||||
const firstSgg = sggList?.data?.[0];
|
||||
if (!firstSgg) return;
|
||||
|
||||
setValues((prev) => {
|
||||
if (prev.gugun) return prev;
|
||||
return {
|
||||
...prev,
|
||||
gugun: firstSgg.gugun,
|
||||
bsnmCd: firstSgg.bsnmCd,
|
||||
};
|
||||
});
|
||||
}, [
|
||||
sggList,
|
||||
values.sido,
|
||||
mergedProps.gugun,
|
||||
props.defaultValues?.gugun,
|
||||
]);
|
||||
|
||||
const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
|
||||
e.preventDefault();
|
||||
props.onSubmit?.(values);
|
||||
|
||||
@@ -715,7 +715,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
@@ -815,7 +815,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -988,7 +988,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1012,7 +1012,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1037,7 +1037,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1288,7 +1288,7 @@ const PrivateSewageFacilityInp = () => {
|
||||
activeTabRef.current,
|
||||
searchParamRef.current,
|
||||
values,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -1141,7 +1141,7 @@ const SewageExcretaRelatedInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
ctx,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
}
|
||||
@@ -1376,7 +1376,7 @@ const SewageExcretaRelatedInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -1650,7 +1650,7 @@ const SewageExcretaRelatedInp = () => {
|
||||
const param =
|
||||
searchParamRef.current ??
|
||||
buildSewageExcretaRelatedSearchParam(lastSearchedValues);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, true, false);
|
||||
alert("저장되었습니다.");
|
||||
} else {
|
||||
alert(response.message ?? "저장 중 오류가 발생했습니다.");
|
||||
|
||||
@@ -1366,7 +1366,7 @@ const SewageExcretaSlurgeInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -1535,7 +1535,7 @@ const SewageExcretaSlurgeInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
@@ -1731,7 +1731,7 @@ const SewageExcretaSlurgeInp = () => {
|
||||
const param =
|
||||
searchParamRef.current ??
|
||||
buildSewageExcretaSlurgeSearchParam(lastSearchedValues);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, true, false);
|
||||
alert("저장되었습니다.");
|
||||
} else {
|
||||
alert(response.message ?? "저장 중 오류가 발생했습니다.");
|
||||
@@ -2179,7 +2179,7 @@ const SewageExcretaSlurgeInp = () => {
|
||||
activeTabRef.current,
|
||||
searchParamRef.current,
|
||||
values,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
}}
|
||||
@@ -2195,7 +2195,7 @@ const SewageExcretaSlurgeInp = () => {
|
||||
activeTabRef.current,
|
||||
searchParamRef.current,
|
||||
values,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
}}
|
||||
|
||||
@@ -622,7 +622,7 @@ const SewagePipeMaintainInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -775,7 +775,7 @@ const SewagePipeMaintainInp = () => {
|
||||
RepairStatusInpColumn.tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
setGlobalProgress(100);
|
||||
@@ -812,7 +812,7 @@ const SewagePipeMaintainInp = () => {
|
||||
PipeDredgingStatusInpColumn.tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
setGlobalProgress(100);
|
||||
@@ -861,7 +861,7 @@ const SewagePipeMaintainInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
|
||||
@@ -519,7 +519,7 @@ const SewageReservoirPumpInp = () => {
|
||||
|
||||
if (response.status === "success") {
|
||||
setIsLoading(true);
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, true, false);
|
||||
alert("제출 취소되었습니다.");
|
||||
} else {
|
||||
alert(response.message ?? "제출 취소 중 오류가 발생했습니다.");
|
||||
@@ -721,7 +721,7 @@ const SewageReservoirPumpInp = () => {
|
||||
} else {
|
||||
setRainfallPumpStationDeleteList([]);
|
||||
}
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, true, false);
|
||||
alert("저장되었습니다.");
|
||||
} else {
|
||||
alert(response.message ?? "저장 중 오류가 발생했습니다.");
|
||||
@@ -788,7 +788,7 @@ const SewageReservoirPumpInp = () => {
|
||||
} else {
|
||||
setRainfallPumpStationDeleteList([]);
|
||||
}
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, lastSearchedValues, true, false);
|
||||
};
|
||||
|
||||
if (!noApplicable && submitList.length === 0) {
|
||||
@@ -1670,7 +1670,7 @@ const SewageReservoirPumpInp = () => {
|
||||
onExceptionResetSubmitted={async () => {
|
||||
const values = lastSearchedValues ?? searchValues;
|
||||
if (!values) return;
|
||||
await loadActiveTabData(activeTabRef.current, values, false, false);
|
||||
await loadActiveTabData(activeTabRef.current, values, true, false);
|
||||
}}
|
||||
/>
|
||||
<SubmitDailog
|
||||
@@ -1687,7 +1687,7 @@ const SewageReservoirPumpInp = () => {
|
||||
onExceptionSubmitted={async () => {
|
||||
const values = lastSearchedValues ?? searchValues;
|
||||
if (!values) return;
|
||||
await loadActiveTabData(activeTabRef.current, values, false, false);
|
||||
await loadActiveTabData(activeTabRef.current, values, true, false);
|
||||
}}
|
||||
/>
|
||||
<ConfirmDialog isOpen={false} />
|
||||
|
||||
@@ -757,7 +757,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
@@ -857,7 +857,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -1033,7 +1033,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1057,7 +1057,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1081,7 +1081,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
@@ -1103,7 +1103,7 @@ const SewerageFinanceInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("저장되었습니다.");
|
||||
|
||||
@@ -755,7 +755,7 @@ const SewerageServiceLevelInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current!,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -991,7 +991,7 @@ const SewerageServiceLevelInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
|
||||
@@ -1163,7 +1163,7 @@ const WaterReuseInp = () => {
|
||||
const param =
|
||||
searchParamRef.current ??
|
||||
buildWaterReuseSearchParam(lastSearchedValues);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, false, false);
|
||||
await loadActiveTabData(tabKey, param, lastSearchedValues, true, false);
|
||||
};
|
||||
|
||||
try {
|
||||
@@ -1413,7 +1413,7 @@ const WaterReuseInp = () => {
|
||||
tabKey,
|
||||
param,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
};
|
||||
@@ -1742,7 +1742,7 @@ const WaterReuseInp = () => {
|
||||
PublicSewageTreatWaterReuseInpColumn.tabKey,
|
||||
param,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
setGlobalProgress(100);
|
||||
@@ -1896,7 +1896,7 @@ const WaterReuseInp = () => {
|
||||
tabKey,
|
||||
searchParamRef.current,
|
||||
lastSearchedValues,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
);
|
||||
alert("제출 취소되었습니다.");
|
||||
|
||||
@@ -3,7 +3,9 @@ import {
|
||||
Chart as ChartJS,
|
||||
CategoryScale,
|
||||
LinearScale,
|
||||
BarController,
|
||||
BarElement,
|
||||
LineController,
|
||||
LineElement,
|
||||
PointElement,
|
||||
Title,
|
||||
@@ -12,7 +14,18 @@ import {
|
||||
} from "chart.js";
|
||||
import type { ChartOptions } from "chart.js";
|
||||
|
||||
ChartJS.register(CategoryScale, LinearScale, BarElement, LineElement, PointElement, Title, Tooltip, Legend);
|
||||
ChartJS.register(
|
||||
CategoryScale,
|
||||
LinearScale,
|
||||
BarController,
|
||||
BarElement,
|
||||
LineController,
|
||||
LineElement,
|
||||
PointElement,
|
||||
Title,
|
||||
Tooltip,
|
||||
Legend,
|
||||
);
|
||||
|
||||
// 차트 설정 외부 정의 (Mixed 타입 명시)
|
||||
const options: ChartOptions<"bar" | "line"> = {
|
||||
|
||||
Reference in New Issue
Block a user