({
queryKey: ["cklstTree", docSeComCd, taskSeComCd],
queryFn: async () => {
- console.log("Fetching checklist tree with", { docSeComCd, taskSeComCd });
// support comma-separated task codes (e.g. "RE,SP") by splitting
const raw = taskSeComCd ?? "";
const codes = raw
diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-view-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-view-page.tsx
index 316d466e1..7b35d11c8 100644
--- a/apps/as/src/pages/instl-sncn/ui/cnfm-view-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/cnfm-view-page.tsx
@@ -287,13 +287,13 @@ function CnfmViewPage({ id }: { id: string }) {
| {det.bizCn || "-"} |
- | 업무구분 |
+ 구분 |
{det.taskSeCdNm || det.taskSeComCd || "-"} |
행정동ID |
{det.admdstCd || "-"} |
- | 사업구분(인가구분) |
+ 사업구분 |
{det.sncnSeComCd || "-"} |
From e5dc3472763e4f0b01b784bd377352601d0192ad Mon Sep 17 00:00:00 2001
From: jangwoong
Date: Mon, 8 Jun 2026 18:21:35 +0900
Subject: [PATCH 14/96] =?UTF-8?q?[as=20frontend]=20=EC=8B=9C=EB=8F=84,=20?=
=?UTF-8?q?=EA=B5=B0=EA=B5=AC=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
index f1635cff3..555813889 100644
--- a/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/cnfm-list-page.tsx
@@ -257,8 +257,8 @@ function CnfmListPage() {
| {row.gugun|| "-"} |
{row.bizNm || "-"} |
{row.taskSeCdNm || row.taskSeComCd || "-"} |
- {row.chrgrNm || row.aplcntNm || "-"} |
- {row.instNm || row.aplcntOgdpNm || "-"} |
+ {row.aplcntNm || "-"} |
+ {row.envoSeCdNm || "-"} |
From 0c71c80a2542f3588d1571dd8619b2e835e49536 Mon Sep 17 00:00:00 2001
From: jcchoi
Date: Tue, 9 Jun 2026 17:29:50 +0900
Subject: [PATCH 15/96] =?UTF-8?q?=EB=8C=80=EC=8B=9C=EB=B3=B4=EB=93=9C=20?=
=?UTF-8?q?=20=EC=95=8C=EB=A6=BC=EB=A6=BC=20=EC=8A=A4=ED=81=AC=EB=A1=A4=20?=
=?UTF-8?q?=EC=B2=98=EB=A6=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/cs/src/pages/dashboard/ui/dashboard-page.tsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/cs/src/pages/dashboard/ui/dashboard-page.tsx b/apps/cs/src/pages/dashboard/ui/dashboard-page.tsx
index d787a6ab7..466148ed4 100644
--- a/apps/cs/src/pages/dashboard/ui/dashboard-page.tsx
+++ b/apps/cs/src/pages/dashboard/ui/dashboard-page.tsx
@@ -354,7 +354,7 @@ function DashboardPage() {
실시간 알림
-
+
{noticeUserList?.map((item) => (
일정 알림
-
+
{scheduleList && scheduleList.length > 0 ? (
scheduleList.map((schedule, index) => {
From cc21aaede151a1b319f1da2a389a4e458db8f663 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Wed, 10 Jun 2026 11:16:10 +0900
Subject: [PATCH 16/96] =?UTF-8?q?wr:=20=ED=95=98=EC=88=98=EC=9E=AC?=
=?UTF-8?q?=EC=9D=B4=EC=9A=A9=EC=8B=9C=EC=84=A4=ED=98=84=ED=99=A9=20?=
=?UTF-8?q?=EC=86=8D=EB=8F=84=20=EA=B0=9C=EC=84=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruseFcltMng/fcltReg/pbnstReg/utilsZod.tsx | 8 +-
.../ruseFcltMng/fcltSttn/pbnstSttn/page.tsx | 46 ++---
.../ruseFcltMng/fcltReg/pbnstReg/type.tsx | 17 ++
.../ruseFcltMng/fcltSttn/pbnstSttn/index.tsx | 167 +++++++++++++++++-
.../ruseFcltMng/fcltSttn/pbnstSttn/type.tsx | 3 +-
5 files changed, 215 insertions(+), 26 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/utilsZod.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/utilsZod.tsx
index f61697e7e..e36a8433f 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/utilsZod.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/utilsZod.tsx
@@ -6,6 +6,12 @@ export function createDefaultPbnstItem(row: pubHasuType, index: number) {
return JSON.parse(JSON.stringify({
pbnstRuseFcltId: pk,
swtrmtFcltId: "",
+ swageTrtmfctId: row.bscFctCd || "",
+ swageBscFctNm: row.bscFctNm || "",
+ swageRgnCd: row.rgnCd || "",
+ swageAdstDstrCd: row.adstDstrCd || "",
+ swageRvbsnCd: row.rvbsnCd || "",
+ swageFctCpc: Number(row.fctCpc) || 0,
ruseUtztnFcltNm: "",
fcltCpct: 0,
ruseCpct: 0,
@@ -44,4 +50,4 @@ export function createDefaultPbnstItem(row: pubHasuType, index: number) {
cycl,
// 필요한 값 있으면 여기에 추가
} as fcBizType;
- }
\ No newline at end of file
+ }
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
index 0e49c4c6f..70914ab7b 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
@@ -39,15 +39,13 @@ export default function PbnstSttn() {
auth,
code,
pbnstSttn,
- pbnstSttnSearch,
- pbnSttnInit,
+ pbnstSttnList,
getPbnStnDetail,
- getFlcts, // 하수재이용시설(tb_wr_pbnst_ruse_fclt) 조회
resetPbnstDetail,
getLaeSeCdCheck,
} = useWrStore((state) => state);
- const { pbnstSttnRes, fclts, pbnstSttnResCount } = pbnstSttn;
+ const { pbnstSttnRes, pbnstSttnResCount } = pbnstSttn;
const { laeSeCd } = auth; // 지자체구분코드
const [isReset, setIsReset] = useState(false);
@@ -110,16 +108,16 @@ export default function PbnstSttn() {
const excelClick = useCallback(() => {
isDownloadTriggered.current = true;
const fixedSearchValue = getFixedSearchValue(ref.current);
- pbnstSttnSearch(
+ pbnstSttnList(
true,
String(1),
"100000",
fixedSearchValue,
pbnRuseNm,
searchYear,
- fclts
+ []
);
- }, [pbnstSttnSearch, fclts, pbnRuseNm, searchYear, getFixedSearchValue]);
+ }, [pbnstSttnList, pbnRuseNm, searchYear, getFixedSearchValue]);
const cellCLick = useCallback(
(index: number | undefined) => {
@@ -134,28 +132,30 @@ export default function PbnstSttn() {
useEffect(() => {
getLaeSeCdCheck();
useInitRef.current = true;
- if (!pbnstSttn.isFcltsLoaded) {
- getFlcts(); // 하수재이용시설 조회
- }
}, []);
useEffect(() => {
if (
useInitRef.current === true &&
laeSeCd !== undefined &&
- pbnstSttn.isFcltsLoaded &&
- !pbnstSttn.isTableLoaded &&
- fclts.length > 0
+ !pbnstSttn.isTableLoaded
) {
- pbnSttnInit("1", String(DEFAULT_LIST_SIZE), getFixedSearchValue(ref.current), searchYear, fclts);
+ pbnstSttnList(
+ false,
+ "1",
+ String(DEFAULT_LIST_SIZE),
+ getFixedSearchValue(ref.current),
+ pbnRuseNm,
+ searchYear,
+ []
+ );
}
}, [
- fclts,
laeSeCd,
- pbnstSttn.isFcltsLoaded,
pbnstSttn.isTableLoaded,
+ pbnRuseNm,
searchYear,
- pbnSttnInit,
+ pbnstSttnList,
getFixedSearchValue,
]);
@@ -262,16 +262,16 @@ export default function PbnstSttn() {
}
queryClick={() => {
const fixedSearchValue = getFixedSearchValue(ref.current);
- pbnstSttnSearch(
+ pbnstSttnList(
false,
"1",
String(DEFAULT_LIST_SIZE),
fixedSearchValue,
pbnRuseNm,
searchYear,
- fclts
+ []
);
- setIsReset(true);
+ // setIsReset(true);
}}
excelClick={excelClick}
initClick={function (): void {
@@ -301,16 +301,16 @@ export default function PbnstSttn() {
}}
onPageChange={(page: number) => {
const fixedSearchValue = getFixedSearchValue(ref.current);
- pbnstSttnSearch(
+ pbnstSttnList(
false,
String(page),
String(DEFAULT_LIST_SIZE),
fixedSearchValue,
pbnRuseNm,
searchYear,
- fclts
+ []
);
- setIsReset(false);
+ // setIsReset(false);
}}
resetPageNo={isReset}
widthFixed={true}
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx
index eafbc4477..c39d3d72b 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx
@@ -62,10 +62,18 @@ export type PbnstDemandComType = {
export const pubHasuZod = z.object({
choose: z.boolean().default(false),
bscFctCd: z.string(),
+ rvbsnCd: z.string().default(""), // 권역코드
+ rvbsn: z.string().default(""),
+ lgbsn: z.string().default(""),
+ mdmbsn: z.string().default(""),
+ rgnNm: z.string().default(""),
+ rgnCd: z.string().default(""), // 지역코드
+ adstDstrCd: z.string().default(""), // 행정구역코드
sido: z.string().default(""), // 시도
gugun: z.string().default(""), // 구군
bscFctNm: z.string().default(""), // 시설명
efflWqltStndrdNm: z.string().default(""), // 지역구분
+ tel: z.string().default(""),
fctCpc: z.number().default(0), // 시설용량
addr: z.string().nullish(), // 위치
});
@@ -258,6 +266,15 @@ const PrfSchema = z.object({
export const pbnstRegZod = z.object({
pbnstRuseFcltId: z.string().default(""),
swtrmtFcltId: z.string().default(""),
+ swageTrtmfctId: z.string().default(""),
+ swageBscFctNm: z.string().default(""),
+ swageRgnCd: z.string().default(""),
+ swageAdstDstrCd: z.string().default(""),
+ swageRvbsnCd: z.string().default(""),
+ swageFctCpc: z.preprocess(
+ (v) => (v !== null && v !== undefined ? Number(v) : v),
+ z.number().default(0)
+ ),
ruseUtztnFcltNm: //z.string().default(''),
z.preprocess(
(v) => (v !== null && v !== undefined ? String(v).trim() : ""), // null/undefined → "", 공백 제거
diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
index b1cf957e6..57cfd0a1a 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
@@ -3,7 +3,7 @@ import type {
TableUpperProps,
} from "@/app/store/common/type/header";
import type { FcPrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type";
-import { fetchType, getFetch, postFectch } from "@/components/lib/api";
+import { fetchType, getFetch, getFetchWithCount, postFectch } from "@/components/lib/api";
import type { ReturnType } from "@common/business_components/ui";
import moment from "moment";
import { type z } from "zod";
@@ -54,6 +54,15 @@ export type pbnstSttnState = {
type pbnstSttnActions = {
pbnstChSttnHead: (headList: z.infer) => void;
+ pbnstSttnList: (
+ isExcel: boolean,
+ page: string,
+ total: string,
+ reurnValue: ReturnType,
+ searchNm: string | undefined,
+ year: string,
+ fclts: string[]
+ ) => void;
pbnstSttnSearch: (
isExcel: boolean,
page: string,
@@ -246,6 +255,119 @@ export const hasuListFetch = async (
return { data: data, count: getRuseList.count };
};
+export const pbnstListFetch = async (
+ page: string,
+ total: string,
+ reurnValue: ReturnType,
+ searchNm: string | undefined,
+ year: string
+) => {
+ let nameCd = "0";
+ let partStr = "A";
+
+ switch (reurnValue.partValue) {
+ case "R":
+ if (reurnValue.regionValue !== "0") {
+ if (reurnValue.unitWaterShedValue === "0") nameCd = reurnValue.regionValue;
+ else if (reurnValue.middleRegionValue === "0") nameCd = reurnValue.unitWaterShedValue;
+ else nameCd = reurnValue.middleRegionValue;
+ }
+ partStr = reurnValue.partValue;
+ break;
+ default:
+ if (reurnValue.sidoValue && reurnValue.sidoValue !== "0") nameCd = reurnValue.sidoValue;
+ if (reurnValue.sigunValue && reurnValue.sigunValue !== "0") nameCd = reurnValue.sigunValue;
+ partStr = reurnValue.envPartValue !== "0" ? reurnValue.envPartValue : "A";
+ break;
+ }
+
+ let url = `/reuseFc/pbnstList/${year}/${page}/${total}/${partStr}/${nameCd}/0/1/SW`;
+ if (searchNm && searchNm.length > 0) {
+ url += `?swtrmtFcltNm=${searchNm}`;
+ }
+
+ const response = await getFetchWithCount(fetchType.WR, url);
+ const wrList: WaterReuseFacility[] = Array.isArray(response.data)
+ ? response.data
+ : [];
+
+ const swtrmtFcltIds = [
+ ...new Set(
+ wrList
+ .map((item: WaterReuseFacility) => {
+ if (item.swtrmtFcltId && item.swtrmtFcltId.length > 0) {
+ return item.swtrmtFcltId;
+ }
+
+ if (item.pbnstRuseFcltId && item.pbnstRuseFcltId.length >= 11) {
+ return item.pbnstRuseFcltId.substring(0, 11);
+ }
+
+ return "";
+ })
+ .filter(Boolean)
+ ),
+ ];
+
+ let pbnListData: pubHasuType[] = [];
+
+ if (swtrmtFcltIds.length > 0) {
+ let foUrl = `/prcsFclt/ruseInfo/1/${swtrmtFcltIds.length + 1}`;
+ if (searchNm && searchNm.length > 0) {
+ foUrl += `/${searchNm}`;
+ }
+
+ const pbnList = await postFectch(
+ foUrl,
+ swtrmtFcltIds,
+ fetchType.COMMON
+ );
+
+ pbnListData = Array.isArray(pbnList?.data) ? pbnList.data : [];
+ }
+
+ const data: WaterReuseFacility[] = wrList.map((item: WaterReuseFacility) => {
+ const swtrmtFcltId =
+ item.swtrmtFcltId && item.swtrmtFcltId.length > 0
+ ? item.swtrmtFcltId
+ : item.pbnstRuseFcltId?.substring(0, 11) ?? "";
+
+ const findData = pbnListData.find(
+ (fclt: pubHasuType) => fclt.bscFctCd === swtrmtFcltId
+ );
+
+ return {
+ ...item,
+ swtrmtFcltId,
+ rvbsn: findData?.rvbsn || item.rvbsn || "-",
+ lgbsn: findData?.lgbsn || item.lgbsn || "-",
+ mdmbsn: findData?.mdmbsn || item.mdmbsn || "-",
+ rgnNm: findData?.rgnNm || item.rgnNm || "-",
+ sido: findData?.sido || item.sido || "-",
+ gugun: findData?.gugun || item.gugun || "-",
+ bscFctNm: findData?.bscFctNm || item.bscFctNm || "-",
+ efflWqltStndrdNm:
+ findData?.efflWqltStndrdNm || item.efflWqltStndrdNm || "-",
+ tel: findData?.tel || item.tel || "-",
+ fctCpc: Number(findData?.fctCpc ?? item.fctCpc) || 0,
+ ruseUtztnFcltNm: item.ruseUtztnFcltNm || "-",
+ fcltCpct: Number(item.fcltCpct) || 0,
+ splyExtraCpct: Number(item.splyExtraCpct) || 0,
+ ruseCpct: Number(item.ruseCpct) || 0,
+ usageTotal: Number(item.usageTotal) || 0,
+ inUsage: Number(item.inUsage) || 0,
+ outUsage: Number(item.outUsage) || 0,
+ operMthd: item.operMthd || "-",
+ rprtvBzenty: item.rprtvBzenty || "-",
+ bgngDt: item.bgngDt || "",
+ endDt: item.endDt || "",
+ prfList: item.prfList ?? [],
+ };
+ });
+
+ return { data, count: response.count };
+};
+
export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
set: any
) => {
@@ -261,6 +383,49 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
},
}));
},
+ pbnstSttnList: async (
+ isExcel: boolean,
+ page: string,
+ total: string,
+ reurnValue: ReturnType,
+ searchNm: string | undefined,
+ year: string,
+ _fclts: string[]
+ ) => {
+ try {
+ const pbnstSttnRes = await pbnstListFetch(
+ page,
+ total,
+ reurnValue,
+ searchNm,
+ year
+ );
+
+ if (isExcel) {
+ const pbnstExcel = excelPbnstSttnParsing(pbnstSttnRes.data);
+ set((state: pbnstSttnState) => ({
+ ...state,
+ pbnstSttn: {
+ ...state.pbnstSttn,
+ excelList: pbnstExcel,
+ },
+ }));
+ } else {
+ set((state: pbnstSttnState) => ({
+ ...state,
+ pbnstSttn: {
+ ...state.pbnstSttn,
+ pbnstSttnRes: pbnstSttnRes.data,
+ pbnstSttnResCount: pbnstSttnRes.count,
+ pbnstDetail: {} as customPbnst,
+ isTableLoaded: true,
+ },
+ }));
+ }
+ } catch (error) {
+ console.log("error", error);
+ }
+ },
//테이블 헤드를 조정한다.
pbnstChSttnHead: async (
headList: z.infer
diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type.tsx
index 7d0f8a068..ee202d4f6 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/type.tsx
@@ -1,10 +1,11 @@
import type { PrfType } from "@/app/store/prfmncReg/pbnstPrfmncReg/type";
export type WaterReuseFacility = {
+ swtrmtFcltId?: string;
bscFctNm: string; // 기본시설명 (예: "난지")
efflWqltStndrdNm: string; // 방류수 수질 기준명 (예: "500톤 이상(Ⅲ지역)")
fcltCpct: number; // 시설 용량 (숫자형, 예: 1)
- fctCpc: string; // 시설 처리 능력 (예: "2360000")
+ fctCpc: number; // 시설 처리 능력 (예: 2360000)
gugun: string; // 구군 정보 (예: " ")
inUsage: number; // 유입량 (예: 1387)
lgbsn: string; // 대수계 (예: "한강본류")
From c0b63a655e755960d86fe14a8c8a22dc89c799d4 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Wed, 10 Jun 2026 11:35:09 +0900
Subject: [PATCH 17/96] =?UTF-8?q?wr:=20=20isReset=20=EC=82=AD=EC=A0=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx | 4 ----
apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx | 2 +-
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
index 70914ab7b..4b635016e 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
@@ -48,7 +48,6 @@ export default function PbnstSttn() {
const { pbnstSttnRes, pbnstSttnResCount } = pbnstSttn;
const { laeSeCd } = auth; // 지자체구분코드
- const [isReset, setIsReset] = useState(false);
const ref = useRef({} as ReturnType);
const [searchYear, setSearchYear] = useState(
String(new Date().getFullYear())
@@ -271,7 +270,6 @@ export default function PbnstSttn() {
searchYear,
[]
);
- // setIsReset(true);
}}
excelClick={excelClick}
initClick={function (): void {
@@ -310,9 +308,7 @@ export default function PbnstSttn() {
searchYear,
[]
);
- // setIsReset(false);
}}
- resetPageNo={isReset}
widthFixed={true}
>
diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
index 57cfd0a1a..5b2a72acf 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/index.tsx
@@ -390,7 +390,7 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
reurnValue: ReturnType,
searchNm: string | undefined,
year: string,
- _fclts: string[]
+ // _fclts: string[]
) => {
try {
const pbnstSttnRes = await pbnstListFetch(
From 4148a87f3298f1b9c3d1fca4faef5e193999f29e Mon Sep 17 00:00:00 2001
From: jangwoong
Date: Wed, 10 Jun 2026 14:16:43 +0900
Subject: [PATCH 18/96] =?UTF-8?q?[as=20frontend]=20=EC=8B=9C=EB=8F=84/?=
=?UTF-8?q?=EA=B5=AC=EA=B5=B0=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../pages/instl-sncn/ui/cnfm-regist-page.tsx | 18 ++++++++++++------
.../src/pages/instl-sncn/ui/cnfm-view-page.tsx | 6 +++---
2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
index 95a85a40f..8b736b028 100644
--- a/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
+++ b/apps/as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx
@@ -155,12 +155,14 @@ const normalizeChecklistResultRows = (payload: any): any[] => {
*/
function CnfmRegistPage({ initialData }: { initialData?: any } = {}) {
const router = useRouter();
- const userInfo2 = useUserStore((state) => state.userInfo);
+ const userInfo = useUserStore((state) => state.userInfo);
// userInfo?.dtlInstCd 테스트 코드 ENV.ROLE_USER03 , KECO 권한 테스트용 (실제 권한에 맞게 변경 필요)
+ /*
const userInfo = {
...userInfo2,
dtlInstCd: "ROLE_USER03", //ROLE_USER03, ROLE_USER02, ROLE_USER01 KECO 권한 테스트용 (실제 권한에 맞게 변경 필요)
};
+ */
const alert = useAlertStore((state) => state.setMessage);
const qc = useQueryClient();
const currentDet = useMemo(() => initialData?.detDto ?? initialData, [initialData]);
@@ -1124,7 +1126,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) {
}
const toInstlSncnMngPayload = (prgrsSttsComCd: "SV" | "ST"| "ER"): InstlSncnMng => ({
- instlSncnDocNo: docId ?? "", // 수정 시 기존 문서번호 유지, 신규 저장 시 빈값
+ instlSncnDocNo: docId ?? "",
admdstCd: "",
sidoNm: "",
sggNm: "",
@@ -1155,6 +1157,8 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) {
regDt: "",
mdfcnDt: "",
rgtrNm: "",
+ gugun: "",
+ sido: ""
});
async function handleSave() {
@@ -1303,7 +1307,9 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) {
| 신청 지자체 |
- {userInfo?.enoNm ?? "\u00A0"}
+ {isModifyMode
+ ? `${currentDet?.sido ?? "-"} ${currentDet?.gugun ?? "-"}`
+ : userInfo?.laeSeNm ?? "\u00A0"}
|
|
@@ -1312,9 +1318,9 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) {
{[
- ["CNFM", "설치인가"],
- ["APR", "설치승인"],
- ["AFA", "폐지인가"],
+ ["1", "설치인가"],
+ ["2", "설치승인"],
+ ["3", "폐지승인"],
].map(([val, label]) => (
@@ -573,7 +606,7 @@ function CnfmViewPage({ id }: { id: string }) {
|
{bizCstList.map((node: any) => {
-
+
const pl = indentPx(node.indAcntgSeCdNm);
const bscPlanAmt = Number(node.bscPlanAmt) || 0;
const budgetReflct = Number(node.bgtRfltAmt) || 0;
@@ -588,8 +621,8 @@ function CnfmViewPage({ id }: { id: string }) {
node.treeLevel === 1
? "bg-blue-50 font-bold"
: node.treeLevel === 2
- ? "bg-gray-100 font-semibold"
- : ""
+ ? "bg-gray-100 font-semibold"
+ : ""
}
>
{node.treeLevel <= 2 ? (
@@ -631,31 +664,30 @@ function CnfmViewPage({ id }: { id: string }) {
{/* 체크리스트 */}
-
-
-
체크리스트
-
-
- {Array.from(new Set(taskCodes)).map((code) => {
- const name = TASK_CODE_LABELS[code] ?? code;
- const active = selectedTaskCode === code;
- return (
-
{visibleReviewStepCodes.length === 0 ? (
@@ -666,11 +698,10 @@ function CnfmViewPage({ id }: { id: string }) {
setSelectedReviewStep(stepCode)}
>
{stepCode}
@@ -701,7 +732,7 @@ function CnfmViewPage({ id }: { id: string }) {
-
아니오
@@ -718,50 +749,50 @@ function CnfmViewPage({ id }: { id: string }) {
selectedChecklistRows.map((row: any) => {
const key = `${row.taskSeComCd ?? ""}_${row.cklstSn}_${row.cklstArtclSn ?? ""}_${row.cklstRvwSn}_${row.rvwStpComCd ?? "LOCAL"}`;
const hasResult = row.rvwRsltAnmlyYn === "Y" || row.rvwRsltAnmlyYn === "N";
- const showRadios = row.bchckUseYn === "Y" ;
+ const showRadios = row.bchckUseYn === "Y";
return (
| {row.cklstArtclNm} |
{row.treeLevel > 1 ? "└ " : ""}{row.rvwCn} |
- {!showRadios ? (
- <>
- - |
- - |
- >
- ) : (
- <>
-
- setViewCheckResults((prev) => ({ ...prev, [key]: "Y" }))}
- />
- |
-
- setViewCheckResults((prev) => ({ ...prev, [key]: "N" }))}
- />
- |
- >
- )}
- {showRadios && selectedReviewStep !== "LOCAL" ? (
-
- |
- ) : null}
+ {!showRadios ? (
+ <>
+ - |
+ - |
+ >
+ ) : (
+ <>
+
+ setViewCheckResults((prev) => ({ ...prev, [key]: "Y" }))}
+ />
+ |
+
+ setViewCheckResults((prev) => ({ ...prev, [key]: "N" }))}
+ />
+ |
+ >
+ )}
+ {showRadios && selectedReviewStep !== "LOCAL" ? (
+
+ |
+ ) : null}
);
})
@@ -778,7 +809,7 @@ function CnfmViewPage({ id }: { id: string }) {
- | 필수 자료명 |
+ 필수 자료명 |
파일명 |
크기 |
diff --git a/apps/as/src/shared/config/api.ts b/apps/as/src/shared/config/api.ts
index 46ff4757d..cda8ce5fb 100644
--- a/apps/as/src/shared/config/api.ts
+++ b/apps/as/src/shared/config/api.ts
@@ -20,6 +20,7 @@ export const ENDPOINT = {
AS_ELAPR_SERVICE: {
ELAPR_TMPLT: "/as-elapr-service/api/v1/elapr-tmplt",
ELAPR_APLN: "/as-elapr-service/api/v1/elapr-apln",
+ ELAPR_DMND: "/as-elapr-service/api/v1/elapr-dmnd",
},
AS_CHECKLIST_SERVICE: {
CKLST: "/as-service/api/v1/cklst",
From 04edb49c9f6367a2bbda4af3364da3b60bb850ac Mon Sep 17 00:00:00 2001
From: ljpark
Date: Mon, 15 Jun 2026 15:48:05 +0900
Subject: [PATCH 27/96] =?UTF-8?q?wr:=20=EC=A7=80=EB=8F=84=20back=20?=
=?UTF-8?q?=ED=85=8C=EB=A7=88=20=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/src/app/styles/components.css | 56 +++++++++++++++++++
.../business_components/src/ui/map/GisTree.js | 14 ++---
2 files changed, 63 insertions(+), 7 deletions(-)
diff --git a/apps/wr/src/app/styles/components.css b/apps/wr/src/app/styles/components.css
index 4dc30bafd..fd651fe6c 100644
--- a/apps/wr/src/app/styles/components.css
+++ b/apps/wr/src/app/styles/components.css
@@ -21,6 +21,62 @@
.card-header {
@apply border-b-[#3f4042];
}
+
+ .gis-layer-panel {
+ background: #111214;
+ border-right-color: #2f3136;
+ box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.03);
+ }
+
+ .gis-layer-panel-title {
+ color: #f3f4f6;
+ }
+
+ .gis-layer-panel hr {
+ border-color: #2f3136;
+ }
+
+ .gis-layer-row {
+ color: #e5e7eb;
+ }
+
+ .gis-layer-row:hover {
+ background: rgba(255, 255, 255, 0.08);
+ }
+
+ .gis-layer-row span,
+ .gis-layer-row label {
+ color: #e5e7eb !important;
+ }
+
+ .gis-layer-row input[type="checkbox"] {
+ accent-color: #c026d3;
+ }
+
+ .gis-layer-action-button {
+ background: #1a1c20;
+ border-color: #3b82f6;
+ color: #cfe3ff;
+ }
+
+ .gis-layer-action-button:hover {
+ background: #23262b;
+ }
+
+ .gis-layer-setting {
+ background: #111214;
+ border-top: 1px solid #2f3136;
+ }
+
+ .gis-layer-toggle {
+ background: #111214;
+ border-color: #2f3136;
+ color: #f3f4f6;
+ }
+
+ .gis-layer-toggle:hover {
+ background: #1a1c20;
+ }
}
input[type="file"] {
diff --git a/packages/common/business_components/src/ui/map/GisTree.js b/packages/common/business_components/src/ui/map/GisTree.js
index 75f523cd4..5f9510bb5 100644
--- a/packages/common/business_components/src/ui/map/GisTree.js
+++ b/packages/common/business_components/src/ui/map/GisTree.js
@@ -518,7 +518,7 @@ export default React.memo(function GisTree({
<>
{/* 사이드 패널 */}
- 시설물
+ 시설물
{/* DnD Tree */}
@@ -550,7 +550,7 @@ export default React.memo(function GisTree({
return (
handleLayerImgClick(
node.data.lyrTyNm,
@@ -627,13 +627,13 @@ export default React.memo(function GisTree({
{LayerSettingView && (
-
+
)}
setVisible(false)}
- className={`absolute right-[-3px] z-50 transform rounded-l-none rounded-r border border-l border-gray-300 bg-white px-1 py-2 shadow-sm ${toggleButtonPositionClass}`}
+ className={`gis-layer-toggle absolute right-[-3px] z-50 transform rounded-l-none rounded-r border border-l border-gray-300 bg-white px-1 py-2 shadow-sm ${toggleButtonPositionClass}`}
>
@@ -641,7 +641,7 @@ export default React.memo(function GisTree({
{!visible && (
setVisible(true)}
- className={`absolute left-[-3px] z-50 transform rounded-r border border-r border-gray-300 bg-white px-1 py-2 shadow-sm ${toggleButtonPositionClass}`}
+ className={`gis-layer-toggle absolute left-[-3px] z-50 transform rounded-r border border-r border-gray-300 bg-white px-1 py-2 shadow-sm ${toggleButtonPositionClass}`}
>
From 1fc6707bb327834b34ff069f2d19d59cbf901321 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Mon, 15 Jun 2026 16:27:41 +0900
Subject: [PATCH 28/96] =?UTF-8?q?wr:=20=EC=B4=9D=EB=8C=80=EC=9E=A5?=
=?UTF-8?q?=EA=B7=A0=EA=B5=B0=EC=88=98=20=EB=8B=A8=EC=9C=84=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx | 2 +-
apps/wr/app/store/matDmd/coMatRvw/type.tsx | 2 +-
apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx | 2 +-
apps/wr/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx | 2 +-
.../app/store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx | 2 +-
.../app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx | 2 +-
apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx | 2 +-
apps/wr/app/store/ruseFcltMng/fcltSttn/pbnstSttn/headList.tsx | 2 +-
.../pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx | 2 +-
9 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
index bf784b41a..bf8d5c5bb 100644
--- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
@@ -440,7 +440,7 @@ export default function CoMatRvw() {
control={form.control}
name="grssClfg"
render={({ field }) => (
-
+
(
-
+
Date: Mon, 15 Jun 2026 17:42:55 +0900
Subject: [PATCH 29/96] =?UTF-8?q?[cs]=20chore:=20=EC=83=81=EC=9C=84?=
=?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=AA=A9=EB=A1=9D=20=EC=BB=AC=EB=9F=BC=20?=
=?UTF-8?q?=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/cs/src/pages/code/model/upcode-table-columns.tsx | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/apps/cs/src/pages/code/model/upcode-table-columns.tsx b/apps/cs/src/pages/code/model/upcode-table-columns.tsx
index c35ea4d70..5c9108543 100644
--- a/apps/cs/src/pages/code/model/upcode-table-columns.tsx
+++ b/apps/cs/src/pages/code/model/upcode-table-columns.tsx
@@ -1,8 +1,11 @@
-import dayjs from "dayjs";
import { useState } from "react";
+
import type { ColumnDef } from "@tanstack/react-table";
-import { Button } from "@common/components";
+import dayjs from "dayjs";
+
import type { UpCode } from "@/entities/code";
+import { Button } from "@common/components";
+
import { UpCodeManagementDialog } from "../ui/upcode-dialog";
export const columns: ColumnDef [] = [
@@ -24,7 +27,7 @@ export const columns: ColumnDef[] = [
header: "상위코드명",
},
{
- accessorKey: "cdSe",
+ accessorKey: "cdSeNm",
header: "코드구분",
},
{
From f5c281cf86d14eaba11564893d03f9c78b61ac5b Mon Sep 17 00:00:00 2001
From: ljpark
Date: Tue, 16 Jun 2026 15:51:44 +0900
Subject: [PATCH 30/96] =?UTF-8?q?wr:=20=EC=8B=9C=EA=B5=B0=EA=B5=AC=20?=
=?UTF-8?q?=ED=95=B4=EB=8B=B9=20=EC=9C=84=EC=B9=98=EB=A1=9C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/ui/map/searchBar/searchBar.tsx | 11 +-
.../src/ui/map/searchBar/utils.ts | 135 ++++++++++++------
2 files changed, 95 insertions(+), 51 deletions(-)
diff --git a/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx b/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
index a663feabf..e117b86e0 100644
--- a/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
+++ b/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
@@ -4,7 +4,7 @@ import { Button } from "@common/components/ui";
import { useCallback, useEffect, useState } from "react";
import SearchInputText from "./SearchInputText";
import GisApp from "../lib/gis.core";
-import { moveMapToCenter, sidoCenter, sigunguCenter } from "./utils";
+import { getSigunguCenter, moveMapToCenter, sidoCenter } from "./utils";
const FACILITY_TYPE_URL_MAP: Record = {
tb_il_swage_prcs_fclt:
@@ -112,9 +112,9 @@ export const SearchBar = ({
.map((item: any) => ({
val: item.lwpoCd,
text: item.lwpoCdNm,
- center: sigunguCenter[item.lwpoCd?.trim()],
- }))
- .sort((a: any, b: any) => a.text.localeCompare(b.text, 'ko'));
+ center: getSigunguCenter(item.lwpoCd),
+ }));
+ //.sort((a: any, b: any) => a.text.localeCompare(b.text, 'ko'));
setSidoData([{ text: "시도", val: "0" }, ...sidoList]);
setSigunData(sigunList);
};
@@ -168,7 +168,10 @@ export const SearchBar = ({
const selectedSido = sidoData.find((item) => item.val === sidoValue);
if (!selectedSido?.center) return;
+ console.log("시도 : " +sidoValue);
+ console.log("시군구 : " + sigunValue);
if (sigunValue !== "0") {
+ console.log(sigunData.filter((item) => item.val == sigunValue));
const selectedSigun =
filteredSigunData.find((item) => item.val === sigunValue) ??
sigunData.find((item) => item.val === sigunValue);
diff --git a/packages/common/business_components/src/ui/map/searchBar/utils.ts b/packages/common/business_components/src/ui/map/searchBar/utils.ts
index 57528d6b9..5c9aef350 100644
--- a/packages/common/business_components/src/ui/map/searchBar/utils.ts
+++ b/packages/common/business_components/src/ui/map/searchBar/utils.ts
@@ -2,6 +2,11 @@ import type { RefObject } from "react";
import { transform } from "ol/proj";
import GisApp from "../lib/gis.core";
+/**
+ *
+ * @param geometry
+ * @returns
+ */
export const getGeometryCenter = (geometry: any): [number, number] | null => {
if (!geometry?.coordinates) return null;
@@ -42,22 +47,34 @@ export const getGeometryCenter = (geometry: any): [number, number] | null => {
return [(minX + maxX) / 2, (minY + maxY) / 2];
};
+/**
+ * 이미 5179좌표계이면 변환하지 않음.
+ * @param centerCoord
+ * @returns
+ */
export const getMapCenterCoordinate = (centerCoord: [number, number]): [number, number] => {
const [x, y] = centerCoord;
- const looksLikeLonLat = Math.abs(x) <= 180 && Math.abs(y) <= 90;
- const looksLikeLatLonSwapped = Math.abs(x) <= 90 && Math.abs(y) <= 180;
+ const looksLikeLonLat = Math.abs(x) <= 180 && Math.abs(y) <= 90; // 경위도
+ const looksLikeLatLonSwapped = Math.abs(x) <= 90 && Math.abs(y) <= 180; // 위경도
- if (looksLikeLonLat) {
- return transform(centerCoord, GisApp.FROM_PROJ, GisApp.TO_PROJ) as [number, number];
+ if (looksLikeLonLat) {
+ return transform(centerCoord, GisApp.FROM_PROJ, GisApp.TO_PROJ) as [number, number]; // 4326 -> 5179
}
if (looksLikeLatLonSwapped) {
- return transform([y, x], GisApp.FROM_PROJ, GisApp.TO_PROJ) as [number, number];
+ return transform([y, x], GisApp.FROM_PROJ, GisApp.TO_PROJ) as [number, number]; // 4326 -> 5179
}
return centerCoord;
};
+/**
+ *
+ * @param gisMaps
+ * @param centerCoord
+ * @param zoom
+ * @returns
+ */
export const moveMapToCenter = (
gisMaps: RefObject,
centerCoord?: [number, number],
@@ -69,7 +86,7 @@ export const moveMapToCenter = (
if (!map?.getView) return;
const view = map.getView();
- const center = getMapCenterCoordinate(centerCoord);
+ const center = getMapCenterCoordinate(centerCoord); // 4326 -> 5179
if (!Number.isFinite(center[0]) || !Number.isFinite(center[1])) return;
const projection = view.getProjection?.();
@@ -89,7 +106,28 @@ export const moveMapToCenter = (
});
};
+/**
+ * 시군구 코드에 해당하는 중심 좌표를 반환한다.
+ * 먼저 전체 코드로 정확히 조회하고, 값이 없으면 앞 4자리가 같은 다른 시군구 코드의 좌표를 대체로 사용한다.
+ *
+ * @param lwpoCd 행정구역 코드. 예: "41110"
+ * @returns 시군구 중심 좌표. 조회 결과가 없으면 undefined
+ */
+export const getSigunguCenter = (lwpoCd?: string | null): [number, number] | undefined => {
+ const code = lwpoCd?.trim();
+ if (!code) return undefined;
+ const exactCenter = sigunguCenter[code];
+ if (exactCenter) return exactCenter;
+
+ const prefix = code.slice(0, 4);
+ if (prefix.length < 4) return undefined;
+
+ const fallbackCode = Object.keys(sigunguCenter).find((key) => key.startsWith(prefix));
+ return fallbackCode ? sigunguCenter[fallbackCode] : undefined;
+};
+
+// EPSG:5179 기준
export const sidoCenter: Record = {
"11": [953551.4119216551, 1951826.357686395], // 서울특별시
"26": [1139616.39795744, 1683535.70569214], // 부산광역시
@@ -98,23 +136,25 @@ export const sidoCenter: Record = {
"29": [939294.465052485, 1684630.0528689548], // 광주광역시
"30": [991301.069516585, 1816039.953510165], // 대전광역시
"31": [1155621.6870651902, 1727062.69578941], // 울산광역시
- "36": [979381.304388835, 1841430.83666584], // 세종특별자치시
+ // "36": [979381.304388835, 1841430.83666584], // 세종특별자치시
"41": [965621.8990488851, 1954345.5683645], // 경기도
- "51": [1065114.938094025, 1980661.8453088552], // 강원특별자치도
+ "42": [1065114.938094025, 1980661.8453088552], // 강원특별자치도
"43": [1041183.7558293699, 1848671.9260201901], // 충청북도
"44": [918689.7963483699, 1836216.9375309348], // 충청남도
- "52": [949568.330647045, 1748060.215177075], // 전북특별자치도
+ "45": [949568.330647045, 1748060.215177075], // 전북특별자치도
"46": [906934.38266853, 1637218.959990745], // 전라남도
"47": [1207219.543276005, 1843195.136606685], // 경상북도
"48": [1081504.77257488, 1690185.644486565], // 경상남도
- "50": [912295.3285630699, 1508716.724020285], // 제주특별자치도
+ "49": [909678.884, 1485988.314], // [912295.3285630699, 1508716.724020285], // 제주특별자치도
+ "50": [979381.304388835, 1841430.83666584], // 세종특별자치시
};
+// EPSG:5179 기준, 구코드 기준임. 즉, 하수도정보시스템 기준, tb_ms_sgg는 신코드 기준임.
export const sigunguCenter: Record = {
"41820": [994886.197272545, 1979052.53325589], // 가평군
"11680": [961673.31210415, 1944170.63969123], // 강남구
"11740": [968769.7482373801, 1950018.61637764], // 강동구
- "51150": [1117008.10469879, 1968660.393087245], // 강릉시
+ "42150": [1117008.10469879, 1968660.393087245], // 강릉시
"11305": [957184.89551525, 1960948.17897649], // 강북구
"11500": [940169.1006571399, 1952038.261591505], // 강서구
"26440": [1125722.34144724, 1680630.4026719849], // 강서구
@@ -128,11 +168,11 @@ export const sigunguCenter: Record = {
"28245": [932663.7165225251, 1951314.751646345], // 계양구
"47830": [1074241.6005863552, 1748726.26930297], // 고령군
"48820": [1073144.623548525, 1668111.92215727], // 고성군
- "51820": [1079906.976889925, 2044841.96337935], // 고성군
+ "42820": [1079906.976889925, 2044841.96337935], // 고성군
"41281": [945034.57886003, 1962467.607140625], // 고양시 덕양구
"41285": [937759.4023643399, 1964877.5403761598], // 고양시 일산동구
"41287": [931767.42700348, 1964473.38259711], // 고양시 일산서구
- "52790": [918393.62804468, 1716132.826828825], // 고창군
+ "45790": [918393.62804468, 1716132.826828825], // 고창군
"46770": [982955.40283695, 1619845.06015117], // 고흥군
"46720": [976956.4637679299, 1689787.68075054], // 곡성군
"44150": [962642.898486655, 1831283.240475945], // 공주시
@@ -148,14 +188,14 @@ export const sigunguCenter: Record = {
"11530": [943255.85156361, 1944224.7496726601], // 구로구
"41310": [967836.346287095, 1955821.725581055], // 구리시
"47190": [1076297.5737083051, 1801900.2253747801], // 구미시
- "52130": [904674.42544751, 1767715.183037305], // 군산시
+ "45130": [904674.42544751, 1767715.183037305], // 군산시
"27720": [1103849.611897755, 1797204.1944948], // 군위군
"41410": [948411.5776788951, 1927135.757437655], // 군포시
"44710": [998110.87580872, 1792026.97835628], // 금산군
"26410": [1144696.85330015, 1697028.92074261], // 금정구
"11545": [946955.492372005, 1940271.753176735], // 금천구
"26710": [1155182.296211175, 1700204.308554315], // 기장군
- "52210": [935224.890489175, 1755205.56953502], // 김제시
+ "45210": [935224.890489175, 1755205.56953502], // 김제시
"47150": [1052988.6733146599, 1783129.650228145], // 김천시
"41570": [925936.0119416551, 1965389.1203246699], // 김포시
"48250": [1123054.361467805, 1698359.11561172], // 김해시
@@ -166,7 +206,7 @@ export const sigunguCenter: Record = {
"31140": [1164388.02782853, 1725008.616189565], // 남구
"28200": [931330.60305263, 1937119.742216935], // 남동구
"41360": [976250.43203106, 1960416.01281481], // 남양주시
- "52190": [993534.846345315, 1715101.9621615452], // 남원시
+ "45190": [993534.846345315, 1715101.9621615452], // 남원시
"48840": [1042145.28987352, 1636788.3540021451], // 남해군
"11350": [962686.53614943, 1961831.238915105], // 노원구
"44230": [969310.08745166, 1800569.86826501], // 논산시
@@ -187,20 +227,20 @@ export const sigunguCenter: Record = {
"41250": [963148.54470934, 1991284.1699954001], // 동두천시
"26260": [1143854.4548997101, 1691107.4825817398], // 동래구
"11590": [950875.3949149849, 1944274.8505625948], // 동작구
- "51170": [1137915.778823135, 1947378.462972425], // 동해시
+ "42170": [1137915.778823135, 1947378.462972425], // 동해시
"11440": [947783.55349907, 1951598.7669664049], // 마포구
"46110": [897040.76889998, 1645038.46904772], // 목포시
"46840": [899587.661355305, 1664175.9893810651], // 무안군
- "52730": [1019648.0651991949, 1770211.22681309], // 무주군
+ "45730": [1019648.0651991949, 1770211.22681309], // 무주군
"47280": [1055620.11152262, 1855147.380883595], // 문경시
- "28177": [926226.3594373399, 1940093.5607894901], // 미추홀구
+ "28170": [926226.3594373399, 1940093.5607894901], // 미추홀구
"48270": [1117632.749546145, 1722736.830743895], // 밀양시
"44180": [896412.984839845, 1817364.412693855], // 보령시
"46780": [974939.082074685, 1646364.3864357], // 보성군
"43720": [1018843.696119875, 1832681.50774474], // 보은군
"47920": [1125627.975921425, 1881676.019098885], // 봉화군
"26230": [1140857.032737495, 1686905.10585393], // 부산진구
- "52800": [906904.98605649, 1743711.597374285], // 부안군
+ "45800": [906904.98605649, 1743711.597374285], // 부안군
"44760": [943835.889385045, 1803731.764881715], // 부여군
"41194": [937043.513148805, 1941917.36078241], // 부천시 소사구
"41196": [937651.62357278, 1948088.650724335], // 부천시 오정구
@@ -214,14 +254,14 @@ export const sigunguCenter: Record = {
"48240": [1048464.90586407, 1669923.18795966], // 사천시
"26380": [1134089.12930976, 1669378.70600097], // 사하구
"48860": [1036496.214687915, 1711373.1111203502], // 산청군
- "51230": [1142435.56217199, 1918978.17539709], // 삼척시
+ "42230": [1142435.56217199, 1918978.17539709], // 삼척시
"47250": [1050861.110185015, 1827830.141259105], // 상주시
"26140": [1137931.5983933099, 1678744.3981297952], // 서구
"27170": [1094695.438967345, 1764784.74637237], // 서구
"28260": [922809.601799805, 1950975.3525035651], // 서구
"29140": [941246.057711575, 1682370.2693891348], // 서구
"30170": [985795.240808525, 1808929.24401602], // 서구
- "50130": [912245.46105533, 1478972.2801259952], // 서귀포시
+ "49130": [912245.46105533, 1478972.2801259952], // 서귀포시
"11410": [950162.9458121, 1953864.48715979], // 서대문구
"44210": [909519.454637895, 1868915.7895147852], // 서산시
"44770": [925279.862903135, 1788678.070235445], // 서천군
@@ -233,7 +273,7 @@ export const sigunguCenter: Record = {
"11290": [957924.54027983, 1956512.99273417], // 성북구
"47840": [1065227.20912238, 1769071.96163128], // 성주군
"36110": [979381.304388835, 1841430.83666584], // 세종특별자치시
- "51210": [1089137.1194603802, 2019900.279034885], // 속초시
+ "42210": [1089137.1194603802, 2019900.279034885], // 속초시
"11710": [965928.83189988, 1945132.495701395], // 송파구
"27260": [1104712.551021275, 1760363.086093105], // 수성구
"26500": [1146933.8448469099, 1686288.07716536], // 수영구
@@ -241,7 +281,7 @@ export const sigunguCenter: Record = {
"41117": [961096.623048695, 1919787.236461525], // 수원시 영통구
"41111": [955699.294199125, 1924459.3724800851], // 수원시 장안구
"41115": [956709.41575029, 1919672.72074137], // 수원시 팔달구
- "52770": [962532.77503817, 1714757.02288094], // 순창군
+ "45770": [962532.77503817, 1714757.02288094], // 순창군
"46150": [989441.17839757, 1668074.09581569], // 순천시
"41390": [934025.6249972349, 1932609.450570995], // 시흥시
"46910": [837068.838454425, 1628081.7615658198], // 신안군
@@ -252,14 +292,14 @@ export const sigunguCenter: Record = {
"41550": [983047.68986298, 1891835.77152603], // 안성시
"41173": [951774.092625505, 1933701.863194715], // 안양시 동안구
"41171": [947757.35105343, 1934091.7197804102], // 안양시 만안구
- "51800": [1044799.8868826301, 2018930.475621245], // 양구군
+ "42800": [1044799.8868826301, 2018930.475621245], // 양구군
"48330": [1140452.0009971252, 1713003.89300298], // 양산시
- "51830": [1097181.1822994999, 2001875.93591869], // 양양군
- "41630": [957059.65493005, 1978556.8707086649], // 양주시
+ "42830": [1097181.1822994999, 2001875.93591869], // 양양군
+ "41710": [957059.65493005, 1978556.8707086649], // 양주시
"11470": [943115.85871501, 1947726.50098438], // 양천구
"41830": [1006799.81121338, 1946640.3454016], // 양평군
"46130": [1005710.6789662449, 1606473.622557845], // 여수시
- "41670": [1007389.488139985, 1920986.5590416798], // 여주시
+ "41730": [1007389.488139985, 1920986.5590416798], // 여주시
"28185": [924301.1973107599, 1932716.5874987599], // 연수구
"26470": [1143967.4104618952, 1688206.29479672], // 연제구
"41800": [955142.1788103101, 2011772.731874695], // 연천군
@@ -270,7 +310,7 @@ export const sigunguCenter: Record = {
"11560": [948221.9355719599, 1946989.433783595], // 영등포구
"46830": [918568.42419672, 1645644.03685685], // 영암군
"47760": [1147157.8720550952, 1855483.55416634], // 영양군
- "51750": [1089601.7085692, 1913792.65877573], // 영월군
+ "42750": [1089601.7085692, 1913792.65877573], // 영월군
"47210": [1096747.798418135, 1876468.75553605], // 영주시
"47230": [1128168.955619915, 1779896.3669964802], // 영천시
"44810": [935536.49511435, 1852175.0178411552], // 예산군
@@ -279,7 +319,7 @@ export const sigunguCenter: Record = {
"43730": [1016925.1630849349, 1812306.15335931], // 옥천군
"28720": [831017.06725137, 1941763.7671776651], // 옹진군
"46890": [934681.072970785, 1580260.96434381], // 완도군
- "52710": [971714.974980355, 1764297.860421155], // 완주군
+ "45710": [971714.974980355, 1764297.860421155], // 완주군
"11170": [954152.265892775, 1948105.11473188], // 용산구
"41463": [966362.167328945, 1919086.059435395], // 용인시 기흥구
"41465": [962751.309054115, 1926067.760215145], // 용인시 수지구
@@ -287,7 +327,7 @@ export const sigunguCenter: Record = {
"47940": [1339459.86503077, 1939972.251018405], // 울릉군
"31710": [1152103.383022245, 1727062.6953479801], // 울주군
"47930": [1158508.6557213152, 1879083.142978875], // 울진군
- "51130": [1042675.604280725, 1925192.470561375], // 원주시
+ "42130": [1042675.604280725, 1925192.470561375], // 원주시
"30200": [985050.9636310451, 1820539.200680445], // 유성구
"11380": [949045.72456328, 1957730.2124330248], // 은평구
"43770": [1010863.03644352, 1888460.954926385], // 음성군
@@ -296,17 +336,18 @@ export const sigunguCenter: Record = {
"41430": [954677.940289845, 1928890.756176705], // 의왕시
"41150": [962517.29720437, 1970466.861837395], // 의정부시
"41500": [998578.52141335, 1911408.9081171248], // 이천시
- "52140": [954517.27659099, 1780482.64843965], // 익산시
- "51810": [1065461.7186508449, 2010839.9914423148], // 인제군
- "52750": [978229.1338949, 1735882.14962747], // 임실군
+ "45140": [954517.27659099, 1780482.64843965], // 익산시
+ "42810": [1065461.7186508449, 2010839.9914423148], // 인제군
+ "45750": [978229.1338949, 1735882.14962747], // 임실군
"46880": [932255.0392670301, 1705063.362106785], // 장성군
- "52740": [1002766.6532682499, 1739693.270420835], // 장수군
+ "45740": [1002766.6532682499, 1739693.270420835], // 장수군
"46800": [946864.73876017, 1628580.0165673052], // 장흥군
+ "45110": [965336.86328101, 1761811.9640769851], // 전주시
"52113": [965336.86328101, 1761811.9640769851], // 전주시 덕진구
"52111": [966893.605588815, 1754468.0213283598], // 전주시 완산구
- "51770": [1110360.32014753, 1931013.538670365], // 정선군
- "52180": [947098.239651715, 1735070.37728938], // 정읍시
- "50110": [912295.3285630699, 1517557.88079664], // 제주시
+ "42770": [1110360.32014753, 1931013.538670365], // 정선군
+ "45180": [947098.239651715, 1735070.37728938], // 정읍시
+ "49110": [910293.463, 1500596.952], //[912295.3285630699, 1517557.88079664], // 제주시
"43150": [1055671.53255738, 1893115.04197246], // 제천시
"11110": [954639.31671291, 1955652.65017071], // 종로구
"11140": [955326.326625775, 1951065.0090038702], // 중구
@@ -318,7 +359,7 @@ export const sigunguCenter: Record = {
"11260": [964157.58830932, 1955182.665424475], // 중랑구
"43745": [1009013.34585424, 1864734.46162539], // 증평군
"46900": [870540.7578711801, 1597916.46618356], // 진도군
- "52720": [995028.62264954, 1758625.23076353], // 진안군
+ "45720": [995028.62264954, 1758625.23076353], // 진안군
"48170": [1057167.869451315, 1689727.04548209], // 진주시
"43750": [994342.7517215649, 1875793.7535851048], // 진천군
"48740": [1090841.266427235, 1726085.44764784], // 창녕군
@@ -329,7 +370,7 @@ export const sigunguCenter: Record = {
"48129": [1111617.62626141, 1680996.6599733299], // 창원시 진해구
"44131": [974478.67761805, 1862026.08139811], // 천안시 동남구
"44133": [971707.02854063, 1875704.530427825], // 천안시 서북구
- "51780": [997447.306165415, 2024301.05104793], // 철원군
+ "42780": [997447.306165415, 2024301.05104793], // 철원군
"47820": [1116479.97088183, 1746481.442573125], // 청도군
"47750": [1139213.58132652, 1821067.804006115], // 청송군
"44790": [941752.03871163, 1827462.3607307798], // 청양군
@@ -337,16 +378,16 @@ export const sigunguCenter: Record = {
"43112": [994258.23710022, 1838908.2251619152], // 청주시 서원구
"43114": [997183.756680205, 1857171.4242312452], // 청주시 청원구
"43113": [989161.30366111, 1849501.26145491], // 청주시 흥덕구
- "51110": [1023515.451806125, 1986727.7291947599], // 춘천시
+ "42110": [1023515.451806125, 1986727.7291947599], // 춘천시
"43130": [1034982.8699803599, 1889790.67989893], // 충주시
"47850": [1086736.697665845, 1779277.075473485], // 칠곡군
- "51190": [1131634.14282853, 1912631.8063723398], // 태백시
+ "42190": [1131634.14282853, 1912631.8063723398], // 태백시
"44825": [864678.84145598, 1854929.12571281], // 태안군
"48220": [1085316.421521755, 1640596.827168765], // 통영시
"41480": [941812.744809255, 1983528.9263305948], // 파주시
- "51760": [1088652.567431635, 1949959.4658569149], // 평창군
+ "42760": [1088652.567431635, 1949959.4658569149], // 평창군
"41220": [952557.5035727851, 1891740.1058186102], // 평택시
- "41650": [979667.7288193901, 1996457.8400075398], // 포천시
+ "41810": [979667.7288193901, 1996457.8400075398], // 포천시
"47111": [1173941.15980316, 1776164.6804896551], // 포항시 남구
"47113": [1155413.511896325, 1798939.39325854], // 포항시 북구
"41450": [974619.56368595, 1947933.69704679], // 하남시
@@ -358,10 +399,10 @@ export const sigunguCenter: Record = {
"46820": [907157.24936254, 1615346.232287635], // 해남군
"26350": [1151062.0301465848, 1690808.34175552], // 해운대구
"44800": [919404.43702764, 1841255.1935457601], // 홍성군
- "51720": [1049442.09422194, 1972233.65191397], // 홍천군
+ "42720": [1049442.09422194, 1972233.65191397], // 홍천군
"41590": [941810.22622111, 1906896.59289364], // 화성시
"46790": [955520.512544285, 1669429.020528105], // 화순군
- "51790": [1015098.9945956401, 2015706.532260655], // 화천군
- "51730": [1046904.40402372, 1943541.6685614302], // 횡성군
+ "42790": [1015098.9945956401, 2015706.532260655], // 화천군
+ "42730": [1046904.40402372, 1943541.6685614302], // 횡성군
};
From 58a03678e46ad97435ff846c201b4c6688401958 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Tue, 16 Jun 2026 18:16:14 +0900
Subject: [PATCH 31/96] =?UTF-8?q?wr:=20=EC=8B=9C=EC=84=A4=EB=AA=85=20?=
=?UTF-8?q?=EC=9E=90=EB=8F=99=EA=B2=80=EC=83=89=20=EC=A0=9C=EA=B1=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruseFcltMng/fcltSttn/rainSttn/page.tsx | 72 +++++++++++++------
.../ruseFcltMng/fcltSttn/rswtSttn/page.tsx | 58 +++++++++++----
apps/wr/app/store/common/auth/index.tsx | 8 +--
.../ruseFcltMng/fcltSttn/rainSttn/index.tsx | 2 +
.../src/ui/map/searchBar/searchBar.tsx | 4 +-
5 files changed, 103 insertions(+), 41 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx
index c1e9fb141..3d87dbbbf 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rainSttn/page.tsx
@@ -60,6 +60,11 @@ export default function RainSttn() {
}>({ data: undefined, isOpen: false });
const [fcltNm, setFcltNm] = useState("");
+ const [appliedSearch, setAppliedSearch] = useState({
+ conValue: "0",
+ fcltNm: "",
+ });
+ const [searchTrigger, setSearchTrigger] = useState(0);
const { t } = useTranslation("base");
const alert = useAlertStore((state) => state.setMessage);
const skipNextSearchRef = useRef(true);
@@ -142,16 +147,27 @@ export default function RainSttn() {
return;
}
+ const initialConValue =
+ laeSeCd === undefined || laeSeCd === "0"
+ ? "0"
+ : laeSeCd.length === 5
+ ? laeSeCd
+ : laeSeCd.slice(0, 2);
+
skipNextSearchRef.current = true;
+ setAppliedSearch({
+ conValue: initialConValue,
+ fcltNm: "",
+ });
rainSttnInit(
false,
1,
rainSttnSize,
- getFixedConValue(),
- fcltNm,
+ initialConValue,
+ "",
code as unknown as Record
);
- }, [rainSttn.isInit, rainSttnInit, fcltNm, code, getFixedConValue, isLaeSeCdReady]);
+ }, [rainSttn.isInit, rainSttnInit, code, isLaeSeCdReady, laeSeCd]);
useEffect(() => {
if (!isLaeSeCdReady) {
@@ -163,16 +179,28 @@ export default function RainSttn() {
return;
}
+ if (searchTrigger === 0) {
+ return;
+ }
+
rainSttnSearch(
false,
pageNation,
rainSttnSize,
- String(getFixedConValue()),
- fcltNm,
+ appliedSearch.conValue,
+ appliedSearch.fcltNm,
code as unknown as Record
);
isResetPage(false);
- }, [pageNation, rainSttnSearch, fcltNm, code, getFixedConValue, isLaeSeCdReady]);
+ }, [
+ pageNation,
+ searchTrigger,
+ rainSttnSearch,
+ code,
+ appliedSearch.conValue,
+ appliedSearch.fcltNm,
+ isLaeSeCdReady,
+ ]);
useEffect(() => {
if (!isLaeSeCdReady) {
@@ -212,19 +240,31 @@ export default function RainSttn() {
true,
1,
rainSttnResCount,
- String(getFixedConValue()),
- fcltNm,
+ appliedSearch.conValue,
+ appliedSearch.fcltNm,
code as unknown as Record
);
}, [
rainSttnSearch,
- fcltNm,
rainSttnResCount,
code,
- getFixedConValue,
+ appliedSearch.conValue,
+ appliedSearch.fcltNm,
isLaeSeCdReady,
]);
+ const handleSearch = useCallback(() => {
+ const nextSearch = {
+ conValue: String(getFixedConValue()),
+ fcltNm,
+ };
+
+ setAppliedSearch(nextSearch);
+ isResetPage(true);
+ setPageNation(1);
+ setSearchTrigger((prev) => prev + 1);
+ }, [fcltNm, getFixedConValue]);
+
useEffect(() => {
const data = tableData(rainSttnRes, { code });
const chData = data
@@ -318,17 +358,7 @@ export default function RainSttn() {
{
- rainSttnSearch(
- false,
- 1,
- rainSttnSize,
- String(getFixedConValue()),
- fcltNm,
- code as unknown as Record
- );
- isResetPage(true);
- }}
+ onClick={handleSearch}
>
조회
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx
index da953bb43..4e76336c5 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/rswtSttn/page.tsx
@@ -55,6 +55,11 @@ export default function RswtSttn() {
const [objSearch, setObjSearch] = useState ({ sgg: "", city: "" });
const [detailModal, setDetailModal] = useState<{ isOpen: boolean, data: customRswtBdst | undefined }>({ data: undefined, isOpen: false })
const [fcltNm, setFcltNm] = useState("");
+ const [appliedSearch, setAppliedSearch] = useState({
+ conValue: "0",
+ fcltNm: "",
+ });
+ const [searchTrigger, setSearchTrigger] = useState(0);
const { t } = useTranslation('base');
const alert = useAlertStore((state) => state.setMessage);
const isAllAreaUser = laeSeCd === "0";
@@ -137,16 +142,27 @@ export default function RswtSttn() {
return;
}
+ const initialConValue =
+ laeSeCd === undefined || laeSeCd === "0"
+ ? "0"
+ : laeSeCd.length === 5
+ ? laeSeCd
+ : laeSeCd.slice(0, 2);
+
skipNextSearchRef.current = true;
+ setAppliedSearch({
+ conValue: initialConValue,
+ fcltNm: "",
+ });
rswtSttnInit(
false,
1,
rswtSttnSize,
- getFixedConValue(),
- fcltNm,
+ initialConValue,
+ "",
code as unknown as Record
);
- }, [rswtSttn.isInit, rswtSttnInit, fcltNm, code, getFixedConValue, isLaeSeCdReady]);
+ }, [rswtSttn.isInit, rswtSttnInit, code, isLaeSeCdReady, laeSeCd]);
useEffect(() => {
const data = tableData(rswtSttnRes, { code });
@@ -208,8 +224,8 @@ export default function RswtSttn() {
}
isDownloadTriggered.current = true;
- rswtSttnSearch(true, 1, rswtSttnResCount, String(getFixedConValue()), fcltNm, code as unknown as Record);
- }, [rswtSttnSearch, fcltNm, rswtSttnResCount, code, getFixedConValue, isLaeSeCdReady]);
+ rswtSttnSearch(true, 1, rswtSttnResCount, appliedSearch.conValue, appliedSearch.fcltNm, code as unknown as Record);
+ }, [rswtSttnSearch, rswtSttnResCount, code, appliedSearch.conValue, appliedSearch.fcltNm, isLaeSeCdReady]);
useEffect(() => {
if (!isLaeSeCdReady) {
@@ -221,9 +237,29 @@ export default function RswtSttn() {
return;
}
- rswtSttnSearch(false, pageNation, rswtSttnSize, String(getFixedConValue()), fcltNm, code as unknown as Record);
+ if (searchTrigger === 0) {
+ return;
+ }
+
+ rswtSttnSearch(false, pageNation, rswtSttnSize, appliedSearch.conValue, appliedSearch.fcltNm, code as unknown as Record);
isResetPage(false)
- }, [pageNation, rswtSttnSearch, fcltNm, code, getFixedConValue, isLaeSeCdReady]);
+ }, [pageNation, searchTrigger, rswtSttnSearch, code, appliedSearch.conValue, appliedSearch.fcltNm, isLaeSeCdReady]);
+
+ const handleSearch = useCallback(() => {
+ if (!isLaeSeCdReady) {
+ return;
+ }
+
+ const nextSearch = {
+ conValue: String(getFixedConValue()),
+ fcltNm,
+ };
+
+ setAppliedSearch(nextSearch);
+ isResetPage(true);
+ setPageNation(1);
+ setSearchTrigger((prev) => prev + 1);
+ }, [fcltNm, getFixedConValue, isLaeSeCdReady]);
return (
<>
@@ -279,13 +315,7 @@ export default function RswtSttn() {
{
- if (!isLaeSeCdReady) {
- return;
- }
- rswtSttnSearch(false, 1, rswtSttnSize, String(getFixedConValue()), fcltNm, code as unknown as Record);
- isResetPage(true)
- }}
+ onClick={handleSearch}
>
조회
diff --git a/apps/wr/app/store/common/auth/index.tsx b/apps/wr/app/store/common/auth/index.tsx
index 6e9396e6e..fe99a02ae 100644
--- a/apps/wr/app/store/common/auth/index.tsx
+++ b/apps/wr/app/store/common/auth/index.tsx
@@ -52,10 +52,10 @@ export const authActionsExport: (set: any, get: any) => authActions = (
auth: {
...state.auth,
mngAuthrtYn: response[0].mngAuthrtYn,
- inqAuthrtYn: response[0].mngAuthrtYn,
- regAuthrtYn: response[0].mngAuthrtYn,
- mdfcnAuthrtYn: response[0].mngAuthrtYn,
- delAuthrtYn: response[0].mngAuthrtYn,
+ inqAuthrtYn: response[0].inqAuthrtYn,
+ regAuthrtYn: response[0].regAuthrtYn,
+ mdfcnAuthrtYn: response[0].mdfcnAuthrtYn,
+ delAuthrtYn: response[0].delAuthrtYn,
},
};
});
diff --git a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx
index b278a9a22..67de7f687 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltSttn/rainSttn/index.tsx
@@ -149,6 +149,7 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = (
rainSttn: {
...state.rainSttn,
excelList: rainExcel,
+ rainSttnResCount: rainSttnRes.count,
},
};
});
@@ -159,6 +160,7 @@ export const rainSttnActionsExport: (set: any) => rainSttnActions = (
rainSttn: {
...state.rainSttn,
rainSttnRes: rainSttnRes.data,
+ rainSttnResCount: rainSttnRes.count,
isInit: false,
},
};
diff --git a/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx b/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
index e117b86e0..e13965768 100644
--- a/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
+++ b/packages/common/business_components/src/ui/map/searchBar/searchBar.tsx
@@ -168,8 +168,8 @@ export const SearchBar = ({
const selectedSido = sidoData.find((item) => item.val === sidoValue);
if (!selectedSido?.center) return;
- console.log("시도 : " +sidoValue);
- console.log("시군구 : " + sigunValue);
+ // console.log("시도 : " +sidoValue);
+ // console.log("시군구 : " + sigunValue);
if (sigunValue !== "0") {
console.log(sigunData.filter((item) => item.val == sigunValue));
const selectedSigun =
From da9d069a9ab8a0f161dfc99f7bcae0ee26ab5286 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Wed, 17 Jun 2026 13:32:23 +0900
Subject: [PATCH 32/96] =?UTF-8?q?wr:=20=EC=B4=9D=EB=8C=80=EC=9E=A5?=
=?UTF-8?q?=EA=B7=A0=EA=B5=B0=EC=88=98=20=EB=8B=A8=EC=9C=84=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=20=EC=99=B8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../dm/app/(landing)/reuse/apply/modal/SimilarCaseModal.tsx | 2 +-
apps/dm/app/(landing)/reuse/apply/register/page.tsx | 6 +++---
apps/dm/app/(landing)/reuse/apply/status/page.tsx | 4 ++--
apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx | 6 +++---
apps/dm/app/store/sdmMng/index.tsx | 2 +-
apps/dm/components/ui/sdmInfoInsertForm/component.tsx | 6 +++---
apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx | 2 +-
apps/wr/app/store/matDmd/coMatRvw/type.tsx | 2 +-
.../app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx | 2 +-
.../app/store/prfmncReg/chkgdnReg/rswrtChkgdn/headList.tsx | 2 +-
.../store/prfmncSttn/chkgdnSttn/rainChkgdnSttn/headList.tsx | 2 +-
.../store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/headList.tsx | 2 +-
apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx | 2 +-
.../app/store/ruseFcltMng/fcltSttn/pbnstSttn/headList.tsx | 2 +-
.../pbnstReg/buseReg/buseWaterQulity/buseWaterQulity.tsx | 2 +-
15 files changed, 22 insertions(+), 22 deletions(-)
diff --git a/apps/dm/app/(landing)/reuse/apply/modal/SimilarCaseModal.tsx b/apps/dm/app/(landing)/reuse/apply/modal/SimilarCaseModal.tsx
index 6f68ab515..90fe5a798 100644
--- a/apps/dm/app/(landing)/reuse/apply/modal/SimilarCaseModal.tsx
+++ b/apps/dm/app/(landing)/reuse/apply/modal/SimilarCaseModal.tsx
@@ -365,7 +365,7 @@ export default function SimilarCaseModal({
- 총대장균군수 (개/100ml)
+ 총대장균군수 (개/100mL)
|
용도별 결합 잔류염소 (mg/L)
diff --git a/apps/dm/app/(landing)/reuse/apply/register/page.tsx b/apps/dm/app/(landing)/reuse/apply/register/page.tsx
index 9350f59f4..1f376c296 100644
--- a/apps/dm/app/(landing)/reuse/apply/register/page.tsx
+++ b/apps/dm/app/(landing)/reuse/apply/register/page.tsx
@@ -428,7 +428,7 @@ export default function DemandRegisterPage() {
-
+
@@ -438,7 +438,7 @@ export default function DemandRegisterPage() {
-
+
@@ -464,7 +464,7 @@ export default function DemandRegisterPage() {
diff --git a/apps/dm/app/(landing)/reuse/apply/status/page.tsx b/apps/dm/app/(landing)/reuse/apply/status/page.tsx
index 3282f54a5..2bc608ff5 100644
--- a/apps/dm/app/(landing)/reuse/apply/status/page.tsx
+++ b/apps/dm/app/(landing)/reuse/apply/status/page.tsx
@@ -148,7 +148,7 @@ export default function DemandStatusPage() {
{ label: "요구시기", value: selected.detail.reqDate, required: true },
{ label: "요구수량(㎡/d)", value: selected.detail.reqQty },
{ label: "사용용도", value: selected.detail.usePurpose },
- { label: "희망단가(원)", value: selected.detail.price },
+ { label: "희망단가(원/㎥)", value: selected.detail.price },
];
}, [selected]);
@@ -157,7 +157,7 @@ export default function DemandStatusPage() {
if (!selected) return [];
const w = selected.detail.water;
return [
- { label: "총대장균군수(개/100mℓ)", value: w.coliform },
+ { label: "총대장균군수(개/100mL)", value: w.coliform },
{ label: "결합잔류염소(mg/L)", value: "-" },
{ label: "탁도(NTU)", value: w.turbidity },
diff --git a/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx b/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
index cef0461d2..25b51a13a 100644
--- a/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
+++ b/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
@@ -467,7 +467,7 @@ export default function DemandRegisterPage() {
-
+
@@ -490,7 +490,7 @@ export default function DemandRegisterPage() {
-
+
@@ -519,7 +519,7 @@ export default function DemandRegisterPage() {
{/* 1행 */}
diff --git a/apps/dm/app/store/sdmMng/index.tsx b/apps/dm/app/store/sdmMng/index.tsx
index dfe9d7850..de345f0d7 100644
--- a/apps/dm/app/store/sdmMng/index.tsx
+++ b/apps/dm/app/store/sdmMng/index.tsx
@@ -770,7 +770,7 @@ export const SdmReducer = (set: any): SdmActions => {
"/cms-service/api/v1/lwpo-cds/?lwpoCdNm=&sort=regDt,desc&upCd=WR018&page=0&size=100"
);
- const comUseTypes = upCd.content.filter(el=>el.lwpoCdNm != '친수용수').map((el: any) => ({ text: el.lwpoCdNm, val: el.lwpoCd }));
+ const comUseTypes = upCd.content.map((el: any) => ({ text: el.lwpoCdNm, val: el.lwpoCd }));
set((state: SdmType) => ({
Sdm: {
diff --git a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
index 44c6d3f82..ac94e4a02 100644
--- a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
+++ b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
@@ -282,7 +282,7 @@
// },
// {
// name: "money",
-// label: "희망단가(원)",
+// label: "희망단가(원/㎥)",
// formIndex: 0,
// required: true,
// component: (field) => (
@@ -375,7 +375,7 @@
// render={({ field }) =>
// name === "money" ? (
//
-//
+//
// {component(field)}
//
// ) : (
@@ -411,7 +411,7 @@
// return (
//
//
diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
index bf8d5c5bb..4d6a92229 100644
--- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
@@ -440,7 +440,7 @@ export default function CoMatRvw() {
control={form.control}
name="grssClfg"
render={({ field }) => (
-
+
(
-
+
Date: Wed, 17 Jun 2026 14:58:41 +0900
Subject: [PATCH 33/96] =?UTF-8?q?wr:=20=EC=A7=80=EB=8F=84=EC=A0=90?=
=?UTF-8?q?=EA=B2=80=20=ED=98=84=ED=99=A9=20=ED=8C=9D=EC=97=85=20table=20?=
=?UTF-8?q?=ED=95=AD=EB=AA=A9=EB=AA=85=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx | 3 +++
apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx | 4 ++--
apps/wr/components/lib/func/TableData.tsx | 4 ++--
.../ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx | 4 ++--
4 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx
index ee2e776ba..ac3c72bc1 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/prfmncSttn/chkgdnSttn/page.tsx
@@ -1,5 +1,8 @@
"use client";
+/**
+ * 재이용실적 현황 > 지도점검 현황
+ */
import { useWrStore } from "@/app/store";
import { btnClass } from "@/app/store/common/code";
import { rainPageSize } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn";
diff --git a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx
index 4d65d3db6..ead07ceef 100644
--- a/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx
+++ b/apps/wr/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList.tsx
@@ -124,7 +124,7 @@ export const rainMainHeadNmExport: chHeadType[] = [
export const rainRuseHeadNmExport: chHeadType[] = [
{ headNm: "useQuilty", text: "이용수질(필요시)", length: 3 },
{ headNm: "feeHist", text: "과태료 부과내역", length: 3 },
- { headNm: "ruseWater", text: "연간대체수 이용량(m³)", length: 13 },
+ { headNm: "ruseWater", text: "연간빗물이용량(m³)", length: 13 },
{ headNm: "detailQulity", text: "분기", length: 11 },
];
@@ -133,7 +133,7 @@ export const rainSplHeadNmExport: chHeadType[] = [
{ headNm: "useQuilty", text: "이용수질(필요시)", length: 3 },
{ headNm: "feeHist", text: "과태료 부과내역", length: 3 },
{ headNm: "detailQulity", text: "분기", length: 11 },
- { headNm: "splWater", text: "연간빗물 이용량(m³)", length: 13 },
+ { headNm: "splWater", text: "연간대체수이용량(m³)", length: 13 },
];
export const rainChkgdnHeadListExport: TableUpperProps[] = [
diff --git a/apps/wr/components/lib/func/TableData.tsx b/apps/wr/components/lib/func/TableData.tsx
index b2411eea4..03c000dd6 100644
--- a/apps/wr/components/lib/func/TableData.tsx
+++ b/apps/wr/components/lib/func/TableData.tsx
@@ -29,8 +29,8 @@ export const rainChkTableData = (chkData: rainChkZodType[]) => {
totalRuseFcltUtztnQnt: 0,
};
- acc[key].totalSplyUswtrUtztnQnt += cur.splyUswtrUtztnQnt;
- acc[key].totalRuseFcltUtztnQnt += cur.ruseFcltUtztnQnt;
+ acc[key].totalSplyUswtrUtztnQnt += cur.splyUswtrUtztnQnt; // 연간대체수이용량(m³)
+ acc[key].totalRuseFcltUtztnQnt += cur.ruseFcltUtztnQnt; // 연간빗물이용량(m³)
return acc;
}, {});
diff --git a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx
index a8664063e..76e32425e 100644
--- a/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx
+++ b/apps/wr/components/ui/table/chkgdTable/rainChkgd/rainChkgdTable.tsx
@@ -63,8 +63,8 @@ export default function RainChkgdTable({
const handleCellClick = useCallback((index: number, headId: string) => {
if (
- headId === "totalSplyUswtrUtztnQnt" ||
- headId === "totalRuseFcltUtztnQnt"
+ headId === "totalSplyUswtrUtztnQnt" || // 연간대체수이용량(m³)
+ headId === "totalRuseFcltUtztnQnt" // 연간빗물이용량(m³)
) {
handleClick(makeTableData[index])
From 823ce262bb442d7f766ae54ccb019e328517d206 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Wed, 17 Jun 2026 16:29:28 +0900
Subject: [PATCH 34/96] =?UTF-8?q?wr:=20=EC=88=98=EC=9A=94=EC=B2=98=20?=
=?UTF-8?q?=EB=A7=A4=EC=B9=AD=20=EA=B2=80=ED=86=A0=20=EC=B2=9C=EB=8B=A8?=
=?UTF-8?q?=EC=9C=84=20,=20=EA=B1=B4=EC=88=98=2010=EA=B1=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../app/(with-layout)/apply/status/page.tsx | 19 ++-
.../matMng/coMat/coMatRvw/page.tsx | 115 ++++++++++++++----
apps/wr/app/store/matDmd/coMatRvw/index.tsx | 4 +-
apps/wr/app/store/matDmd/coMatRvw/type.tsx | 2 +-
.../ui/form/coMat/conCostForm/conCostForm.tsx | 28 ++++-
5 files changed, 133 insertions(+), 35 deletions(-)
diff --git a/apps/dm/app/(with-layout)/apply/status/page.tsx b/apps/dm/app/(with-layout)/apply/status/page.tsx
index d5dbf68c5..97fe96ead 100644
--- a/apps/dm/app/(with-layout)/apply/status/page.tsx
+++ b/apps/dm/app/(with-layout)/apply/status/page.tsx
@@ -30,6 +30,19 @@ const formatValue = (value: string | number | null | undefined) => {
return String(value);
};
+const formatNumberWithComma = (value: string | number | null | undefined) => {
+ if (value === null || value === undefined || value === "") return "-";
+
+ const normalized =
+ typeof value === "string" ? Number(value.replace(/,/g, "")) : Number(value);
+
+ if (Number.isNaN(normalized)) {
+ return String(value);
+ }
+
+ return normalized.toLocaleString("ko-KR");
+};
+
const formatBelow = (value: string | number | null | undefined) => {
if (value === null || value === undefined || value === "") return "-";
if (Number(value) === -1) return "불검출";
@@ -234,9 +247,9 @@ export default function DemandStatusPage() {
return [
{ label: "요구시기", key: "dmndTmng", value: formatDate(selectedSdmInfoStatus.dmndTmng), required: true },
- { label: "요구수량(㎥/d)", key: "dmndQty", value: formatValue(selectedSdmInfoStatus.dmndQty) },
+ { label: "요구수량(㎥/d)", key: "dmndQty", value: formatNumberWithComma(selectedSdmInfoStatus.dmndQty) },
{ label: "사용용도", key: "useUsgCd", value: formatValue(selectedSdmInfoStatus.useUsgCd) },
- { label: "희망단가(원/㎥)", key: "wntUntprc", value: formatValue(selectedSdmInfoStatus.wntUntprc) },
+ { label: "희망단가(원/㎥)", key: "wntUntprc", value: formatNumberWithComma(selectedSdmInfoStatus.wntUntprc) },
];
}, [selectedSdmInfoStatus]);
@@ -520,7 +533,7 @@ export default function DemandStatusPage() {
{!selectedSdmInfoStatus ? (
- 상세 정보를 표시할 신청건이 없습니다.
+ 조회된 결과가 없습니다.
) : (
diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
index 4d6a92229..0cae843bb 100644
--- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
@@ -14,6 +14,7 @@ import {
type DmdCoReqType,
type DmdMatTableType,
} from "@/app/store/matDmd/coMatRvw/type";
+import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import { formH1Class } from "@/components/lib/class/comClass";
import {
formatPhoneNumber,
@@ -46,6 +47,50 @@ import { useEffect, useRef, useState } from "react";
import { useForm, useWatch } from "react-hook-form";
import { z } from "zod";
+const formatNumberWithComma = (value: string | number | null | undefined) => {
+ if (value === null || value === undefined || value === "") return "";
+
+ const normalized =
+ typeof value === "string" ? Number(value.replace(/,/g, "")) : Number(value);
+
+ if (Number.isNaN(normalized)) {
+ return String(value);
+ }
+
+ return normalized.toLocaleString("ko-KR");
+};
+
+const EMPTY_DETAIL_FORM: Partial = {
+ dmdInfoSn: 0,
+ dmdInfoId: "",
+ dmndQty: undefined,
+ wntUntprc: undefined,
+ useUsgCd: "",
+ dmndTmng: undefined,
+ grssClfg: undefined,
+ combResdch: undefined,
+ trbt: undefined,
+ blgcOxygDmndQnt: undefined,
+ smll: undefined,
+ crmty: undefined,
+ tn: undefined,
+ tph: undefined,
+ ph: undefined,
+ clIonQnt: undefined,
+ cdtnv: undefined,
+ rmrk: undefined,
+ ruseUtztnFcltNm: "",
+ splyCndtList: [],
+ totalConstCost: 0,
+ demandCst: {
+ usgPrcsProcs: "",
+ cstrnCst: 0,
+ fcltSbsdCstrnCst: 0,
+ prcsFcltCpctCstrnCst: 0,
+ },
+ demandMatching: undefined,
+ demandCo: undefined,
+};
export default function CoMatRvw() {
const readOnlyInputClass = "bg-slate-50 text-gray-700";
@@ -75,6 +120,8 @@ export default function CoMatRvw() {
const [toDate, setToDate] = useState(
String(new Date().getFullYear())
);
+ const [selectedRowIndex, setSelectedRowIndex] = useState(-1);
+ const [resetSelection, setResetSelection] = useState(false);
const [selectData, setSelectData] = useState(null); // selectData를 null로 초기화
const [selectionVersion, setSelectionVersion] = useState(0);
const bottomRef = useRef(null);
@@ -100,14 +147,14 @@ export default function CoMatRvw() {
if (dmdCoNm.length > 0) {
coMatRvwSearch(
pageNo,
- 13,
+ DEFAULT_LIST_SIZE,
String(startYear),
String(endYear),
sggCd,
dmdCoNm
);
} else {
- coMatRvwInqua(pageNo, 13, String(startYear), String(endYear), sggCd);
+ coMatRvwInqua(pageNo, DEFAULT_LIST_SIZE, String(startYear), String(endYear), sggCd);
}
};
@@ -119,11 +166,22 @@ export default function CoMatRvw() {
const TableCellClick = (index: number) => {
if (coMatRvwRes && coMatRvwRes[index]) {
+ setSelectedRowIndex(index);
+ setResetSelection(false);
setSelectData(coMatRvwRes[index]);
setSelectionVersion((v) => v + 1); // 행을 클릭할 때마다 버전을 1씩 증가
bottomRef.current?.scrollIntoView({ behavior: "smooth" }); // 화면 스크롤 처리
}
};
+
+ const resetDetailSections = () => {
+ setSelectedRowIndex(-1);
+ setResetSelection(true);
+ setSelectData(null);
+ form.reset(EMPTY_DETAIL_FORM);
+ setSelectionVersion((v) => v + 1);
+ };
+
const useUsgCdWatch = useWatch({ control: form.control, name: "useUsgCd" });
const useUsgCdText =
code.sewageOutFclttUse?.find((item) => item.val === useUsgCdWatch)?.text ??
@@ -166,6 +224,9 @@ export default function CoMatRvw() {
};
});
setDmdMtaData(tableData(data, { code }));
+ } else {
+ setDmdMtaData([]);
+ setSelectData(null);
}
}, [coMatRvwRes]);
@@ -185,7 +246,7 @@ export default function CoMatRvw() {
useEffect(() => {
if (!initRef.current) {
- coMatRvwInit(1, 13, fromDate, toDate);
+ coMatRvwInit(1, DEFAULT_LIST_SIZE, fromDate, toDate);
//setMounted(true);
initRef.current = true;
}
@@ -295,6 +356,7 @@ export default function CoMatRvw() {
);
} else {
const con = getCurrentRegionCode();
+ resetDetailSections();
//setPageNatiion(1);
getSearch(1, fromNum, toNum, con, dmdCoNm);
}
@@ -321,8 +383,10 @@ export default function CoMatRvw() {
tableData={dmdMatData || []}
headlist={coRvwHeadList}
widthFixed={true}
- pageSize={13}
+ pageSize={DEFAULT_LIST_SIZE}
total={coMatRvwCount}
+ resetSelection={resetSelection}
+ index={selectedRowIndex}
cellClick={(index: number | undefined) => {
if (index !== undefined && index >= 0) {
TableCellClick(index);
@@ -330,6 +394,7 @@ export default function CoMatRvw() {
}}
onPageChange={(val) => {
const con = getCurrentRegionCode();
+ resetDetailSections();
//setPageNatiion(val);
getSearch(val, Number(fromDate), Number(toDate), con, dmdCoNm);
}}
@@ -377,12 +442,11 @@ export default function CoMatRvw() {
{
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
className={readOnlyInputClass}
/>
@@ -416,15 +480,14 @@ export default function CoMatRvw() {
control={form.control}
name="wntUntprc"
render={({ field }) => (
-
+
{
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
className={readOnlyInputClass}
/>
@@ -448,9 +511,13 @@ export default function CoMatRvw() {
className={`w-full pr-16 border py-2 text-right rounded-md ${readOnlyInputClass}`}
placeholder=""
value={
- field.value != -1 ||field.value != undefined
- ? `${field.value}`
- : "불검출"
+ field.value === null ||
+ field.value === undefined ||
+ field.value === ""
+ ? ""
+ : field.value === -1
+ ? "불검출"
+ : formatNumberWithComma(field.value)
}
readOnly
/>
@@ -480,7 +547,7 @@ export default function CoMatRvw() {
type="text"
className={`w-full pr-16 border py-2 text-right rounded-md ${readOnlyInputClass}`}
placeholder=""
- value={field.value ?? ""}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -504,7 +571,7 @@ export default function CoMatRvw() {
placeholder=""
className={`w-full pr-16 border py-2 text-right rounded-md ${readOnlyInputClass}`}
type="text"
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -532,7 +599,7 @@ export default function CoMatRvw() {
onChange={(e) => {
field.onChange(Number(e.target.value));
}}
- value={field.value ?? ""}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -574,7 +641,7 @@ export default function CoMatRvw() {
className={`w-full pr-16 border py-2 text-right rounded-md ${readOnlyInputClass}`}
type="text"
step="0.1"
- value={field.value ?? ""}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -601,7 +668,7 @@ export default function CoMatRvw() {
onChange={(e) => {
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -628,7 +695,7 @@ export default function CoMatRvw() {
onChange={(e) => {
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -655,7 +722,7 @@ export default function CoMatRvw() {
onChange={(e) => {
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -679,7 +746,7 @@ export default function CoMatRvw() {
onChange={(e) => {
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
@@ -701,12 +768,12 @@ export default function CoMatRvw() {
{
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={formatNumberWithComma(field.value)}
readOnly
/>
diff --git a/apps/wr/app/store/matDmd/coMatRvw/index.tsx b/apps/wr/app/store/matDmd/coMatRvw/index.tsx
index b347a1df8..afeb36fc1 100644
--- a/apps/wr/app/store/matDmd/coMatRvw/index.tsx
+++ b/apps/wr/app/store/matDmd/coMatRvw/index.tsx
@@ -1,4 +1,5 @@
import { fetchType, getFetchWithCount, putFectch } from "@/components/lib/api";
+import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import type { CommonTableProps } from "../../common/type/header";
import {
constCostHeadListExport,
@@ -12,6 +13,7 @@ const coRvwHeadList = coRvwHeadListExport;
const coRvwNodeList = coRvwNodeListExport;
const rateFeeHeadList = rateFeeHeadListExport;
const constCostHeadList = constCostHeadListExport;
+
export type coRvwState = {
coRvw: {
isInit: boolean;
@@ -118,7 +120,7 @@ export const coRvwActionsExport: (set: any) => coRvwActions = (set: any) => {
const coMatRvwRes = await coMatInit(
1,
- 10,
+ DEFAULT_LIST_SIZE,
new Date().getFullYear().toString(),
new Date().getFullYear().toString()
);
diff --git a/apps/wr/app/store/matDmd/coMatRvw/type.tsx b/apps/wr/app/store/matDmd/coMatRvw/type.tsx
index 388c24f45..ba618aecd 100644
--- a/apps/wr/app/store/matDmd/coMatRvw/type.tsx
+++ b/apps/wr/app/store/matDmd/coMatRvw/type.tsx
@@ -75,7 +75,7 @@ export const DmdCoReqSchema = z.object({
dmndTmng: z.coerce.date().nullish(), // 요구시기
dmndQty: z.number().nullish(), // 요구수량(m³/일)
blgcOxygDmndQnt: z.number().nullish(), // 생물학적 산소요구량(BOD)(mg/L)
- wntUntprc: z.number().nullish(), // 희망단가(원/m3)
+ wntUntprc: z.number().nullish(), // 희망단가(원/m³)
grssClfg: z.number().nullish(), // 총대장균군수(개/100mL)
combResdch: z.number().nullish(), // 결합잔류염소(mg/L)
trbt: z.number().nullish(), // 탁도(NTU)
diff --git a/apps/wr/components/ui/form/coMat/conCostForm/conCostForm.tsx b/apps/wr/components/ui/form/coMat/conCostForm/conCostForm.tsx
index 09ed01987..2b567979c 100644
--- a/apps/wr/components/ui/form/coMat/conCostForm/conCostForm.tsx
+++ b/apps/wr/components/ui/form/coMat/conCostForm/conCostForm.tsx
@@ -28,6 +28,19 @@ import PopoverUi from "@common/business_components/ui/popover_ui";
import { Button, Checkbox, Input, Label } from "@common/components/ui";
import { useCallback, useEffect, useRef, useState } from "react";
import { useForm, type UseFormReturn } from "react-hook-form";
+
+const formatNumberWithComma = (value: string | number | null | undefined) => {
+ if (value === null || value === undefined || value === "") return "";
+
+ const normalized =
+ typeof value === "string" ? Number(value.replace(/,/g, "")) : Number(value);
+
+ if (Number.isNaN(normalized)) {
+ return String(value);
+ }
+
+ return normalized.toLocaleString("ko-KR");
+};
/**
* ConCostForm
* 호출: (with-layout)/matMng/coMat/coMatRvw
@@ -456,12 +469,16 @@ export default function ConCostForm({
{
field.onChange(Number(e.target.value));
}}
- value={field.value ?? 0}
+ value={
+ isSim
+ ? field.value ?? 0
+ : formatNumberWithComma(field.value)
+ }
readOnly={!isSim}
className={!isSim ? readOnlyInputClass : ""}
/>
@@ -524,14 +541,13 @@ export default function ConCostForm({
{
console.log("dmndQty ", e);
//field.onChange(Number(e.target.value) * 365 );
}}
// value={Number(field.value) * 365 || 0}
- value={Number(field.value) || 0}
+ value={formatNumberWithComma(Number(field.value) || 0)}
readOnly
className={readOnlyInputClass}
/>
From 98189cd14a07becfdac1b201a85f890ce053b11f Mon Sep 17 00:00:00 2001
From: ljpark
Date: Wed, 17 Jun 2026 17:25:18 +0900
Subject: [PATCH 35/96] =?UTF-8?q?dm:=20=EC=B4=9D=EB=8C=80=EC=9E=A5?=
=?UTF-8?q?=EA=B7=A0=EA=B5=B0=EC=88=98=20=EB=8B=A8=EC=9C=84=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../(landing)/reuse/apply/register/page.tsx | 2 +-
.../app/(landing)/reuse/apply/status/page.tsx | 2 +-
.../app/(with-layout)/apply/dmdinfo/page.tsx | 61 ++++++++++++-------
.../app/(with-layout)/apply/status/page.tsx | 2 +-
.../ui/sdmInfoInsertForm/component.tsx | 2 +-
.../matMng/coMat/coMatRvw/page.tsx | 2 +-
apps/wr/app/store/matDmd/coMatRvw/type.tsx | 2 +-
.../chkgdnReg/rainChkgdn/headList.tsx | 2 +-
.../chkgdnReg/rswrtChkgdn/headList.tsx | 2 +-
.../chkgdnSttn/rainChkgdnSttn/headList.tsx | 2 +-
.../chkgdnSttn/rswtChkgdnSttn/headList.tsx | 2 +-
.../ruseFcltMng/fcltReg/pbnstReg/headList.tsx | 2 +-
.../fcltSttn/pbnstSttn/headList.tsx | 2 +-
.../buseWaterQulity/buseWaterQulity.tsx | 2 +-
14 files changed, 51 insertions(+), 36 deletions(-)
diff --git a/apps/dm/app/(landing)/reuse/apply/register/page.tsx b/apps/dm/app/(landing)/reuse/apply/register/page.tsx
index 1f376c296..21a5a027f 100644
--- a/apps/dm/app/(landing)/reuse/apply/register/page.tsx
+++ b/apps/dm/app/(landing)/reuse/apply/register/page.tsx
@@ -464,7 +464,7 @@ export default function DemandRegisterPage() {
diff --git a/apps/dm/app/(landing)/reuse/apply/status/page.tsx b/apps/dm/app/(landing)/reuse/apply/status/page.tsx
index 2bc608ff5..2e95c780b 100644
--- a/apps/dm/app/(landing)/reuse/apply/status/page.tsx
+++ b/apps/dm/app/(landing)/reuse/apply/status/page.tsx
@@ -157,7 +157,7 @@ export default function DemandStatusPage() {
if (!selected) return [];
const w = selected.detail.water;
return [
- { label: "총대장균군수(개/100mL)", value: w.coliform },
+ { label: "총대장균군수(개/100㎖)", value: w.coliform },
{ label: "결합잔류염소(mg/L)", value: "-" },
{ label: "탁도(NTU)", value: w.turbidity },
diff --git a/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx b/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
index 25b51a13a..43e89cc30 100644
--- a/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
+++ b/apps/dm/app/(with-layout)/apply/dmdinfo/page.tsx
@@ -44,17 +44,17 @@ export default function DemandRegisterPage() {
const [coliform, setColiform] = useState(""); // 총대장균군수
const [noDetect, setNoDetect] = useState(false);
- const [tn, setTn] = useState("");
- const [residualCl, setResidualCl] = useState("");
- const [tp, setTp] = useState("");
- const [turbidity, setTurbidity] = useState("");
- const [ph, setPh] = useState({ min: "", max: "" });
- const [bod, setBod] = useState("");
- const [chloride, setChloride] = useState("");
- const [odor, setOdor] = useState("불쾌하지 않을 것");
- const [ec, setEc] = useState("");
- const [color, setColor] = useState("");
- const [remark, setRemark] = useState("");
+ const [tn, setTn] = useState(""); // 총질소(T-N)
+ const [residualCl, setResidualCl] = useState(""); // 결합잔류염소
+ const [tp, setTp] = useState(""); // 총인(T-P)
+ const [turbidity, setTurbidity] = useState(""); // 탁도
+ const [ph, setPh] = useState({ min: "", max: "" }); // 수소이온농도(pH)
+ const [bod, setBod] = useState(""); // 생물학적산소요구량(BOD)
+ const [chloride, setChloride] = useState(""); // 염화물
+ const [odor, setOdor] = useState("불쾌하지 않을 것"); // 냄새
+ const [ec, setEc] = useState(""); // 전기전도도
+ const [color, setColor] = useState(""); // 색도
+ const [remark, setRemark] = useState(""); // 비고
// 공급처 후보지 선택(필수아님)
const [cand1, setCand1] = useState("");
@@ -373,7 +373,8 @@ export default function DemandRegisterPage() {
switch (value) {
// 청소화장실용도
case '01':
- setTp('0.2');
+ setNoDetect(true); // 총대장균군수 불검출
+ setResidualCl('0.2'); // 잔류염소
setTurbidity('2');
setPh({ min: '5.8', max: '8.5' });
setBod('5');
@@ -381,23 +382,35 @@ export default function DemandRegisterPage() {
break;
// 세척살수용도
case '02':
- setTp('0.2');
- setTurbidity('2');
+ setColiform('1000');
+ setTurbidity('2'); // 탁도
setPh({ min: '5.8', max: '8.5' });
setBod('5');
break;
// 조경용도
case '03':
- setTp('0.2');
+ setColiform('1000');
setTurbidity('2');
setPh({ min: '5.8', max: '8.5' });
setBod('5');
- setChloride('250');
+ setChloride('250'); // 염화물
break;
- // 지하수
+ // 친수용도
+ case '04':
+ setNoDetect(true); // 총대장균군수 불검출
+ setResidualCl('0.1'); // 잔류염소
+ setTurbidity('2');
+ setBod('3');
+ setColor('10');
+ setTn('10'); // 총질소
+ setTp('0.5'); // 총인
+ setPh({ min: '5.8', max: '8.5' });
+ setChloride('0.5');
+ break;
+ // 지하수충전
case '05':
break;
- // 농업용도
+ // 농업용수
case '06':
setTurbidity('5');
setPh({ min: '5.8', max: '8.5' });
@@ -405,16 +418,18 @@ export default function DemandRegisterPage() {
setEc('2000');
setFarmText("이하 (** 간접:2000,직접:700 )");
break;
- // 하천 등 유지보수
+ // 하천 등 유지용수
case '07':
setColiform('1000');
- setTn('10');
+ setBod('5');
+ setTn('20');
setTp('0.5');
setPh({ min: '5.8', max: '8.5' });
- setBod('5');
+ setChloride('0.5');
break;
- // 공업
+ // 공업용수
case '08':
+ setBod('20');
setPh({ min: '5.8', max: '8.5' });
break;
default:
@@ -519,7 +534,7 @@ export default function DemandRegisterPage() {
{/* 1행 */}
diff --git a/apps/dm/app/(with-layout)/apply/status/page.tsx b/apps/dm/app/(with-layout)/apply/status/page.tsx
index 97fe96ead..40241ee4f 100644
--- a/apps/dm/app/(with-layout)/apply/status/page.tsx
+++ b/apps/dm/app/(with-layout)/apply/status/page.tsx
@@ -257,7 +257,7 @@ export default function DemandStatusPage() {
if (!selectedSdmInfoStatus) return [];
return [
- { label: "총대장균군수(개/100mL)", key: "grssClfg", value: formatBelow(selectedSdmInfoStatus.grssClfg) },
+ { label: "총대장균군수(개/100㎖)", key: "grssClfg", value: formatBelow(selectedSdmInfoStatus.grssClfg) },
{ label: "결합잔류염소(mg/L)", key:"combResdch", value: formatBelow(selectedSdmInfoStatus.combResdch) },
{ label: "탁도(NTU)", key:"trbt", value: formatBelow(selectedSdmInfoStatus.trbt) },
diff --git a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
index ac94e4a02..e66807743 100644
--- a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
+++ b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx
@@ -411,7 +411,7 @@
// return (
//
//
diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
index 0cae843bb..f038962da 100644
--- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
@@ -503,7 +503,7 @@ export default function CoMatRvw() {
control={form.control}
name="grssClfg"
render={({ field }) => (
-
+
(
-
+
Date: Thu, 18 Jun 2026 10:27:00 +0900
Subject: [PATCH 36/96] =?UTF-8?q?wr:=20=EC=88=98=EC=9A=94=EC=B2=98=20?=
=?UTF-8?q?=EB=A7=A4=EC=B9=AD=20=EA=B2=80=ED=86=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx | 3 +--
.../app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
index f038962da..4996b1cd9 100644
--- a/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
+++ b/apps/wr/app/(with-layout)/matMng/coMat/coMatRvw/page.tsx
@@ -512,8 +512,7 @@ export default function CoMatRvw() {
placeholder=""
value={
field.value === null ||
- field.value === undefined ||
- field.value === ""
+ field.value === undefined
? ""
: field.value === -1
? "불검출"
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
index 4b635016e..50148809a 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
@@ -63,7 +63,7 @@ export default function PbnstSttn() {
const [pbnRuseNm, setPbnRuseNm] = useState ("");
const { t } = useTranslation("base");
const alert = useAlertStore((state) => state.setMessage);
- const isAllAreaUser = laeSeCd === "0"; // 모든 지자체 권한이 있는 경우
+ const isAllAreaUser = laeSeCd?.length != 5; // 모든 지자체 권한이 있는 경우
const fixedSidoValue =
!isAllAreaUser && laeSeCd?.length ? laeSeCd.slice(0, 2) : "";
const fixedSigunValue =
From 9c76b955e23d44498b03fa47844cb3478a4fd213 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Thu, 18 Jun 2026 10:35:10 +0900
Subject: [PATCH 37/96] =?UTF-8?q?wr:=20=EC=98=A4=EB=A5=98=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
index 50148809a..d9ca92126 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltSttn/pbnstSttn/page.tsx
@@ -210,11 +210,9 @@ export default function PbnstSttn() {
: code.cityCd
}
selectSigunData={
- !isAllAreaUser && laeSeCd?.length === 5
+ laeSeCd?.length === 5
? code.sggCd.filter((item) => item.val === laeSeCd)
- : !isAllAreaUser && laeSeCd?.length === 2
- ? code.sggCd.filter((item) => item.val.slice(0, 2) === laeSeCd)
- : code.sggCd
+ : code.sggCd
}
selectRegionData={code.rvbsnCd}
selectUnitWaterShedData={code.lgbsnCd}
From 3451b19b96c90368ce6aa81c15533395fbfa249e Mon Sep 17 00:00:00 2001
From: ljpark
Date: Thu, 18 Jun 2026 10:59:41 +0900
Subject: [PATCH 38/96] wr: next-env.d.ts
---
apps/fo/next-env.d.ts | 1 +
apps/sn/next-env.d.ts | 1 +
2 files changed, 2 insertions(+)
diff --git a/apps/fo/next-env.d.ts b/apps/fo/next-env.d.ts
index 1b3be0840..830fb594c 100644
--- a/apps/fo/next-env.d.ts
+++ b/apps/fo/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+///
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/sn/next-env.d.ts b/apps/sn/next-env.d.ts
index 1b3be0840..830fb594c 100644
--- a/apps/sn/next-env.d.ts
+++ b/apps/sn/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+///
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
From 04b8082f049293121aef5d95d51d1d88b5715760 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Fri, 19 Jun 2026 16:15:48 +0900
Subject: [PATCH 39/96] =?UTF-8?q?wr:=20width=20=EA=B3=A0=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruseFcltMng/fcltReg/htdflReg/page.tsx | 1 +
.../ruseFcltMng/fcltReg/pbnstReg/page.tsx | 1 +
.../ruseFcltMng/fcltReg/rainReg/page.tsx | 1 +
.../ruseFcltMng/fcltReg/rswtReg/page.tsx | 1 +
.../ruseFcltMng/fcltReg/htdflReg/headList.tsx | 12 ++++++------
.../ruseFcltMng/fcltReg/pbnstReg/headList.tsx | 16 ++++++++--------
.../ruseFcltMng/fcltReg/rainReg/index.tsx | 18 +++++++++---------
.../ruseFcltMng/fcltReg/rswtReg/index.tsx | 17 +++++++++++++++--
8 files changed, 42 insertions(+), 25 deletions(-)
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx
index cc892b6d1..84f6ad87e 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/htdflReg/page.tsx
@@ -154,6 +154,7 @@ export default function Home() {
onPageChange={setPageNation}
index={htdfTableIndex}
resetPageNo={resetPageNo}
+ widthFixed={true}
>
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx
index 90a3d8185..349e8be98 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/pbnstReg/page.tsx
@@ -376,6 +376,7 @@ export default function PublicReuseFaciltyInsert() {
resetSelection={resetSelection}
index={selectedRowIndex}
curPage={pageNation}
+ widthFixed={true}
/>
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx
index 45fb636c6..cdbee61c3 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rainReg/page.tsx
@@ -167,6 +167,7 @@ export default function Home() {
onPageChange={setPageNation}
index={rainTableIndex}
resetPageNo={resetPageNo}
+ widthFixed={true}
>
diff --git a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx
index a4fa9b97b..b8e7e7727 100644
--- a/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx
+++ b/apps/wr/app/(with-layout)/ruseFcltMng/fcltReg/rswtReg/page.tsx
@@ -171,6 +171,7 @@ export default function Home() {
onPageChange={setPageNation}
index={rswtTableIndex}
resetPageNo={resetPageNo}
+ widthFixed={true}
>
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
index 4d0c228be..044ddd5c1 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
@@ -1,10 +1,10 @@
import type { TableUpperProps } from "@/app/store/common/type/header";
export const htdTableHeadList: TableUpperProps[] = [
- { id: "cityText", title: "시도" },
- { id: "sggText", title: "시군구" },
- { id: "bdstNm", title: "시설명" },
- { id: "daddr", title: "위치" },
- { id: "frstArchPrmsnDt", title: "준공년도" },
- { id: "archArea", title: "건축면적(㎡)" },
+ { id: "cityText", title: "시도", widthPercent: 10 },
+ { id: "sggText", title: "시군구", widthPercent: 10 },
+ { id: "bdstNm", title: "시설명", widthPercent: 20 },
+ { id: "daddr", title: "위치", widthPercent: 30 },
+ { id: "frstArchPrmsnDt", title: "준공년도", widthPercent: 15 },
+ { id: "archArea", title: "건축면적(㎡)", widthPercent: 15 },
];
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx
index 1c50b63e1..e1e4adf44 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/headList.tsx
@@ -3,14 +3,14 @@ import type { TableUpperProps } from "@/app/store/common/type/header";
import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList";
export const pubFacHeadListExport: TableUpperProps[] = [
- { id: "sido", title: "시도" },
- { id: "gugun", title: "시군구" },
- { id: "bscFctNm", title: "시설명" },
- { id: "addr", title: "위치" },
- { id: "efflWqltStndrdNm", title: "지역구분" },
- { id: "fctCpc", title: "시설용량(m³/일)" },
- { id: "ruse", title: "재이용여부" },
- { id: "rswtrYn", title: "등록여부" },
+ { id: "sido", title: "시도", widthPercent: 8 },
+ { id: "gugun", title: "시군구", widthPercent: 8 },
+ { id: "bscFctNm", title: "시설명", widthPercent: 18 },
+ { id: "addr", title: "위치", widthPercent: 24 },
+ { id: "efflWqltStndrdNm", title: "지역구분", widthPercent: 15 },
+ { id: "fctCpc", title: "시설용량(m³/일)", widthPercent: 12 },
+ { id: "ruse", title: "재이용\n여부", widthPercent: 8 },
+ { id: "rswtrYn", title: "등록\n여부", widthPercent: 6 },
];
export const pbnstMngUpHeadListExport: TableUpperProps[] = [
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
index ce6da6334..ad6b0f9a3 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
@@ -69,15 +69,15 @@ export type chgBuilding = {
export type customRainBdst = z.infer;
export const upHeadList: TableUpperProps[] = [
- { id: "cityText", title: "시도" },
- { id: "sggText", title: "시군구" },
- { id: "bdstNm", title: "시설명" },
- { id: "daddr", title: "위치" },
- { id: "bdsgUsgText", title: "건축물용도" },
- { id: "frstArchPrmsnDt", title: "최초건축허가일" },
- { id: "archArea", title: "건축면적(㎡)" },
- { id: "lawTrgtYn", title: "법적의무대상여부" },
- { id: "bdstChgYn", title: "건축물변경여부" },
+ { id: "cityText", title: "시도", widthPercent: 8 },
+ { id: "sggText", title: "시군구", widthPercent: 8 },
+ { id: "bdstNm", title: "시설명", widthPercent: 14 },
+ { id: "daddr", title: "위치", widthPercent: 22 },
+ { id: "bdsgUsgText", title: "건축물용도", widthPercent: 12 },
+ { id: "frstArchPrmsnDt", title: "최초건축허가일", widthPercent: 12 },
+ { id: "archArea", title: "건축면적(㎡)", widthPercent: 9 },
+ { id: "lawTrgtYn", title: "법적의무대상여부", widthPercent: 8 },
+ { id: "bdstChgYn", title: "건축물변경여부", widthPercent: 7 },
];
const rainRes: customRainBdst[] = [];
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
index 816d6ab52..988b97243 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
@@ -1,5 +1,5 @@
import { deleteFectch, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api";
-import { upHeadList, type chgBuilding } from "../rainReg";
+import { type chgBuilding } from "../rainReg";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import type { TableUpperProps } from "@/app/store/common/type/header";
@@ -57,6 +57,19 @@ export type customRswtBdst = z.infer;
const rswtRes: customRswtBdst[] = [];
+export const rswtUpHeadList: TableUpperProps[] = [
+ { id: "cityText", title: "시도", widthPercent: 7 },
+ { id: "sggText", title: "시군구", widthPercent: 7 },
+ { id: "bdstNm", title: "건축물명", widthPercent: 13 },
+ { id: "daddr", title: "위치", widthPercent: 20 },
+ { id: "bdstUsgText", title: "건축물용도", widthPercent: 11 },
+ { id: "frstArchPrmsnDt", title: "최초건축허가일", widthPercent: 11 },
+ { id: "archArea", title: "건축면적(㎡)", widthPercent: 8 },
+ { id: "lawTrgtYn", title: "법적의무대상여부", widthPercent: 8 },
+ { id: "chBuildingYn", title: "증축/개축/재축여부", widthPercent: 8 },
+ { id: "instlCmptnDt", title: "설치완료일시", widthPercent: 7 },
+];
+
export type rswtFacState = {
rswt: {
upHeadList: TableUpperProps[];
@@ -83,7 +96,7 @@ export type rswtFacType = rswtFacState & rswtFacSActions;
export const rswtFacStateExport: rswtFacState = {
rswt: {
- upHeadList: upHeadList,
+ upHeadList: rswtUpHeadList,
rswtRes: rswtRes,
rswtResCount: 1,
},
From bdd6c7b804d10f3eadf437058c2f048669b5a06f Mon Sep 17 00:00:00 2001
From: ljpark
Date: Fri, 19 Jun 2026 16:44:30 +0900
Subject: [PATCH 40/96] =?UTF-8?q?dm:=20theme=20css=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/global.d.ts | 1 +
apps/wr/src/app/index.tsx | 4 +
apps/wr/src/app/styles/components-black.css | 85 +++++++++++++++++++++
apps/wr/src/app/styles/components-blue.css | 31 ++++++++
apps/wr/src/app/styles/components-green.css | 31 ++++++++
apps/wr/src/app/styles/components-red.css | 30 ++++++++
apps/wr/src/app/styles/components.css | 65 +---------------
7 files changed, 183 insertions(+), 64 deletions(-)
create mode 100644 apps/wr/global.d.ts
create mode 100644 apps/wr/src/app/styles/components-black.css
create mode 100644 apps/wr/src/app/styles/components-blue.css
create mode 100644 apps/wr/src/app/styles/components-green.css
create mode 100644 apps/wr/src/app/styles/components-red.css
diff --git a/apps/wr/global.d.ts b/apps/wr/global.d.ts
new file mode 100644
index 000000000..cbe652dbe
--- /dev/null
+++ b/apps/wr/global.d.ts
@@ -0,0 +1 @@
+declare module "*.css";
diff --git a/apps/wr/src/app/index.tsx b/apps/wr/src/app/index.tsx
index 692b55ef0..4cf2ad5fa 100644
--- a/apps/wr/src/app/index.tsx
+++ b/apps/wr/src/app/index.tsx
@@ -1,5 +1,9 @@
import "./styles/base.css";
import "./styles/components.css";
+import "./styles/components-black.css";
+import "./styles/components-blue.css";
+import "./styles/components-green.css";
+import "./styles/components-red.css";
import "@fontsource-variable/noto-sans-kr";
import { AppProvider } from "./providers";
diff --git a/apps/wr/src/app/styles/components-black.css b/apps/wr/src/app/styles/components-black.css
new file mode 100644
index 000000000..fd651fe6c
--- /dev/null
+++ b/apps/wr/src/app/styles/components-black.css
@@ -0,0 +1,85 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="black"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+
+ .gis-layer-panel {
+ background: #111214;
+ border-right-color: #2f3136;
+ box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.03);
+ }
+
+ .gis-layer-panel-title {
+ color: #f3f4f6;
+ }
+
+ .gis-layer-panel hr {
+ border-color: #2f3136;
+ }
+
+ .gis-layer-row {
+ color: #e5e7eb;
+ }
+
+ .gis-layer-row:hover {
+ background: rgba(255, 255, 255, 0.08);
+ }
+
+ .gis-layer-row span,
+ .gis-layer-row label {
+ color: #e5e7eb !important;
+ }
+
+ .gis-layer-row input[type="checkbox"] {
+ accent-color: #c026d3;
+ }
+
+ .gis-layer-action-button {
+ background: #1a1c20;
+ border-color: #3b82f6;
+ color: #cfe3ff;
+ }
+
+ .gis-layer-action-button:hover {
+ background: #23262b;
+ }
+
+ .gis-layer-setting {
+ background: #111214;
+ border-top: 1px solid #2f3136;
+ }
+
+ .gis-layer-toggle {
+ background: #111214;
+ border-color: #2f3136;
+ color: #f3f4f6;
+ }
+
+ .gis-layer-toggle:hover {
+ background: #1a1c20;
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/wr/src/app/styles/components-blue.css b/apps/wr/src/app/styles/components-blue.css
new file mode 100644
index 000000000..d83d93ca0
--- /dev/null
+++ b/apps/wr/src/app/styles/components-blue.css
@@ -0,0 +1,31 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="blue"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+
+
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/wr/src/app/styles/components-green.css b/apps/wr/src/app/styles/components-green.css
new file mode 100644
index 000000000..b4b4b3154
--- /dev/null
+++ b/apps/wr/src/app/styles/components-green.css
@@ -0,0 +1,31 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="green"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+
+
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/wr/src/app/styles/components-red.css b/apps/wr/src/app/styles/components-red.css
new file mode 100644
index 000000000..6d626d44d
--- /dev/null
+++ b/apps/wr/src/app/styles/components-red.css
@@ -0,0 +1,30 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="red"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/wr/src/app/styles/components.css b/apps/wr/src/app/styles/components.css
index fd651fe6c..cc6c1a46e 100644
--- a/apps/wr/src/app/styles/components.css
+++ b/apps/wr/src/app/styles/components.css
@@ -14,70 +14,7 @@
@apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
}
- [data-theme="black"] {
- .card-border {
- @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
- }
- .card-header {
- @apply border-b-[#3f4042];
- }
-
- .gis-layer-panel {
- background: #111214;
- border-right-color: #2f3136;
- box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.03);
- }
-
- .gis-layer-panel-title {
- color: #f3f4f6;
- }
-
- .gis-layer-panel hr {
- border-color: #2f3136;
- }
-
- .gis-layer-row {
- color: #e5e7eb;
- }
-
- .gis-layer-row:hover {
- background: rgba(255, 255, 255, 0.08);
- }
-
- .gis-layer-row span,
- .gis-layer-row label {
- color: #e5e7eb !important;
- }
-
- .gis-layer-row input[type="checkbox"] {
- accent-color: #c026d3;
- }
-
- .gis-layer-action-button {
- background: #1a1c20;
- border-color: #3b82f6;
- color: #cfe3ff;
- }
-
- .gis-layer-action-button:hover {
- background: #23262b;
- }
-
- .gis-layer-setting {
- background: #111214;
- border-top: 1px solid #2f3136;
- }
-
- .gis-layer-toggle {
- background: #111214;
- border-color: #2f3136;
- color: #f3f4f6;
- }
-
- .gis-layer-toggle:hover {
- background: #1a1c20;
- }
- }
+
input[type="file"] {
@apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
From 3d27e07ccb23c2c4666afa10d584c9b7758c7f49 Mon Sep 17 00:00:00 2001
From: ljpark
Date: Fri, 19 Jun 2026 17:27:30 +0900
Subject: [PATCH 41/96] =?UTF-8?q?fo:=20theme=20css=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/fo/src/app/index.tsx | 4 +++
apps/fo/src/app/styles/components-black.css | 29 +++++++++++++++++++++
apps/fo/src/app/styles/components-blue.css | 29 +++++++++++++++++++++
apps/fo/src/app/styles/components-green.css | 29 +++++++++++++++++++++
apps/fo/src/app/styles/components-red.css | 29 +++++++++++++++++++++
apps/fo/src/app/styles/components.css | 9 -------
apps/sn/src/app/index.tsx | 6 +++++
apps/sn/src/app/styles/components-black.css | 29 +++++++++++++++++++++
apps/sn/src/app/styles/components-blue.css | 29 +++++++++++++++++++++
apps/sn/src/app/styles/components-green.css | 29 +++++++++++++++++++++
apps/sn/src/app/styles/components-red.css | 29 +++++++++++++++++++++
apps/sn/src/app/styles/components.css | 9 -------
12 files changed, 242 insertions(+), 18 deletions(-)
create mode 100644 apps/fo/src/app/styles/components-black.css
create mode 100644 apps/fo/src/app/styles/components-blue.css
create mode 100644 apps/fo/src/app/styles/components-green.css
create mode 100644 apps/fo/src/app/styles/components-red.css
create mode 100644 apps/sn/src/app/styles/components-black.css
create mode 100644 apps/sn/src/app/styles/components-blue.css
create mode 100644 apps/sn/src/app/styles/components-green.css
create mode 100644 apps/sn/src/app/styles/components-red.css
diff --git a/apps/fo/src/app/index.tsx b/apps/fo/src/app/index.tsx
index 692b55ef0..4cf2ad5fa 100644
--- a/apps/fo/src/app/index.tsx
+++ b/apps/fo/src/app/index.tsx
@@ -1,5 +1,9 @@
import "./styles/base.css";
import "./styles/components.css";
+import "./styles/components-black.css";
+import "./styles/components-blue.css";
+import "./styles/components-green.css";
+import "./styles/components-red.css";
import "@fontsource-variable/noto-sans-kr";
import { AppProvider } from "./providers";
diff --git a/apps/fo/src/app/styles/components-black.css b/apps/fo/src/app/styles/components-black.css
new file mode 100644
index 000000000..4dc30bafd
--- /dev/null
+++ b/apps/fo/src/app/styles/components-black.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="black"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/fo/src/app/styles/components-blue.css b/apps/fo/src/app/styles/components-blue.css
new file mode 100644
index 000000000..7c1e9db27
--- /dev/null
+++ b/apps/fo/src/app/styles/components-blue.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="blue"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/fo/src/app/styles/components-green.css b/apps/fo/src/app/styles/components-green.css
new file mode 100644
index 000000000..4b4cc770e
--- /dev/null
+++ b/apps/fo/src/app/styles/components-green.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="green"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/fo/src/app/styles/components-red.css b/apps/fo/src/app/styles/components-red.css
new file mode 100644
index 000000000..cadffac52
--- /dev/null
+++ b/apps/fo/src/app/styles/components-red.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="red"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/fo/src/app/styles/components.css b/apps/fo/src/app/styles/components.css
index 4dc30bafd..3aa3c770d 100644
--- a/apps/fo/src/app/styles/components.css
+++ b/apps/fo/src/app/styles/components.css
@@ -14,15 +14,6 @@
@apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
}
- [data-theme="black"] {
- .card-border {
- @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
- }
- .card-header {
- @apply border-b-[#3f4042];
- }
- }
-
input[type="file"] {
@apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
}
diff --git a/apps/sn/src/app/index.tsx b/apps/sn/src/app/index.tsx
index 29d73b03f..d70dc3d73 100644
--- a/apps/sn/src/app/index.tsx
+++ b/apps/sn/src/app/index.tsx
@@ -1,3 +1,9 @@
+import "./styles/base.css";
+import "./styles/components.css";
+import "./styles/components-black.css";
+import "./styles/components-blue.css";
+import "./styles/components-green.css";
+import "./styles/components-red.css";
import { AppProvider } from "./providers";
import { cookies } from "next/headers";
diff --git a/apps/sn/src/app/styles/components-black.css b/apps/sn/src/app/styles/components-black.css
new file mode 100644
index 000000000..4dc30bafd
--- /dev/null
+++ b/apps/sn/src/app/styles/components-black.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="black"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/sn/src/app/styles/components-blue.css b/apps/sn/src/app/styles/components-blue.css
new file mode 100644
index 000000000..7c1e9db27
--- /dev/null
+++ b/apps/sn/src/app/styles/components-blue.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="blue"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/sn/src/app/styles/components-green.css b/apps/sn/src/app/styles/components-green.css
new file mode 100644
index 000000000..4b4cc770e
--- /dev/null
+++ b/apps/sn/src/app/styles/components-green.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="green"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/sn/src/app/styles/components-red.css b/apps/sn/src/app/styles/components-red.css
new file mode 100644
index 000000000..cadffac52
--- /dev/null
+++ b/apps/sn/src/app/styles/components-red.css
@@ -0,0 +1,29 @@
+@tailwind components;
+
+@layer components {
+ .card {
+ @apply relative m-[0.6rem] box-border min-h-[2rem] rounded-[0.5rem] p-[0.6rem] text-[1.3rem] text-[#666];
+ }
+ .card-border {
+ @apply border border-[#dbe2e6] bg-[rgba(255,255,255,0.6)] shadow-blur;
+ }
+ .card-header {
+ @apply -mx-[0.6rem] flex items-center justify-between border-b border-b-[#e1e7eb] p-4;
+ }
+ .card-footer {
+ @apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
+ }
+
+ [data-theme="red"] {
+ .card-border {
+ @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ }
+ .card-header {
+ @apply border-b-[#3f4042];
+ }
+ }
+
+ input[type="file"] {
+ @apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
+ }
+}
diff --git a/apps/sn/src/app/styles/components.css b/apps/sn/src/app/styles/components.css
index 4dc30bafd..3aa3c770d 100644
--- a/apps/sn/src/app/styles/components.css
+++ b/apps/sn/src/app/styles/components.css
@@ -14,15 +14,6 @@
@apply -mx-[0.6rem] mt-2 flex items-center justify-center border-t border-t-[#e1e7eb] py-4;
}
- [data-theme="black"] {
- .card-border {
- @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
- }
- .card-header {
- @apply border-b-[#3f4042];
- }
- }
-
input[type="file"] {
@apply w-[200px] h-[40px] px-3 py-2 border border-[#d1d5db] rounded-md bg-white text-sm cursor-pointer;
}
From 4fa50161fd9fbc5915827c07126475ec64c2eecb Mon Sep 17 00:00:00 2001
From: ljpark
Date: Mon, 22 Jun 2026 09:43:09 +0900
Subject: [PATCH 42/96] =?UTF-8?q?wr:=20width=20=EC=A1=B0=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx | 4 ++--
apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx | 6 +++---
apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx | 6 +++---
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
index 044ddd5c1..78b4f22cf 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/htdflReg/headList.tsx
@@ -1,10 +1,10 @@
import type { TableUpperProps } from "@/app/store/common/type/header";
export const htdTableHeadList: TableUpperProps[] = [
- { id: "cityText", title: "시도", widthPercent: 10 },
+ { id: "cityText", title: "시도", widthPercent: 12 },
{ id: "sggText", title: "시군구", widthPercent: 10 },
{ id: "bdstNm", title: "시설명", widthPercent: 20 },
{ id: "daddr", title: "위치", widthPercent: 30 },
- { id: "frstArchPrmsnDt", title: "준공년도", widthPercent: 15 },
+ { id: "frstArchPrmsnDt", title: "준공년도", widthPercent: 13 },
{ id: "archArea", title: "건축면적(㎡)", widthPercent: 15 },
];
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
index ad6b0f9a3..29c8e529d 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rainReg/index.tsx
@@ -69,12 +69,12 @@ export type chgBuilding = {
export type customRainBdst = z.infer;
export const upHeadList: TableUpperProps[] = [
- { id: "cityText", title: "시도", widthPercent: 8 },
+ { id: "cityText", title: "시도", widthPercent: 10 },
{ id: "sggText", title: "시군구", widthPercent: 8 },
- { id: "bdstNm", title: "시설명", widthPercent: 14 },
+ { id: "bdstNm", title: "시설명", widthPercent: 15 },
{ id: "daddr", title: "위치", widthPercent: 22 },
{ id: "bdsgUsgText", title: "건축물용도", widthPercent: 12 },
- { id: "frstArchPrmsnDt", title: "최초건축허가일", widthPercent: 12 },
+ { id: "frstArchPrmsnDt", title: "최초\n건축허가일", widthPercent: 9 },
{ id: "archArea", title: "건축면적(㎡)", widthPercent: 9 },
{ id: "lawTrgtYn", title: "법적의무대상여부", widthPercent: 8 },
{ id: "bdstChgYn", title: "건축물변경여부", widthPercent: 7 },
diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
index 988b97243..82915f4c7 100644
--- a/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
+++ b/apps/wr/app/store/ruseFcltMng/fcltReg/rswtReg/index.tsx
@@ -58,12 +58,12 @@ export type customRswtBdst = z.infer;
const rswtRes: customRswtBdst[] = [];
export const rswtUpHeadList: TableUpperProps[] = [
- { id: "cityText", title: "시도", widthPercent: 7 },
+ { id: "cityText", title: "시도", widthPercent: 8 },
{ id: "sggText", title: "시군구", widthPercent: 7 },
- { id: "bdstNm", title: "건축물명", widthPercent: 13 },
+ { id: "bdstNm", title: "건축물명", widthPercent: 14 },
{ id: "daddr", title: "위치", widthPercent: 20 },
{ id: "bdstUsgText", title: "건축물용도", widthPercent: 11 },
- { id: "frstArchPrmsnDt", title: "최초건축허가일", widthPercent: 11 },
+ { id: "frstArchPrmsnDt", title: "최초\n건축허가일", widthPercent: 9 },
{ id: "archArea", title: "건축면적(㎡)", widthPercent: 8 },
{ id: "lawTrgtYn", title: "법적의무대상여부", widthPercent: 8 },
{ id: "chBuildingYn", title: "증축/개축/재축여부", widthPercent: 8 },
From 4b5ceb0e0a784af2a91d7163382c6e916a7f5c69 Mon Sep 17 00:00:00 2001
From: Leeinseo
Date: Mon, 22 Jun 2026 13:06:30 +0900
Subject: [PATCH 43/96] FO dashboard-red theme edit-Leeinseo
---
.../pages/(with-layout)/dashboard/facilityInfo/page.tsx | 8 ++++----
apps/fo/app/pages/(with-layout)/dashboardMain/page.tsx | 2 +-
apps/fo/src/app/styles/components-red.css | 4 ++--
packages/common/business_components/src/ui/tab/index.tsx | 2 +-
.../business_components/src/ui/table/HeadMakeColSpan.tsx | 2 +-
.../common/business_components/src/ui/table/index.tsx | 2 +-
packages/common/components/src/ui/tabs/tabs.css | 2 ++
7 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/apps/fo/app/pages/(with-layout)/dashboard/facilityInfo/page.tsx b/apps/fo/app/pages/(with-layout)/dashboard/facilityInfo/page.tsx
index e65fe3cc8..d4cfb7bab 100644
--- a/apps/fo/app/pages/(with-layout)/dashboard/facilityInfo/page.tsx
+++ b/apps/fo/app/pages/(with-layout)/dashboard/facilityInfo/page.tsx
@@ -226,7 +226,7 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}:
-
+
{upChangeRePlanFclty}
@@ -239,7 +239,7 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}:
:((index === 6 || index === 7 || index === 8) && (head.id === 'now' || head.id === 'stepOne' || head.id === 'stepThree' || head.id === 'stepFour'))?
null
:((index === 5) && (head.id === 'provisionalApproval' || head.id === 'stepTwo'))?
- {el[head.id]}
+ {el[head.id]}
:((index === 5) && (head.id === 'now' || head.id === 'stepOne' || head.id === 'stepThree'|| head.id === 'stepFour'))?
null
:(index < 5 || index > 5)&& (index!= 4) && (head.id ==='provisionalApproval'||head.id ==='now'||head.id ==='stepOne'||head.id ==='stepTwo'||head.id ==='stepThree'||head.id ==='stepFour')
@@ -250,7 +250,7 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}:
?null
:(head.id === 'item' && index != 5)?
{el[head.id]}
- :{el[head.id]}
+ :{el[head.id]}
))}
))}
@@ -260,7 +260,7 @@ export default function ProcessFacilitySearch({searchYear = '', fcltyList = []}:
-
+
{upChangeHeadListOperationStatus}
diff --git a/apps/fo/app/pages/(with-layout)/dashboardMain/page.tsx b/apps/fo/app/pages/(with-layout)/dashboardMain/page.tsx
index 67e704570..05d906500 100644
--- a/apps/fo/app/pages/(with-layout)/dashboardMain/page.tsx
+++ b/apps/fo/app/pages/(with-layout)/dashboardMain/page.tsx
@@ -1,5 +1,5 @@
/**
- * 대시보드 - 표로보기 상단구역 페에지
+ * 대시보드 - 표로보기 상단구역 페이지
*
* - 대시보드 - 표로보기의 3개의 탭 상단에 조회년도, 행정정보, 시설명의 구역을 컴포넌트
*/
diff --git a/apps/fo/src/app/styles/components-red.css b/apps/fo/src/app/styles/components-red.css
index cadffac52..c78e23183 100644
--- a/apps/fo/src/app/styles/components-red.css
+++ b/apps/fo/src/app/styles/components-red.css
@@ -15,12 +15,12 @@
}
[data-theme="red"] {
- .card-border {
+ /* .card-border {
@apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
}
.card-header {
@apply border-b-[#3f4042];
- }
+ } */
}
input[type="file"] {
diff --git a/packages/common/business_components/src/ui/tab/index.tsx b/packages/common/business_components/src/ui/tab/index.tsx
index 273a4b907..2c69f3f7d 100644
--- a/packages/common/business_components/src/ui/tab/index.tsx
+++ b/packages/common/business_components/src/ui/tab/index.tsx
@@ -30,7 +30,7 @@ const UITab = React.forwardRef<
{tab.label}
diff --git a/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx b/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx
index b3d3fdc40..3ad4c8e23 100644
--- a/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx
+++ b/packages/common/business_components/src/ui/table/HeadMakeColSpan.tsx
@@ -29,7 +29,7 @@ const HeadMakeColSpan = ({ upHeadList }: { upHeadList: TableUpperProps[] }) => {
colSpan={head.colSpan || 1}
rowSpan={head.rowSpan || 1}
style={{ whiteSpace: 'pre-line' }}
- className="bg-gray-50"
+ className=""
>
{head.title}
diff --git a/packages/common/business_components/src/ui/table/index.tsx b/packages/common/business_components/src/ui/table/index.tsx
index ed05a7f19..15aef7fa9 100644
--- a/packages/common/business_components/src/ui/table/index.tsx
+++ b/packages/common/business_components/src/ui/table/index.tsx
@@ -152,7 +152,7 @@ export function UiTable>({
<>>
)}
-
+
{widthFixed ?
{leafCols.map(col => (
diff --git a/packages/common/components/src/ui/tabs/tabs.css b/packages/common/components/src/ui/tabs/tabs.css
index b1227b0ce..bb097be0e 100644
--- a/packages/common/components/src/ui/tabs/tabs.css
+++ b/packages/common/components/src/ui/tabs/tabs.css
@@ -22,4 +22,6 @@
.tabs[data-variant="outline"] .tabs-trigger {
@apply relative rounded-none rounded-t-sm border-border bg-background text-muted-foreground after:absolute after:bottom-0 after:left-0 after:h-[0.1rem] after:w-full after:bg-border after:content-[''] data-[state=active]:border data-[state=active]:border-b-0 data-[state=active]:border-border data-[state=active]:text-foreground data-[state=active]:after:bg-transparent;
}
+
+
}
From 4f10864c2cca82b42f37ab6897a2ce3d397d69bb Mon Sep 17 00:00:00 2001
From: LGS
Date: Mon, 22 Jun 2026 13:09:20 +0900
Subject: [PATCH 44/96] =?UTF-8?q?[=20wr=20]=20=EB=AC=BC=EC=9E=AC=EC=9D=B4?=
=?UTF-8?q?=EC=9A=A9=20=EB=A7=A4=EC=B9=AD=EC=8B=9C=EC=8A=A4=ED=85=9C=20Bla?=
=?UTF-8?q?ck=20=ED=85=8C=EB=A7=88=20css=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/wr/src/app/styles/components-black.css | 53 +++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/apps/wr/src/app/styles/components-black.css b/apps/wr/src/app/styles/components-black.css
index fd651fe6c..d337b1ba1 100644
--- a/apps/wr/src/app/styles/components-black.css
+++ b/apps/wr/src/app/styles/components-black.css
@@ -15,6 +15,52 @@
}
[data-theme="black"] {
+ .card {
+ color: #fff;
+ background-color: #0a0a0a !important;
+ }
+ form {
+ color: rgb(255 255 255);
+ }
+ label {
+ color: rgb(241, 241, 241);
+ }
+ input {
+ height: 3.2rem;
+ background-color: #1a1a1a;
+ border: 1px solid #262626;
+ border-radius: 4px;
+ }
+ input.text-gray-600 {
+ color: #f1f1f1;
+ }
+ button {
+ color: #171717;
+ }
+ button[role="combobox"] {
+ color: #f1f1f1;
+ background-color: rgb(26, 26, 26);
+ }
+ div [role='tablist'] {
+ border: unset;
+ gap: 4px;
+ }
+ .tabs-trigger[data-state="inactive"] {
+ color: #a4b7bf;
+ background: #55595d;
+ }
+ .tabs-trigger[data-state="inactive"]:hover {
+ color: #6bbaff;
+ background: #4c4f52;
+ }
+ .card-border {
+ box-shadow: 0 0 10px -1px #0000000f;
+ border: 1px solid #393939;
+ }
+ a[aria-current="page"] {
+ background-color: rgb(32, 148, 250);
+ color: #000;
+ }
.card-border {
@apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
}
@@ -77,6 +123,13 @@
.gis-layer-toggle:hover {
background: #1a1c20;
}
+
+ .table-ui.secondary th {
+ background-color : rgb(98, 104, 109) !important;
+ }
+ .table-ui.secondary tr {
+ background-color : rgb(84, 85, 86) !important;
+ }
}
input[type="file"] {
From ef331363f737cdd0fff96ece8a1390a1e55ff050 Mon Sep 17 00:00:00 2001
From: LGS
Date: Mon, 22 Jun 2026 13:09:53 +0900
Subject: [PATCH 45/96] =?UTF-8?q?Revert=20"[=20wr=20]=20=EB=AC=BC=EC=9E=AC?=
=?UTF-8?q?=EC=9D=B4=EC=9A=A9=20=EB=A7=A4=EC=B9=AD=EC=8B=9C=EC=8A=A4?=
=?UTF-8?q?=ED=85=9C=20Black=20=ED=85=8C=EB=A7=88=20css=20=EC=B6=94?=
=?UTF-8?q?=EA=B0=80"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This reverts commit 4f10864c2cca82b42f37ab6897a2ce3d397d69bb.
---
apps/wr/src/app/styles/components-black.css | 53 ---------------------
1 file changed, 53 deletions(-)
diff --git a/apps/wr/src/app/styles/components-black.css b/apps/wr/src/app/styles/components-black.css
index d337b1ba1..fd651fe6c 100644
--- a/apps/wr/src/app/styles/components-black.css
+++ b/apps/wr/src/app/styles/components-black.css
@@ -15,52 +15,6 @@
}
[data-theme="black"] {
- .card {
- color: #fff;
- background-color: #0a0a0a !important;
- }
- form {
- color: rgb(255 255 255);
- }
- label {
- color: rgb(241, 241, 241);
- }
- input {
- height: 3.2rem;
- background-color: #1a1a1a;
- border: 1px solid #262626;
- border-radius: 4px;
- }
- input.text-gray-600 {
- color: #f1f1f1;
- }
- button {
- color: #171717;
- }
- button[role="combobox"] {
- color: #f1f1f1;
- background-color: rgb(26, 26, 26);
- }
- div [role='tablist'] {
- border: unset;
- gap: 4px;
- }
- .tabs-trigger[data-state="inactive"] {
- color: #a4b7bf;
- background: #55595d;
- }
- .tabs-trigger[data-state="inactive"]:hover {
- color: #6bbaff;
- background: #4c4f52;
- }
- .card-border {
- box-shadow: 0 0 10px -1px #0000000f;
- border: 1px solid #393939;
- }
- a[aria-current="page"] {
- background-color: rgb(32, 148, 250);
- color: #000;
- }
.card-border {
@apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
}
@@ -123,13 +77,6 @@
.gis-layer-toggle:hover {
background: #1a1c20;
}
-
- .table-ui.secondary th {
- background-color : rgb(98, 104, 109) !important;
- }
- .table-ui.secondary tr {
- background-color : rgb(84, 85, 86) !important;
- }
}
input[type="file"] {
From 7b1c12e9526b53124162685c369e9a05e9cdf3c0 Mon Sep 17 00:00:00 2001
From: LEEKYUHYUN
Date: Mon, 22 Jun 2026 13:10:50 +0900
Subject: [PATCH 46/96] =?UTF-8?q?=EB=B8=94=EB=A3=A8=20=ED=85=8C=EB=A7=88?=
=?UTF-8?q?=20=EC=B9=B4=EB=93=9C=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EC=88=98?=
=?UTF-8?q?=EC=A0=95=5FFO?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/fo/src/app/styles/components-blue.css | 70 +++++++++++++++++++++-
1 file changed, 68 insertions(+), 2 deletions(-)
diff --git a/apps/fo/src/app/styles/components-blue.css b/apps/fo/src/app/styles/components-blue.css
index 7c1e9db27..b4d49cbcd 100644
--- a/apps/fo/src/app/styles/components-blue.css
+++ b/apps/fo/src/app/styles/components-blue.css
@@ -16,10 +16,76 @@
[data-theme="blue"] {
.card-border {
- @apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
+ @apply border-[#d8e3eb] bg-white shadow-blur;
}
.card-header {
- @apply border-b-[#3f4042];
+ @apply border-b-[#d8e3eb];
+ }
+
+ .card {
+ @apply text-[#4b5563];
+ }
+
+ .card.card-border {
+ box-shadow: 0 1px 8px rgba(15, 23, 42, 0.06);
+ }
+
+ .card.card-border .card.card-border {
+ @apply border-[#dde6ed] bg-white;
+ box-shadow: none;
+ }
+
+ .card.card-border input,
+ .card.card-border button[role="combobox"] {
+ @apply border-[#d8e3eb] bg-white text-[#737373];
+ }
+
+ .card.card-border label {
+ @apply text-[#666666];
+ }
+
+ .table-ui.secondary {
+ @apply bg-white;
+ border-collapse: collapse;
+ }
+
+ .table-ui.secondary th {
+ @apply border-[#e5e5e5] bg-[#5987bf] text-[#ffffff];
+ font-weight: 500;
+ }
+
+ .table-ui.secondary td {
+ @apply border-[#e5e5e5] bg-white text-[#666666];
+ }
+
+ .table-ui.secondary tbody tr:hover td {
+ @apply bg-[#f7fbff];
+ }
+
+ nav[aria-label="pagination"] li a {
+ border-color: transparent !important;
+ background-color: transparent !important;
+ color: #0a0a0a !important;
+ }
+
+ nav[aria-label="pagination"] li a:hover {
+ background-color: #f6f6f6 !important;
+ color: #0a0a0a !important;
+ }
+
+ nav[aria-label="pagination"] li a[aria-current="page"] {
+ border-color: #2094fa !important;
+ background-color: #2094fa !important;
+ color: #fafafa !important;
+ }
+
+ nav[aria-label="pagination"] li a[aria-label="Go to previous page"],
+ nav[aria-label="pagination"] li a[aria-label="Go to next page"] {
+ display: inline-flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid #e5e7eb !important;
+ color: #666666 !important;
}
}
From 7ac53e56d7e258772ff3c79b0394c42aa1d868ed Mon Sep 17 00:00:00 2001
From: LGS
Date: Mon, 22 Jun 2026 13:17:12 +0900
Subject: [PATCH 47/96] WR dashboard-black theme edit-Leeinseo
---
apps/wr/src/app/styles/components-black.css | 53 +++++++++++++++++++++
1 file changed, 53 insertions(+)
diff --git a/apps/wr/src/app/styles/components-black.css b/apps/wr/src/app/styles/components-black.css
index fd651fe6c..d337b1ba1 100644
--- a/apps/wr/src/app/styles/components-black.css
+++ b/apps/wr/src/app/styles/components-black.css
@@ -15,6 +15,52 @@
}
[data-theme="black"] {
+ .card {
+ color: #fff;
+ background-color: #0a0a0a !important;
+ }
+ form {
+ color: rgb(255 255 255);
+ }
+ label {
+ color: rgb(241, 241, 241);
+ }
+ input {
+ height: 3.2rem;
+ background-color: #1a1a1a;
+ border: 1px solid #262626;
+ border-radius: 4px;
+ }
+ input.text-gray-600 {
+ color: #f1f1f1;
+ }
+ button {
+ color: #171717;
+ }
+ button[role="combobox"] {
+ color: #f1f1f1;
+ background-color: rgb(26, 26, 26);
+ }
+ div [role='tablist'] {
+ border: unset;
+ gap: 4px;
+ }
+ .tabs-trigger[data-state="inactive"] {
+ color: #a4b7bf;
+ background: #55595d;
+ }
+ .tabs-trigger[data-state="inactive"]:hover {
+ color: #6bbaff;
+ background: #4c4f52;
+ }
+ .card-border {
+ box-shadow: 0 0 10px -1px #0000000f;
+ border: 1px solid #393939;
+ }
+ a[aria-current="page"] {
+ background-color: rgb(32, 148, 250);
+ color: #000;
+ }
.card-border {
@apply border-[#3f4042] bg-[rgba(255,255,255,0.065)];
}
@@ -77,6 +123,13 @@
.gis-layer-toggle:hover {
background: #1a1c20;
}
+
+ .table-ui.secondary th {
+ background-color : rgb(98, 104, 109) !important;
+ }
+ .table-ui.secondary tr {
+ background-color : rgb(84, 85, 86) !important;
+ }
}
input[type="file"] {
From ea274f8f7dee77a39479a2184041ad3707b512cc Mon Sep 17 00:00:00 2001
From: LEEKYUHYUN
Date: Mon, 22 Jun 2026 16:33:16 +0900
Subject: [PATCH 48/96] =?UTF-8?q?=EB=9E=9C=EB=94=A9=20=ED=8E=98=EC=9D=B4?=
=?UTF-8?q?=EC=A7=80=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EA=B5=90=EC=B2=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../public/images/landing/intro/rel_note.png | Bin 142023 -> 61459 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/apps/dm/public/images/landing/intro/rel_note.png b/apps/dm/public/images/landing/intro/rel_note.png
index 6b26f52489f804a735386277be7f53bee3a4ebce..c5cd23c7b5caaf468798e365be19166c0fce65a8 100644
GIT binary patch
literal 61459
zcmdSAWkXv}_XS!(3lsvhXps=CMT$EVNPys0TuSj$ptwV!xVu|%in~LBmLLU+7k76J
z5JGPHd;X8y`wi|3LgwVmWY6B&bM~yYCQMaXmf#8HlLrqT5J2U?>JJ`ZvOIY3&=&^_
zeZ?R5!U6pc_miBi(}M?iB!B-NK1k0bM_+vCq%JGHhGb1GoLHO9vb!?T;t>Fp8lm
z_DgTVXX()(Y{j55p_PQ&Tj|2&cJ5~(@q5tTl_G%<>Q=py0x^o@BB6`%Np<&*$;wn|
z?O#9e-~+hq%)jLc8R@V&bGN&ey6U>-mvt?bymEZ{kRDwI*-q0&=Xzc>S6+T04=Vtb
zG2Kk|p2uQMn@ITL^v*WI$DS;ZNGdd)=TnC50{_?v;n-`ll{d`s9$pG%h}ldL$51@Myf*AVT$;2XH
zzqmJTKf89DtNlz0hrTt+790N)!51v3W?wTR%59N#2z5kz7SwM#bJ*xYb|9n(lq5wD
zqK4br6)OK53DJ}??&!K;mAo0*8n&Cz@=>5eTS;o(CZ`U38RX=IS{8Pjil9OsYsfxz
zmGw0X6?sXSP6=}Oi7nb;=fwNb1y9TNQ@GG-9r|t;0(Go*||{h+q?cVa5Nw;m)f9s
zcS)dgd`;P7&ldFwRc6hw2$Pv?Du0$F3GOMT)!(N*^Yi!~vQR8b=paRo_QA-1yn4Ha
zG^d)uwo=1n>FG6uIIYZrjE(lcshsMQe}5JFK2LmH`TuExW9a{X{N<0cN^pmA-1G8wLkMV(
z`i@(Q_wghAZWQ2s>3nu~MqVw_MJjIFe&-oSQ8UKyp)6E|eanYx^J*Wwsum^};pw(J
zc$XX1bQSz@Bn?kr)RKp#fO!|vprPFJN*Dfnyzm~rt|C6m-nn0Swmh@w7*U26Zn@
zznvK4w=gWU9_dih)9$GG}eXSj$yJH~l-@V;OO|
za&CyqqA5tW^Ds1aXaT`Ug{G!TD2>fJhXPdLud
zJUYO=jdV^*gPL_O9PZ8n)(80kNn{eik)shkX6b1;H<3fV5&2fA@bBVVS#BE|S{tme
zA@Fylal*Z}@Nf
z+Y*#t)~42Gf`b=3-5tJ#n)`tDfWbQUEV@!c6dYs&8WoWy9)}oOtO51CT#8|A1SVAB
zA7zuR!cBn!4nmlW%*2AwOyUM|8O!G#o$=M71|^y}Oar`?Y9J$z8@I(IR^7HIl@kT)
z$3r9=;KnEPV0$_v<-+IQ$9Z@Q!7lrYUvorzUYvDF?0)-NHzasW<%Aqn@wsxc8@$JE
zzVBBkL#^G{IAAv|{-#$B)l-F9;Eul0^(V1r>s%*08dw%XXHi2FqNlXDMSj)yvICFv
zq)Qudf3%DEQqjc&m!p^BxAUAqHr&`Yc};{E`dNB7qdt$BrVEQUX`UVYel{x6kV}(o
z?D+(D@X@tZ?J{y?2qx+s?g-s@i$_RoQjil?{aWeyt~uXbElwc`z!jW)%9Mjhs=6)_
zXiPF^DtvEgYdqbn++40&aC>n&F8yr2+ml`Rse_9lbNxkdfh7{3d~dG1md^Yr5NKA)}4=~2^%tIqDvu+RPC_Z@h$0Qta7Y!qCC{;UEOH&
zM6}2>$`@(t*362n=#sVh)p+^%IHQwI;o$Kj_zo?5dym+~F+AlMCHncCPW=4Os5!@%
zkSl@dayx;;Z&nB;Ed%eL@F806=gT({XSIm+$M-1x%UZA7Ank>F5@s;1oWxpS3FfxX
z`u-*%%HxEl{W?5ov&%!J$~c8)quNO$!H-k?rp*L&lquF8lrH|7Mx(fS~#GIph4&{@TFZ+Ks0qSv(?qMT;aVG
zF&GmyKXqxT%q~`E;Cv&65+#biyaN=EZ|Ago8T6k380IRBM>#tl;|}6q|Bj)1^ZumT
z2t<%r(%tUq=0V34AE+{S%~q0t9g3%bXDM_Sz3{#(^y8~|8pVRm3JF9S*~@pt}
zgrrD94IdBo#MV`Jg)Z~7N#S4LtaV8-VqWB&Jp4A-Ck8QBQEQ2aoU67ooUesO5N_DU
zpER(@?6DFfp>y7IyfQ3ZFQ3`T8O&Q6pVxwpn}ZL8#Oz;x~ic^kvI
zn=(*3g&-ViPIkbT0Cz~ure`f&m?4f@8a3F~Rq_ZV@=1`WGBUhJUhWw2F`5elvkxT2
z3Gyh8ybjz-tIj`-VB;Ny-M27!o@|N3LVU1%CGHb1LceXs{du=^;_u^Qeec<`u>tEl
zW)fm;#aRC2RMkOZye{oBevV69UzhDxTR^)pFovM<0`d%oT`~}jU#H-4L47|Qkcod<$
zd^k-ThW|s4ygLbY=QMgrC>_dJ#*>DHAX9N^x(r-9{$j5;qdkRR_{s!fqx<+%H)Bd7
zBTcPHVgxjP0%(bJ1;gq>fA1^qc%>E%H`vb)wn{tb^0JFP9jb?GHVpLx+2grLdk_0y
zODa&cA?rXu?o>foNa0h#&i1Nu-!jOF76Zj0IZ4YP8IJcUk&O8h`dcQ6+xusm%Qw^F
zG*PMwL{v=7eh$lzH~qAU@S5%~gi$9sj4V+h_sAJZl4_UAY@AIqznFM{7&eeI@+p1|
zPLE)_TY|XCiSK4dj%+-Uxd&v+HpA6$>)h9utB7!ADDixI*k$T_O%3U=XPZP=_NJc<
zisOx6LgI4Ui8t-+g2^3(?7I89O8eC-hUb3wta^?CUT=+@x2jheh+#A5=L+_30&2mc
zdgE_sP9*)dxM0qyA-imtPJ{P|HhB|6k1?OGKjcZm`e_Pe#vjYZlk#4ltZph{1_brX
zl9M8^!|2rRkhv*o68a14DETfJ7z*35XX&z>nVoi;5R!g~#L@oE--X|0zCW+Wb%
z8HmKSn;(&H8wd%U(Y_X$=^WrT=BAV7D1uPBxlEerfj`7C38{ufK8=ZqVGEzqBkoA9f`Q+OpdqYqR#fRJ5QN=rGWs+cH!OMu!37(CPuCPy$8X(7cI!HWyAYwtnul!KR{knSXk~_>d-Q&QL
z#8}$QEKGG{YfVJkjeL3eSS8QxH!b7l4wtD-_TECWBeMIP5MENhog;`d$T^A(E(`Yb
z@!e&g?8pT_|ApMso<}k~mmetiE4jgLsJnb}E_@lhyCw(NfQZgT+Zr!~?er4te?wTj
zy9>lU{6YQbo7N>!+ZRU`PxyM+%=cD!{kMTHKzx!RwD0_Px=^lQN
znhubb@F>u~K)ynH0y4cH(XRTr
zj{6h~6yka@VOOJmudv?Rfpo0e04i
zaygto+8xK<`6L?UXJmxjb{!&GRGCLOHk4tdue8$)i$~xc
z5--Uxe3pzGxjVqBCT|0=No>+w$F+9XnS@WGnY_H4(KmrHZThCAPtw@kZ$RtxAuqNx
zD%Zzill!tjV}pbY4Dr1gQS~xx&%Y+|tH`CxJz)UHWqq`<%)o#4bMG=J9*672v;&(|
zGXA>vtPpNcCN9HOPWQ}3xQoViE3U>00g(KVJPGq1=x)vW60+g(r{@zoPNe9azonmr!kEgl#Wz|BGIjyewtvX6hJWV6^IEu8VFk1M?$#(FgYLDA~n}+(d4k}(=5O3m}hF%&uDW|v1z*Z
zd{q<*6-_X3tUdSmz=dgLiu)6e?N>|vSmDm^R2X)>J@xeGA@$DziTyRe#oZ{?01HEb
z!@WqL-WLmbLr7bC_Or^N@%jj&C(i2iqY{XZ5)yne>n_^B}lANl#-^sK-5;HRQ>~db7;2k-U
zHyC=>Ev}@+?W2YKQNYn3S_4W0yayOg`_H%9o%57hyeBs5#Nyjk><@}(tfZa+B6F6(Ln`U)=l}PN7$L
znND;ufdvbvDx?+GHU3?>T7V^s1sec!%oHpZq=~y^uXvxdq14}XAr~^oo7-`g@`xZG
zH0Q|s{AN|@ZWDb3S`OOGWr1;=K(@lUJ+ZBBXV>K#7QH3fQwuG~>2PJXPa}JUNazoY
z5$5>;M0*)y4H_Fdd815{Sv~ZT+Ne(0t}NR_n2UWpFaEPvPsI%C$1s$L)D{)Yd$XEt
zMUz(;9;-cHYL%9FFXLzXnFuz{0f7U^oMe)75$~2(4~4x##-^Nm8oO@9BAb;J@?}83
zBvA7&`m}FXk=b&tb58H|e0~W|cH`Ta1oOSF>OxjZ&8t?yi#vNH_>XpOd5{fSTw@7D
z(;Zu#=PeAVCbDq+RWiWU&CF6=gXjH2FtaobRLRTPZ%20$RE%MdPeST^+Gs)Ny<`0S
zB$ay@aR1W!Iz>a#TvV2`mQjVo-prPY*Zr_
zk*%6?f&E$R2zE#sIzfBIy49=h9DRMda+b!WdUu$L^6BYlpSs$~SFt{ei47$gvE*A}
zI_PNHSDB0`AYD{2_(cK1G*q{=Pr#ywbpA3+&)cLKuhvw}?K4<9e*#d#nG{@gvd|;J
zE5L?Vw_jWrAT%uD8lkcG3v$CBWPD#*8U0M5xIb6ExQW}&P*o*nv>v5h2+8*LPAf~i
zJ}2DAt4UwF(wjyq{c9tJ;XSivbuw%zpU23mG;^Y+fk~x8y35plJtEQpx*U=TOiWht
zQ3Qp?1m69!d@`WC6bOEEyECM|XX(-Qct9PaERAgXmPcHU!E3tev2KrNuN=RzEKqM5
zjYKs$CVt?XR}19zNOq+W3gOB3Ka_nWZS*)_9!CVqASI$<8k_hY#04Ypcxw}Dp0!&-
zQ>9Be$VW2w{Ozv>!!jr14THiWSQ}xUNWzmC;Xi;
zr5WVNG4i@LZ^xk)OTMAiE{JFmFQA%dH$gPlDW+kh^SSj&3j-k>F4%YeAltP{U)y_1F*Gbbj_6TBEd
z20ld*`Ft;8q8fe)hWB{AK8)BnLE@T#NV;GQ2|bn+ovAAw{k&7IW$ct57x~A=y2%Oc
z@NLqaMupO_cBW_6RT=HopTmK0=A6wnDqQFrX93>yuOZfcHa!q|H@~EWcTt8pG2(D#
z+#kL|J#DN=1)L4DG5l!Iffx;nnAtme6)(J;Q|jVwTqHL4*Y_U`(#hZz+G^lh4GVZt
zH^mezhvOJg!lOPCQJGLbHc!UMA#3b-{)U>^e1eue*8#WfVmjbur_(3U
zxLwzF_EUsK{4+_@xQMK$IJ<@R>#ePpPw5ep}$Tx;T4XK$ou0
zg%R<+C~Pk?m~Qf*qld4j^GC|hhE<50bHyj6oBh}HdAvr_HKKlWY3F+%ftT#WW5@bZ
zp6!NIy0Ce$#9Ee5c=7vlff=g#p%f~}AZDQ9F?%|%s20;{3)yRSM69cl-mpR8C%myH
z`W~**rx~cT@}mR-Ad>isR53i}YASplaB04h)O+v5c^OAr
zT9-Q@6!Vp94iiDo&aZo%ct=Dqz1?L03j@FPs$oC)TNXx^ww%V$f`fIMA}1;^fIAQX
zf$WPju`hSxSho?Dzgi}o+nZ(b8+$*@e$X-6NkOnuyXuT;1qA`3IQ#@YAIF(U0r%AePdQArTSZncp!UsfqjLX
zh=31QI9s;zGRY?bePIvkK)qyg!mhDxN|iY>+KSt>(PqrT{jhz|u7NJAKiioRoSVzk
z@1?(u*J_M!;%zHr^*Q6m&q+E)biz#K2^S6-;)mjjn}6d2ThFweL_H!2(yG(M3j#
zB2p?SI+=;4ClQ()kqE|rlf6La`I(Snq4#jr3o(v;_Zl$utYPY2zIy{}J>h@X+Z=X-S|U$tk7uCWfY&!^Gb9)U=+N9o6RLzraGe2*F|
z&4iJ)_8M0?bGt_!m%e_)i+IL5w#&c$P)aKb7(hY~z>R
zhAuUD!;^)>Aoe?*0Oj9c)_c9@Us)KEa%}54mfpp6n|S)A8`R+}j;NMli5g1k_;DX1
z%{H;_F0w?QONHJOHe|+P-4!I8$>|deJmwzK{UNDthWi;oGlXiwr$~QZm^8_#aY0Z%
zRJr4O4a}2sn;VJMIzGcI_O6ls@q483>GCQWtx5iiFP!oRG(T$B;U#%GViyH2n)1`g
z0U!$mE?s=cuHPs;*7V)@ZmrV~-thhq4?kN#JV_PRI_+E}bJ&SZy|U#kRvMOzhCCnP
z4pN$qeStKm;M7sNR31HzHJ>I}2rfMoQ1G4
zK0inBq9RE@22xp1SRX$OG~^rW@xd(M+9YZ=-ss2))nRfmz@e|LCd9VZX*!Z;c_}q6
z?)_R^$#L&t*YWsr+rbrP=$l^(oV*^XGI4OX>m{1y0nf+wRpsHY0`0
zInkMoiUGAD?nVjnk`^_Eh`m0WH1m
zJhBQ>(hmnWPC2%)ZAU%HI3R7Ae!19LkE1&d7Yccs
zz5?|vAG(n8ktN8|^31ZUY+Eo{*4J@Pxmr3Tw>_fnNGTVQK!ki8Xw|^yGSS&ThWu)Y
z#_b;(E%+RJRTd9?i_so3KZ%vDqYADpN^W==Rqh#RGIOD)KD6oj)^=F$sA7x~MQx+-ip|BuGSOG~=U_cq^u=U)6U4Zi$PkzH%&ysfI=u9-zmhqlr0OeH
zl7bg64Ue0@@=nM^Z`d8BNWZ4z$MOEH#IWjRnvH(xv$HGz<>(qrii5GVRX#e+P~C55
z=jcA^GZD8wB5NM
zm+|Z9(!5=&ygXOw7}q}H4F4B5xU)HV+igI2D-~K5n40-C1(ew?f>{mDr
zZ#=@h4Ei^%nD;sXzSN6L57w?m6^LaK<%!4rn_(oifC1)3{_=&PdbLp`|KS;TOs4M&
zXFFQ1Y?%W~B>ux!2HlKW8ab&F(A)ozm}=xMr_ZIFpS212{K2K)Bl$Ob2{xJhssE1;Wt1HM
z%gwCct)fBoZz)BxuT!>ieI$x-ml6NWZ>#pXs+x_Dz?LKsFL+NJoCpVcXLP
zxmQ-%^gCD8`tNnr&V8prEZ-?YC>u-za`;;6Fia{A21zFap!co~gW-l+uA_M*wh;i%<0
zcY*qPml5Py%Hp@}9JlkXOLn*Zi`^Gnbu(l}PD&m=gzScUo9l_lt5?TO11eXe$#p9t
z%ct)zTC?1)CbXWsUkQ2yOtvL&nNY4|$;_c5V|R?&&fZ6pYT6#6k2cQ~I0mx(#uHhO
znn{#dP*MHz3CvMZQNHsu?I_B
zXyvn5R(88sLo5zT*X?0!c>3T=anv)6eQ;uJaZmn9HI@|r3Ik`QZk?grza6KQk
zGk-X6H&r*{s5EwKYp9!-;Nlc12%|nOGIVoEigjk^vD1|-<##yS_+fK)Wo1l%KeyI)
zbT+hQ;IwqMqLb~km3A-a7&)uui`LwX)Xb8$+v_k7-R%iJV25*klP9
zc-elt#uvJ|n0VEyU0sDgpjSdw{$O0`ri4i
z-)(G5sQ4U4Yt=<>
z_rS-SD_K}=UU?x1#Cme7n2-YizX#Jye*<
zBrYwf8m;Gm!ydd;65{OnWg0W=oz?&C=@~PcKW?!Iu=vo;!m?qOuBjNGb4~&pw21?Q
z1I@dyA|nRYQNRX%NIE(AMIRi%8vKz$BYa`#u|G_e6!=t{$SVZ$=%tG4T#Y1--r(y1
z{FX3s{2(>PPs)G~2}~-kbqtcUDR%9?r$XEA6v9=Yb3qyK9M|DZiqYQBLWsgvR#|Ml
z&6j;H-y=bBlFHU^z4eehF3TKW&k%<$Ilu&c=%K2e({Oq&C=cF@aoTs?4wu!t0QQKs
zi-(49cyB{q1jB+6Az>yFA22Ip^5DsYkn>?S^2_~{tP}A^BMLSLzArs#nGfeyIK1t?
zc$It9Ax?An_vno^e>V7e!ir}PTNfMA%D1!p9*7TGq*a31+Eu?@IOP|1zr5#ae;Zo%
zPatxu7LE6eRG02=x1Kt32bRd^u~LM8HuyynDP!<7aHzirZ;;LrhwUX7q57|N>g%ri
zl$hv?v)Tu+(d;bp8@Y7Xbhde*!7!cdtoUgL0wq04N>H
zbP<@0DK3$F&LCal6~VN<%}46}VUk3gO!rCpZ5+v2olmsq>h0?Wu9s7r%K&vU$l0;I
zednwe>h-E9IW-jq1t7IwBN}_m@?4eDAZ
zjZ#bic0&%#L`zpaO7G=HK=FB2RPw9`Q?J=q|FD&!_c769U*JpoRmBvAoI0tr9{u71
znA{nrKfm92i}z_nAzV>~tKwwxWVhu!=P2)1ul?SRNnN-!+ZmOkETIq~{yV
zBjotwlu9yU`_W^DfJXE;0j16|Eh9P?vLNu3==S>CQM)%6bxW9qXnkJY#ZQF7BHrNq
z^v97bEa*)cvT-zXE4KHkQ@(7Bs|TpikKs!0p~QVb!W_i-c4u%IwS-c}09r39exZw;
z$z`KNl4En3IM!Na$pbkO_G~Tqn!hd;45(q07rM`%Rv*eeb_n_`$j1DPH|q7;OT4m&
zg5t%&4D;&GxmW?3?b)u10CqXmjjzx)RU^A6!0R5$;#*qXN((}hg#3ok0z^;K2$-DuQRk$*o*`q1S
z7kLyR1XNm;WGQdI)T);oy<=>kE0r8j#Wi`-TA0XSdMHTka?)KIKx|?<4>fF8r7Y)|
zIveWUgVAfnvO>8Zrv*nsX}g8#XVx4-Af}Htng)%w-2QLJgLY%MCZfV+Zn@|>6M~M5HmrM$Ja^Ga34Q*;Vy8h
zs|+bU4ZvPb8MySvUSzsphM_}{#$*vZQWx_(qEZB7yI(#3xd^tkTEcK4$GF}1&r&nk
z`zjwofAH&SkXI(uaHU1Qx#ZJUm{C;+(GK-TVDPuh^17CjB^=bT<4MX+<{qcMIMmR2
z{~h=Sn$YOftFjbv??ZfmK;h=8O5fFlALTF=R6vy}nPNRSmDyf!Dv(uyJmYP?7Jm0)
zE-iQf3-H1ns>WHq=4uRGEK(<}-VtNFD}J#MDmmXAk?jS`LR<*D9V#4OVPfXDAcVr700>D#c$~kI#On`>y9b_IOt1
zful9gk%)aaQqQ1J+Uihl0U~f*)1iDd|GD7hIHur_RsgeqCS}`xrBV7H$JxH>7F^pcD~89#N#>1E1}Hz^%)N6#fX=+3LkLz%*paKx_0w$cF30o%ehGp~y#
z&D)4|w6uJbh2Pd?S9?DiD=;B|jIc_v`5y9{O&)GsJ1$1CyF6Yd-A}YF#Otw6h3y3d
z3`k9z61Q3HKJe;#R)J~FI^B+Xo&x;V!bz%xQnC4+fMxvT+B2iOwj#Kw%Q$)CQ+tLm
zpeuH&UH*bvH1}}s_3s(yJf1CzS4*x^W;MOJ508p9Ts7Cj$@kV40cg!`;m&>hufK!_
z7)@0GlE$@6YunPp3paD>9P9u?PG*kyQ5GbPv9n5
z*n(ofC4B@_s>+oo3cBVT&KjQOul|})J|Bl&%ge(}P1V@~
z>WTlzMB|Q|->S))D@SDFHsP`DMLwO3VRR<7obTbaj^NIuf%267Onojks~&Iq7z_VX
zowD$Nm}>akhE84AB#Qx6MO}O!6VWub`7FuR(mbK=1OfY009X-#*-{R2i7S+=bq9T9
zVQGm@XhrL}Qj_^JHHV1Rs9d=$GdhU}26_J+SwAc2uDh!rIr-$;(*dirAK}Zps*#)4
zb*?K6C5sOlyQzm$sTC|3*8&3$@BZB6uZ!&G3q6NL@AFleNw!O>0Ep_W5xxBMaxfX=
z+`!bys>afU9Z!qnxs?zqV`~R^d(A+FLDQ7P0iMahcy&dF;QL$=_hP>jr6(nindb62
zmIlx{boN*49)Z?d$J~GNEA^5TvX7xZ+F@QA$lPkq!Y=L%RyEC)ZYbpV0-+=}^w=Nu
z)uN$&GQ>)Ya-YAG!~oUC`8)JSZx&J}Cao~AVdKmByr>a`4;fzpAaat8tWF+6FM1|`
z41mN&iC?46lX;57jf%Zocrg$+e-=p$`lIkCugzpxiWHaPvZ=$1xZ>JV-+r4XQ&DN!
zQO01~rxE&~sn6b}^U{r-?%90^9+@XD*i739ydJJ@*dzFnN2)|f@`5guJT|JIGvfLJ
zVGz!5iiEBOTZd^z_HtS1TZeNuz8n5U#2NHuO8}AzFnsL#f_KZ=%VK^f_eIS6!p8M<
zbuo==3!#&?bm@jK&yc@L7C1a`eV{CzC)8
zX2=`;!6-GN-l%lKC_}l0Gk88KK92$m>#-}y?M)MaMaC0Dc4HF?Y_}oriXdTH0T7eg
zC@6tXXwQ4v(B^U`ATNziGE<q!HDYjMq~p_GiD&qK;LD!m#~y>bq5R?0@H(Nq4GQ{_VCFU5RKWe;PxN2urk}Fxg-O1cY`K
zz%jSUC3l9%K%vSajV8#qmC`ou=EnjG4%@9dY3eG;Emk)>DxhC4ABwp5P;6YXJ9o3<>SpZZMKP$ZS~`3D
zbU@-zJN%!I0bZesMfoGfZhZAD5gBs*j1>uX0}f%^43l|2dN&&hn+|e-J_ebIy?grD
z^6mlFxQ$Y9!E4&{5I~SeI}t80+Ip<@GyQXV9Zj6zJc<^6`mfS%20h(@bl*6w4ccyC
z(Zl64)_g4b-#+Rj2D-qMi4&)hBKP9&L|-nbrz#!sCsE#gQgN@CLsSzMX_jRw
zKLdg#?MG>Pji4eEZ9ZG+lH}7neC_92YqbZ)^By{`<8(TNacNT4=H$)`n
z?-p~{3#NQ{LsLEJlW7oBElwSQrA2X=fDfTBeyFBfNq!~`(~3+0iF{L1VGJPps!_^T
z{(PFJW|E+lQt`Waw*z4iomAL`F=(OvC47`
z$g`{0b+A|Fw5>#v*bgzYS4U3hj$QV8#aNGH6sDx(8dHB#)_auJ-|6Tpd=B~kLnmuO
zkdxFZ@C#`34=g_r&74x6ChkWQFH-oJ{B}QTu|<4lVb7{_4?HG##xG0!51#lUt&&qb
zutXokVuQbCf0sQqHKdcsK=Dn<@2T!}K5fg06o%O!sHk$hCg0lPKvemTM#6)J=uhP`
zG<}kk%He?qd_-wUN#W_F03Fr?Q%g8c1#5J-2QJk!mo3rFDepkW8Y{6S`~GUZY0L6w
z#ojkVX;p+uLR$Sb^3fiaZ=Nt{483Uif-^W(sJT@>vVha;fE$kr3Y^Qy@*z|iikpeZ
z8tQoZ$7uOAv$s^VpXou~?^u)&ayqY15j_1c5z;1=7WnpaW=VwnBI=9&~>pQy{16a0c(gyxJ=V
zh`jBaYRUkJoV@Wd+jHI9ccmj1_P|mSS2?{IH;`_!RoO=BwxlM*n4dM^vla~es4Fn$GQUA~W`qjp;t+Oe4#?Qk09Q2FZ^)HNaesO`9Q7k8LD2xs=sStXUI
zdoC5P>NlxSPt!LxTKkhm-}NPXgO~8f+1VjNfqK!W9MigEp{E`c;Q?T%Uk2fYcfzPu_v1xWJXuLk|dAoA-`Y2Lr<5KegO?nSc
z*A)mN&&cPZ#>I}sRv2)MJqquds=V~}*mBTB&>OxP33O&M?E0i&&Z|7mfMO2fYu0t8
z?H~EWRT~Z_hdOrv=;(BL(A_H5)@y#bKj|e*DIiTlBf(O9c0nZ?fAM9XbRHFv;TNBN
zOWI9`F$>d!#nF&)=tv&NQXb3KOloek(3rf$0#aQxz^vBAVyA~QR{Yf={x6u`N{G&2
z$ZMgn*t?0G`wiG(C*sIgR8Bn{q`9sYdJFl_5hd_2&L#*rj=|_RzfT8cT`TFU_0oIiQ0@!w(WviLot?bQ
zgbaw$G2S`|NB2C%Lcsm^8-WiSPnB`hj6bgbAJ#4vO8MFSS9}82#On$o`oGdlq{-9}
z`W8Qye;cSq4iUtqZw=r5(8&m1%tM3z|MUf$kgkHz??Uw$Bxj?_eJ|fO?X_$h6xM%S
z*rD;dP;0tP(tepX+)!VCeOckNU$J1V&1QTQBKS*xnE(IyhQH&eVW2s~fPQHZ@HW0+
zg|Mo9e6iX}?W;MT?783Rd5&AeaqCb-A65R1mguGCnzLfv-mIlad!MU;@9EF5fH?C?
zTRRTIre*Is+8&4RwYoCnwX-w4-;%!lvts1ANs}F`MSXk0^4HM0uat>=4`$tzK(x}(
zKg|=$c70s1=2Nf3Bw^Y!4ydrQ$PS%0DR?bj4%nLM;-UjDt6~a=)r|_~-yzJk4U>dX
zU*OBfZ~ | |