From 43bbc81616c7129fae23668c488b22d95a40c1a3 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Tue, 17 Mar 2026 15:17:43 +0900
Subject: [PATCH 01/17] =?UTF-8?q?wr:=20alert=20=EC=8B=9C=ED=97=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx | 11 ++++++-----
apps/wr/app/store/matDmd/coSttn/index.tsx | 1 +
apps/wr/src/shared/ui/alert-dialog.tsx | 10 ++++++----
apps/wr/tsconfig.json | 10 +++-------
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
index f5104154f..bf471c564 100644
--- a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
@@ -31,6 +31,7 @@ import moment from "moment";
import { useCallback, useEffect, useState } from "react";
import toast, { Toaster } from "react-hot-toast";
import { useTranslation } from "react-i18next";
+import { useAlertStore } from "@/src/shared/lib";
export default function CoSttn() {
const {
@@ -48,7 +49,7 @@ export default function CoSttn() {
getMyUUID
} = useWrStore((state) => state);
const { regAuthrtYn, mdfcnAuthrtYn } = auth;
-
+ const alert = useAlertStore((state) => state.setMessage);
const [bdstTable, setBdstTable] = useState();
const [pageNation, setPageNation] = useState(1);
const { coSttnRes, coSttnResCount } = coSttn;
@@ -98,7 +99,7 @@ export default function CoSttn() {
useEffect(() => {
if (!coSttn.isInit) {
- coSttnInit("1", "13", "0");
+ coSttnInit("1", "13", "0"); // 수요처 목록 조회
}
}, [coSttn.isInit, coSttnInit]);
@@ -274,8 +275,8 @@ export default function CoSttn() {
headName={[]}
tableData={bdstTable || []}
headlist={coSttn.coSttHeadList}
- pageSize={20}
- total={coSttnResCount + 10 || 0}
+ pageSize={13}
+ total={coSttnResCount || 0}
cellClick={ async(index: number | undefined) => {
const uuid = await getMyUUID();
const updateData = coSttnRes[index as number];
@@ -332,7 +333,7 @@ export default function CoSttn() {
`/reuseFc/request/${data.dmdInfoId}`
);
if (dmd) {
- toast.error(
+ alert(
`사업자번호 ${dmd.dmdInfoId}는 이미 등록되었습니다. 다시등록해주세요`
);
return;
diff --git a/apps/wr/app/store/matDmd/coSttn/index.tsx b/apps/wr/app/store/matDmd/coSttn/index.tsx
index 1f7b2c54b..4c326d283 100644
--- a/apps/wr/app/store/matDmd/coSttn/index.tsx
+++ b/apps/wr/app/store/matDmd/coSttn/index.tsx
@@ -46,6 +46,7 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
set: any
) => {
return {
+ // 수요처 목록 조회
coSttnInit: async (pageNo: string, pageCnt: string, con: string) => {
try {
diff --git a/apps/wr/src/shared/ui/alert-dialog.tsx b/apps/wr/src/shared/ui/alert-dialog.tsx
index 6160d5301..51e82798c 100644
--- a/apps/wr/src/shared/ui/alert-dialog.tsx
+++ b/apps/wr/src/shared/ui/alert-dialog.tsx
@@ -21,10 +21,12 @@ function AlertDialog() {
{message}
-
-
-
-
+
+
+
+
+
+
diff --git a/apps/wr/tsconfig.json b/apps/wr/tsconfig.json
index 493584782..221de4580 100644
--- a/apps/wr/tsconfig.json
+++ b/apps/wr/tsconfig.json
@@ -28,13 +28,9 @@
"@/*": ["./*"],
"@common/components/*": ["../../packages/common/components/src/*"],
"@common/components": ["../../packages/common/components/src/index"],
- "@common/business_components/*": [
- "../../packages/common/business_components/src/*"
- ],
- "@common/business_components": [
- "../../packages/common/business_components/src/index"
- ],
- "@common/network": ["../../packages/common/network"]
+ "@common/business_components/*": ["../../packages/common/business_components/src/*"],
+ "@common/business_components": ["../../packages/common/business_components/src/index"],
+ "@common/network": ["../../packages/common/network"],
}
},
"include": [
From 908ec81fb7584a1c935042d2e5444b4922cadaf5 Mon Sep 17 00:00:00 2001
From: LGS
Date: Tue, 17 Mar 2026 15:47:34 +0900
Subject: [PATCH 02/17] =?UTF-8?q?=EC=B9=A8=EC=9E=85=EC=88=98=20=EB=B6=84?=
=?UTF-8?q?=EC=84=9D=20=ED=8C=9D=EC=97=85=20=EB=A0=88=EC=9D=B4=EC=95=84?=
=?UTF-8?q?=EC=9B=83=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../popupComponent/chart/infilChart.tsx | 447 +++++++++---------
1 file changed, 226 insertions(+), 221 deletions(-)
diff --git a/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx b/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
index 9f481a2b9..094936638 100644
--- a/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
+++ b/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
@@ -1,268 +1,273 @@
'use client'
-import { CHART_FORM, type ChartConfig, MainChart, UiModal } from "@common/business_components";
+
+import React, { useEffect, useMemo, useState } from 'react';
+import moment from 'moment';
+
+import {
+ CHART_FORM,
+ type ChartConfig,
+ MainChart,
+ UiModal,
+} from '@common/business_components';
import { SelectBox } from '@common/business_components/ui';
import { Button, Input, Label } from '@common/components';
-import React, { useEffect, useState } from 'react';
-import moment from "moment";
import type { TInftwtAnls } from './aplcnYms';
import * as fn from './aplcnYms';
-import { useInfilChartModalStore } from '../chartModalStore'; // 모달 상태 관리 스토어
+import { useInfilChartModalStore } from '../chartModalStore';
+
type ModalOpenProp = {
- pplMngNo?: string, // 관로관리번호
-}
-type DataType = { label: string; val: number };
+ pplMngNo?: string; // 관로관리번호
+};
-const InfilChart = ({ pplMngNo }: ModalOpenProp) => {
- const { isOpen: isModalOpen, setIsOpen: setIsModalOpen } = useInfilChartModalStore(); // 모달 상태 관리 스토어
- const [popupOpen, setPopupOpen] = React.useState(false); // 조회조건팝업
- const buttonRef = React.useRef(null); // 버튼 참조
- const [popupPosition, setPopupPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 }); // 팝업 위치
- const [selectedAplcnYm, setSelectedAplcnYm] = useState("");
+type DataType = {
+ label: string;
+ val: number;
+};
+
+const INITIAL_ANALYSIS_OPTIONS = [{ val: 0, text: '선택' }];
+
+const InfilChart = ({ pplMngNo = '' }: ModalOpenProp) => {
+ const { isOpen: isModalOpen, setIsOpen: setIsModalOpen } = useInfilChartModalStore();
+
+ const [selectedAplcnYm, setSelectedAplcnYm] = useState('');
const [inftwtAnlss, setInftwtAnlss] = useState([]);
- const [inftwtAnlsInfos, setInftwtAnlsInfos] = useState<{ text: string; val: number; hidden?: boolean }[]>([{ val: 0, text: '선택' }]); // 침입수분석정보 options
- const [inftwtAnls, setInftwtAnls] = useState(null); // 침입수분석정보
- const [selectedInftwtAnls, setSelectedInftwtAnls] = useState(0); // 침입수분석 정보 선택시 사용
+ const [inftwtAnlsInfos, setInftwtAnlsInfos] = useState<{ text: string; val: number; hidden?: boolean }[]>(
+ INITIAL_ANALYSIS_OPTIONS,
+ );
+ const [inftwtAnls, setInftwtAnls] = useState(null);
+ const [selectedInftwtAnls, setSelectedInftwtAnls] = useState(0);
const [chartData, setChartData] = useState<{ chartData1: DataType[]; chartData2: DataType[] }>({
- chartData1: [], chartData2: [],
+ chartData1: [],
+ chartData2: [],
});
- const [inftwtQty, setInftwtQty] = useState("0"); // 침입수량
- const aplcnYms = fn.useAplcnYms('inftwtAnlsRslt'); // 상수사용월 데이터 가져오기
+ const [inftwtQty, setInftwtQty] = useState('0');
- pplMngNo = "L" + pplMngNo; // inp파일에 하수관로와 맨홀의 번호가 같으면 분석 오류가 발행하여
- const openPopup = () => {
- if (buttonRef.current) {
- const rect = buttonRef.current.getBoundingClientRect(); // 버튼 위치 계산
- setPopupPosition({
- top: rect.bottom + window.scrollY, // 버튼 아래쪽
- left: rect.left + window.scrollX, // 버튼 왼쪽
- });
- }
- setPopupOpen(true); // 팝업 열기
- };
+ const aplcnYms = fn.useAplcnYms('inftwtAnlsRslt');
+ const normalizedPplMngNo = pplMngNo ? `L${pplMngNo}` : '';
const chartForm = CHART_FORM.LINE;
const chartConfig = {
- chartData1: { label: '순오수량', color: "red", },
- chartData2: { label: '실측하수량', color: "orange", }
+ chartData1: { label: '순오수량', color: 'red' },
+ chartData2: { label: '실측하수량', color: 'orange' },
} as ChartConfig;
+ const hasChartData = useMemo(() => {
+ return chartData.chartData1.length > 0 || chartData.chartData2.length > 0;
+ }, [chartData]);
+
+ const resetState = () => {
+ setSelectedAplcnYm('');
+ setInftwtAnlss([]);
+ setInftwtAnlsInfos(INITIAL_ANALYSIS_OPTIONS);
+ setInftwtAnls(null);
+ setSelectedInftwtAnls(0);
+ setChartData({ chartData1: [], chartData2: [] });
+ setInftwtQty('0');
+ };
+
useEffect(() => {
- if (isModalOpen === false) {
- setPopupOpen(true); // 모달이 닫힐 때 조회조건팝업은 열어두기
- setSelectedAplcnYm(""); // 상수사용월 초기화
- setInftwtAnlss([]); // 침입수분석 초기화
- setInftwtAnlsInfos([{ val: 0, text: '선택' }]); // 침입수분석정보 초기화
- setInftwtAnls(null); // 침입수분석정보 초기화
- setSelectedInftwtAnls(0); // 침입수분석 일련번호 초기화
- setChartData({ chartData1: [], chartData2: [], }); // 차트 데이터 초기화
- setInftwtQty("0"); // 침입수량 초기화
+ if (!isModalOpen) {
+ resetState();
}
}, [isModalOpen]);
- // 상수사용월 변경 핸들러
const handleAplcnYmChange = async (val: string | number) => {
const selectedValue = String(val);
setSelectedAplcnYm(selectedValue);
-
- // 즉시 관련 상태 초기화
+ setInftwtAnlss([]);
setInftwtAnls(null);
+ setSelectedInftwtAnls(0);
+ setInftwtQty('0');
+ setChartData({ chartData1: [], chartData2: [] });
- // 빈 값이면 초기화만 하고 종료
- if (!selectedValue || selectedValue === "0" || selectedValue === "") {
- setInftwtAnlsInfos([{ val: 0, text: '선택' }]);
+ if (!selectedValue || selectedValue === '0') {
+ setInftwtAnlsInfos(INITIAL_ANALYSIS_OPTIONS);
return;
}
- // API 호출
try {
const data = await fn.selectInftwtAnls(selectedValue);
- setInftwtAnlss(data ?? []);
- setInftwtAnlsInfos(fn.getOptionsInftwtAnlsInfo(data));
+ const list = data ?? [];
+ setInftwtAnlss(list);
+ setInftwtAnlsInfos(fn.getOptionsInftwtAnlsInfo(list));
} catch (error) {
- console.error("selectInftwtAnls 에러:", error);
+ console.error('selectInftwtAnls 에러:', error);
setInftwtAnlss([]);
- setInftwtAnlsInfos([{ val: 0, text: '선택' }]);
+ setInftwtAnlsInfos(INITIAL_ANALYSIS_OPTIONS);
}
- setSelectedInftwtAnls(0);
};
- // 분석정보 변경 핸들러
const handleInftwtAnlsSnChange = (val: string | number) => {
const selectedValue = Number(val);
- setSelectedInftwtAnls(selectedValue);
- // 선택된 침입수분석 정보에 대한 처리 로직
+ setSelectedInftwtAnls(selectedValue);
+ setChartData({ chartData1: [], chartData2: [] });
+ setInftwtQty('0');
+
if (selectedValue === 0) {
setInftwtAnls(null);
return;
}
- const selectedAnls = inftwtAnlss.find(anls => anls.inftwtAnlsSn === selectedValue);
- if (selectedAnls) {
- setInftwtAnls(selectedAnls);
+ const selectedAnls = inftwtAnlss.find((anls) => anls.inftwtAnlsSn === selectedValue) ?? null;
+ setInftwtAnls(selectedAnls);
+ };
+
+ const infilRsltChart = async () => {
+ if (!selectedAplcnYm || selectedInftwtAnls === 0 || !normalizedPplMngNo) {
+ setChartData({ chartData1: [], chartData2: [] });
+ setInftwtQty('0');
+ return;
+ }
+
+ try {
+ const [inftwtAnlsRslt, oilq, qty] = await Promise.all([
+ fn.selectInftwtAnlsRslt(selectedInftwtAnls, normalizedPplMngNo),
+ fn.selectOilq(selectedInftwtAnls, normalizedPplMngNo).catch((err) => {
+ console.error('selectOilq 에러:', err);
+ return [];
+ }),
+ fn.selectPplInftwtQty(selectedInftwtAnls, normalizedPplMngNo).catch((err) => {
+ console.error('selectPplInftwtQty 에러:', err);
+ return 0;
+ }),
+ ]);
+
+ setChartData({
+ chartData1: fn.getChartDataInftwtAnlsRslt(inftwtAnlsRslt ?? []),
+ chartData2: fn.getChartDataOilq(oilq ?? []),
+ });
+
+ const normalizedQty = Number(qty ?? 0);
+ setInftwtQty(normalizedQty.toLocaleString('ko-KR'));
+ } catch (error) {
+ console.error('infilRsltChart 에러:', error);
+ setChartData({ chartData1: [], chartData2: [] });
+ setInftwtQty('0');
}
};
- const closePopup = () => { // 팝업 닫기
- setPopupOpen(false);
- }
- const infilRsltChart = () => { // 그래프 & 팝업 닫기
-
- fn.selectInftwtAnlsRslt(selectedInftwtAnls, pplMngNo).then((data) => {// 침입수분석 결과 조회
- const rsltData = fn.getChartDataInftwtAnlsRslt(data ?? []);
- setChartData(prev => ({
- ...prev,
- chartData1: rsltData // 침입수분석결과
- }));
- });
- fn.selectOilq(selectedInftwtAnls, pplMngNo).then((data) => {// 유량 조회
- const rsltData = fn.getChartDataOilq(data ?? []);
- setChartData(prev => ({
- ...prev,
- chartData2: rsltData // 유량
- }));
- }).catch((err) => {
- console.error("selectOilq 에러:", err);
- setChartData(prev => ({
- ...prev,
- chartData2: [] // 유량 데이터 초기화
- }));
- });
- fn.selectPplInftwtQty(selectedInftwtAnls, pplMngNo).then((data) => {// 침입수량 조회
- if (data > 0) {
- setInftwtQty(data.toLocaleString('ko-KR'));
- }
- });
- setPopupOpen(false);
- };
+ const renderInfoInput = (label: string, value?: string | number | null) => (
+
+
+
+
+ );
const renderBody = () => (
- <>
- 침입수분석결과
-
-
-
-
- {/* 상수사용량 적용연월 */}
-
-
● 상수사용량 적용연월
-
-
- {(selectedAplcnYm) ? moment(selectedAplcnYm, "YYYYMM").format("YYYY-MM") : ""}
-
-
-
- {/* 침입수량 분석결과 */}
-
-
● 침입수량 산정결과
-
- 침입수량 :
- {inftwtQty}
- m³/d
-
-
-
- {/* 차트 */}
-
-
-
+
+
- {popupOpen && (
-
-
침입수분석 입력현황
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 침입수 분석 선택 조건
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {renderInfoInput('오수전환율:', inftwtAnls?.drtwSwtcRt ?? '')}
+ {renderInfoInput('시간패턴 파일명:', inftwtAnls?.atflHrPttnNm ?? '')}
+ {renderInfoInput('수용가-맨홀 매칭:', inftwtAnls?.atflMpngNm ?? '')}
+ {renderInfoInput('관망도 파일명:', inftwtAnls?.atflInpNm ?? '')}
+ {renderInfoInput('유량 파일명:', inftwtAnls?.atflOilqNm ?? '')}
-
-
-
)}
- {/* */}
- >
- )
+
+
+
+ 침입수 분석 결과
+
+
+
+
+ ●
+ 상수사용량 적용연월
+
+
+ {selectedAplcnYm ? moment(selectedAplcnYm, 'YYYYMM').format('YYYY-MM') : '-'}
+
+
+
+
+
+ ●
+ 침입수량 산정결과
+
+
+ 침입수량
+ {inftwtQty}
+ m³/d
+
+
+
+
+
+ {hasChartData ? (
+
+ ) : (
+
+ 데이터가 없습니다.
+
+ )}
+
+
+
+
+ );
return (
{
onOpenChange={setIsModalOpen}
headerTitle=""
bodyClass={`
- min-h-[50vh]
- w-[55vw]
- max-w-none
- max-h-none
- overflow-visible
- z-[50]
- `}
+ w-[78vw]
+ max-w-none
+ min-h-[74vh]
+ max-h-none
+ overflow-visible
+ z-[50]
+ `}
body={renderBody()}
- noFooterYn='Y'
+ noFooterYn="Y"
/>
- )
-}
+ );
+};
-export default React.memo(InfilChart);
\ No newline at end of file
+export default React.memo(InfilChart);
From c57c7ce1f71afc391266133b8025a5c00a0eefb4 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Tue, 17 Mar 2026 18:05:02 +0900
Subject: [PATCH 03/17] =?UTF-8?q?wr:=20=EA=B3=B5=ED=86=B5=20alet=20=20?=
=?UTF-8?q?=EC=82=AC=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../matMng/coMng/coSttn/page.tsx | 29 +++++++++++--------
apps/wr/app/store/matDmd/coSttn/index.tsx | 17 +++++------
apps/wr/src/shared/ui/confirm-dialog.tsx | 24 ++++++++-------
3 files changed, 38 insertions(+), 32 deletions(-)
diff --git a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
index bf471c564..f5fcf7d91 100644
--- a/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMng/coSttn/page.tsx
@@ -5,7 +5,7 @@ import { btnClass } from "@/app/store/common/code";
import { excelCoSttnParsing } from "@/app/store/matDmd/coSttn/excel";
import { fetchType, getFetch } from "@/components/lib/api";
import {
- confirmToast,
+ //confirmToast,
excelDownload,
formatPhoneNumber,
getCity,
@@ -29,9 +29,10 @@ import type { DemandCompType } from "@common/business_components/ui/sdmInsertFor
import { Button } from "@common/components/ui";
import moment from "moment";
import { useCallback, useEffect, useState } from "react";
-import toast, { Toaster } from "react-hot-toast";
+// import toast, { Toaster } from "react-hot-toast";
import { useTranslation } from "react-i18next";
import { useAlertStore } from "@/src/shared/lib";
+import { useConfirm } from "@frontend-opensource/use-react-hooks";
export default function CoSttn() {
const {
@@ -50,6 +51,7 @@ export default function CoSttn() {
} = useWrStore((state) => state);
const { regAuthrtYn, mdfcnAuthrtYn } = auth;
const alert = useAlertStore((state) => state.setMessage);
+ const { confirm } = useConfirm();
const [bdstTable, setBdstTable] = useState();
const [pageNation, setPageNation] = useState(1);
const { coSttnRes, coSttnResCount } = coSttn;
@@ -168,16 +170,21 @@ export default function CoSttn() {
}
};
const { t } = useTranslation('base');
- const initPassword = () => {
+ const initPassword = async () => {
if (updateData) {
const dmdInfoId = updateData.dmdInfoId;
const dmdInfoSliceId = `${dmdInfoId.slice(0, 3)}-${dmdInfoId.slice(3, 5)}-${dmdInfoId.slice(5, 10)}-${dmdInfoId.slice(10)}`
- const handleConfirm = () => {
- coSttnPwInit(dmdInfoId);
+ const handleConfirm = async () => {
+ const message = await coSttnPwInit(dmdInfoId);
+ alert(message);
};
- confirmToast( t('isInitPw', { dmdInfoId: dmdInfoSliceId }), handleConfirm, 'text-2xl');
+ //confirmToast( t('isInitPw', { dmdInfoId: dmdInfoSliceId }), handleConfirm, 'text-2xl');
+ if (await confirm(t('isInitPw', { dmdInfoId: dmdInfoSliceId }))) {
+ await handleConfirm();
+ }
} else {
- toast.error("비밀번호 초기화를 원하는 행을 선택해주세요.")
+ alert("비밀번호 초기화를 원하는 행을 선택해주세요.");
+ // toast.error("비밀번호 초기화를 원하는 행을 선택해주세요.")
}
}
@@ -239,7 +246,7 @@ export default function CoSttn() {
onClick={() => {
/* 저장 로직 */
if (!updateData) {
- toast.error("수요처 변경을 원하는 행을 선택해주세요");
+ alert("수요처 변경을 원하는 행을 선택해주세요");
} else {
setIsDmdModal({
...isDmdModal,
@@ -333,9 +340,7 @@ export default function CoSttn() {
`/reuseFc/request/${data.dmdInfoId}`
);
if (dmd) {
- alert(
- `사업자번호 ${dmd.dmdInfoId}는 이미 등록되었습니다. 다시등록해주세요`
- );
+ alert(`사업자번호 ${dmd.dmdInfoId}는 이미 등록되었습니다. 다시등록해주세요`);
return;
}
await regDemandCompany(data as DemandCompType);
@@ -353,7 +358,7 @@ export default function CoSttn() {
}
>
-
+ {/*
*/}
>
);
}
diff --git a/apps/wr/app/store/matDmd/coSttn/index.tsx b/apps/wr/app/store/matDmd/coSttn/index.tsx
index 4c326d283..ca610c381 100644
--- a/apps/wr/app/store/matDmd/coSttn/index.tsx
+++ b/apps/wr/app/store/matDmd/coSttn/index.tsx
@@ -2,7 +2,6 @@ import type { CommonTableProps } from "@/app/store/common/type/header";
import { fetchType, getFetchWithCount, putFectch } from "@/components/lib/api";
import type { DemandCompType } from "@common/business_components/ui/sdmInsertForm/form";
import { coSttHeadListExport, coSttNodeListExport } from "./headList";
-import toast from "react-hot-toast";
// 테이블 헤드 리스트
const coSttNodeList = coSttNodeListExport;
@@ -25,7 +24,7 @@ type coSttnActions = {
coSttnInit: (pageNo: string, pageCnt: string, con: string) => void;
coSttnSearch: (pageNo: string, pageCnt: string, con: string) => void;
coSttnTxtSearch: (pageNo: string, pageCnt: string, con: string, txt: string) => void;
- coSttnPwInit: (dmdInfoId: string) => void;
+ coSttnPwInit: (dmdInfoId: string) => Promise
;
};
export type coSttnType = coSttnState & coSttnActions;
@@ -127,10 +126,14 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
try {
const response = await putFectch(`/reuseFc/request/chgPassword/${dmdInfoId}`,[])
if (response.status === 200) {
- toast.success('비밀번호가 초기화 되었습니다.')
+ return "비밀번호가 초기화되었습니다.";
} else {
- toast.error('비밀번호 초기화에 실패하였습니다')
+ return "비밀번호 초기화에 실패하였습니다.";
}
+ } catch (err) {
+ console.log(err);
+ return "비밀번호 초기화에 실패하였습니다.";
+ } finally {
set((state: coSttnState) => {
return {
...state,
@@ -140,11 +143,7 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
}
}
});
- } catch (err) {
- console.log(err);
- toast.error('비밀번호 초기화에 실패하였습니다.')
-
}
}
}
-}
\ No newline at end of file
+}
diff --git a/apps/wr/src/shared/ui/confirm-dialog.tsx b/apps/wr/src/shared/ui/confirm-dialog.tsx
index 6a4996bfb..7a8065a98 100644
--- a/apps/wr/src/shared/ui/confirm-dialog.tsx
+++ b/apps/wr/src/shared/ui/confirm-dialog.tsx
@@ -28,17 +28,19 @@ function ConfirmDialog({
{message}
-
-
-
- {confirmButtonProps?.label ?? "확인"}
-
-
-
-
- {cancelButtonProps?.label ?? "취소"}
-
-
+
+
+
+
+ {confirmButtonProps?.label ?? "확인"}
+
+
+
+
+ {cancelButtonProps?.label ?? "취소"}
+
+
+
From 630c9492cdc380c885903408c592351cb6d66187 Mon Sep 17 00:00:00 2001
From: dongsilove
Date: Tue, 17 Mar 2026 22:42:46 +0900
Subject: [PATCH 04/17] =?UTF-8?q?sn:=20=EC=B9=A8=EC=9E=85=EC=88=98=201?=
=?UTF-8?q?=EC=B0=A8=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../popupComponent/chart/infilChart.tsx | 33 ++++++++++---------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx b/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
index 094936638..9b2401c28 100644
--- a/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
+++ b/apps/sn/app/(map-layout)/map/components/popupComponent/chart/infilChart.tsx
@@ -150,10 +150,10 @@ const InfilChart = ({ pplMngNo = '' }: ModalOpenProp) => {
};
const renderInfoInput = (label: string, value?: string | number | null) => (
-
-
+
+
{
);
+ const handleReset = () => {
+ resetState();
+ }
const renderBody = () => (
@@ -169,14 +172,14 @@ const InfilChart = ({ pplMngNo = '' }: ModalOpenProp) => {
-
+
침입수 분석 선택 조건
-
-