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 82e41bbfe..18e419d6f 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 @@ -32,6 +32,24 @@ const emptyAmt = (): BzAmtRow => ({ bscPl: "", budgetReflct: "", thtiDsgn: "" }) const num = (v: string) => parseFloat(v.replace(/,/g, "") || "0"); const fmt = (v: number) => (isNaN(v) ? "" : v.toLocaleString()); +/* ------------------------------------------------------------------ */ +/* 공통 셀 컴포넌트 (컴포넌트 외부에 선언해야 re-mount 방지) */ +/* ------------------------------------------------------------------ */ +const NumCell = ({ value, onChange }: { value: string; onChange: (v: string) => void }) => ( + + onChange(e.target.value)} + /> + +); + +const ReadCell = ({ value }: { value: string | number }) => ( + {value} +); + /* ------------------------------------------------------------------ */ /* 메인 컴포넌트 */ /* ------------------------------------------------------------------ */ @@ -180,22 +198,6 @@ function CnfmRegistPage() { setter((prev) => ({ ...prev, [col]: val })); } - /* ── 공통 숫자 셀 ── */ - const NumCell = ({ value, onChange }: { value: string; onChange: (v: string) => void }) => ( - - onChange(e.target.value)} - /> - - ); - - const ReadCell = ({ value }: { value: string | number }) => ( - {value} - ); - /* ---------------------------------------------------------------- */ return (
@@ -484,24 +486,20 @@ function CnfmRegistPage() { 총사업비 (단위: 백만원)
- +
- - - - + + + - - - - - - + +
+ 구분 예산반영(A)표준사업비(B)금회설계시(C)예산반영(A)표준사업비(B)금회설계시(C) 증감
(C-B)%(C-B)%