From 98f24d8a96cb539f784dd4428eabef7c265163fa Mon Sep 17 00:00:00 2001 From: jangwoong Date: Mon, 1 Jun 2026 11:16:02 +0900 Subject: [PATCH] =?UTF-8?q?[st=20frontend]=20=EC=84=A4=EC=B9=98=EC=9D=B8?= =?UTF-8?q?=EA=B0=80=20=EA=B2=80=ED=86=A0=EB=8B=A8=EA=B3=84=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20=EC=B6=94=EA=B0=80=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../instl-sncn/model/instl-sncn-interface.ts | 1 + .../as/src/pages/instl-sncn/ui/cnfm-regist-page.tsx | 13 +++++++++---- apps/as/src/pages/instl-sncn/ui/cnfm-view-page.tsx | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts b/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts index fbd58d39a..7593d5f8e 100644 --- a/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts +++ b/apps/as/src/entities/instl-sncn/model/instl-sncn-interface.ts @@ -85,6 +85,7 @@ export interface InstlSncnCklstResultSaveDto { cklstSn: number; cklstArtclSn: number; cklstRvwSn: number; + rvwStpComCd: string; selected: "Y" | "N" | null; } 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 c607911d0..c5140496b 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 @@ -68,6 +68,7 @@ const emptyAmt = (): BzAmtRow => ({ bscPl: "", budgetReflct: "", thtiDsgn: "" }) const num = (v: string) => parseFloat(v.replace(/,/g, "") || "0"); const fmt = (v: number) => (isNaN(v) ? "" : v.toLocaleString()); +const DEFAULT_RVW_STP_COM_CD = "LOCAL"; // LOCAL.지자체,ENV.환경청,KECO.환경공단 (검토단계공통코드:RVWSTP 참조) /* ------------------------------------------------------------------ */ /* 공통 셀 컴포넌트 분리: widgets/cnfm/ui/cells.tsx에서 import */ @@ -95,7 +96,7 @@ import { NumCell, ReadCell, PrivacyConsent, EtcAttachments } from '@/widgets/cnf * - 주요 배열 (위치: 최상위 내부) * - bizSclList: [{ cnstpSeCd, bscPl|bscPlanQty, budgetReflct|bgtRfltQty, thtiDsgn|tstmDesignQty }, ...] * - bizCstList: [{ acntgSeCd, bscPlanAmt|bscPl, bgtRfltAmt|budgetReflct, tstmDesignAmt|thtiDsgn }, ...] - * - cklstResultList: [{ cklstSn, cklstArtclSn, cklstRvwSn, rvwRsltAnmlyYn: 'Y'|'N'|null, ... }, ...] + * - cklstResultList: [{ cklstSn, cklstArtclSn, cklstRvwSn, rvwStpComCd, rvwRsltAnmlyYn: 'Y'|'N'|null, ... }, ...] * - esntlFileList: [{ esntlAtchFileId, esntlAtchFileNm, esntlAtchYn, atflCd, atflId, orgnlFileNm, ... }, ...] * - etcFileList: [{ atflId, orgnlFileNm, atflFlieSz, upldUserNm, atflCd, ... }, ...] * @@ -565,8 +566,10 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { return ordered; }, [cklstTree]); - const cklstKey = (row: CklstTreeNode) => - `${row.cklstSn}_${row.cklstArtclSn}_${row.cklstRvwSn}`; + const cklstKey = (row: CklstTreeNode, rvwStpComCd?: string) => { + const stepCode = rvwStpComCd ?? DEFAULT_RVW_STP_COM_CD; + return `${row.cklstSn}_${row.cklstArtclSn}_${row.cklstRvwSn}_${stepCode}`; + }; useEffect(() => { setCheckResults((prev) => { @@ -610,7 +613,8 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { const lookup = new Map(); for (const r of results) { - const key = `${r.cklstSn}_${r.cklstArtclSn ?? ""}_${r.cklstRvwSn}`; + const stepCode = r.rvwStpComCd ?? DEFAULT_RVW_STP_COM_CD; + const key = `${r.cklstSn}_${r.cklstArtclSn ?? ""}_${r.cklstRvwSn}_${stepCode}`; if (r.rvwRsltAnmlyYn === "Y" || r.rvwRsltAnmlyYn === "N") lookup.set(key, r.rvwRsltAnmlyYn); } @@ -645,6 +649,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { cklstSn: row.cklstSn, cklstArtclSn: row.cklstArtclSn, cklstRvwSn: row.cklstRvwSn, + rvwStpComCd: DEFAULT_RVW_STP_COM_CD, selected: checkResults[cklstKey(row)] ?? null, })); 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 98552b0ab..0e56805f3 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 @@ -298,7 +298,7 @@ function CnfmViewPage({ id }: { id: string }) { ) : ( cklstResultList.map((row: any) => { - const key = `${row.cklstSn}_${row.cklstRvwSn}`; + const key = `${row.cklstSn}_${row.cklstRvwSn}_${row.rvwStpComCd ?? "STEP01"}`; const hasResult = row.rvwRsltAnmlyYn === "Y" || row.rvwRsltAnmlyYn === "N"; const showRadios = row.bchckUseYn === "Y" || hasResult;