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 d9474bc8a..60982f78e 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 @@ -156,7 +156,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { // userInfo?.dtlInstCd 테스트 코드 ENV.ROLE_USER03 , KECO 권한 테스트용 (실제 권한에 맞게 변경 필요) const userInfo = { ...userInfo2, - dtlInstCd: "ROLE_USER03", + dtlInstCd: "ROLE_USER02", //ROLE_USER03, ROLE_USER02, ROLE_USER01 KECO 권한 테스트용 (실제 권한에 맞게 변경 필요) }; const alert = useAlertStore((state) => state.setMessage); const qc = useQueryClient(); @@ -764,8 +764,10 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { if (!selectedReviewStep) { return { total: 0, completed: 0, percent: 0 }; } - const total = cklstRows.length; - const completed = cklstRows.reduce((acc, row) => { + // only include rows that are marked for checkbox use (bchckUseYn === "Y") + const relevantRows = cklstRows.filter((row) => row.bchckUseYn === "Y"); + const total = relevantRows.length; + const completed = relevantRows.reduce((acc, row) => { const val = checkResults[cklstKey(row, selectedReviewStep)] ?? ""; return acc + (val ? 1 : 0); }, 0); @@ -782,8 +784,10 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { }); visibleReviewStepCodes.forEach((code) => persistedStepCodeSet.add(code)); + // only persist rows that are enabled for checkbox (`bchckUseYn === "Y") + const relevantRows = cklstRows.filter((row) => row.bchckUseYn === "Y"); return Array.from(persistedStepCodeSet).flatMap((rvwStpComCd) => - cklstRows.map((row) => ({ + relevantRows.map((row) => ({ cklstSn: row.cklstSn, cklstArtclSn: row.cklstArtclSn, cklstRvwSn: row.cklstRvwSn, @@ -804,9 +808,11 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { visibleReviewStepCodes.forEach((code) => persistedStepCodeSet.add(code)); const result: Record = {}; + // only persist rows that are enabled for checkbox + const relevantRows = cklstRows.filter((row) => row.bchckUseYn === "Y"); Array.from(persistedStepCodeSet).forEach((rvwStpComCd) => { // use code as key (e.g., "LOCAL") and set rvwStpComCd to the same code - result[rvwStpComCd] = cklstRows.map((row) => ({ + result[rvwStpComCd] = relevantRows.map((row) => ({ cklstSn: row.cklstSn, cklstArtclSn: row.cklstArtclSn, cklstRvwSn: row.cklstRvwSn, @@ -987,6 +993,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { } // 현재 입력 단계의 체크리스트 미선택 항목이 있으면 진행 불가 + /* const hasUncheckedChecklist = cklstRows.some( (row) => !checkResults[cklstKey(row, editableReviewStep)], ); @@ -994,6 +1001,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { alert("체크리스트를 모두 체크하세요."); return false; } + */ // 저장 시: 필수 첨부파일(esntlAtchYn=Y) 업로드 여부 검증 if (mode === "SAVE") { const missingRequiredFile = requiredAttachmentDefs.find((item) => { @@ -1012,6 +1020,7 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { ); if (invalidYesRow) { const invalidKey = cklstKey(invalidYesRow, editableReviewStep); + // console.warn("검토 결과가 예(Y)가 아닌 항목 발견:", invalidKey, invalidYesRow); const invalidRowEl = cklstRowRefs.current[invalidKey]; invalidRowEl?.scrollIntoView({ behavior: "smooth", block: "center" }); const yesRadio = invalidRowEl?.querySelector( @@ -1598,7 +1607,8 @@ function CnfmRegistPage({ initialData }: { initialData?: any } = {}) { cklstRows.map((row) => { const key = cklstKey(row, selectedReviewStep); const rvwPaddingLeft = `${Math.max(0, row.treeLevel - 1) * 16 + 8}px`; - + //bchckUseYn 의 값이 "Y"인 항목은 라디오 박스가 보이고 없으면 안보이게 처리 + const showRadios = row.bchckUseYn === "Y"; return ( 1 ? "└ " : ""} {row.rvwCn} - - - - - - - {selectedReviewStep !== "LOCAL" ? ( + {!showRadios ? ( + <> + + + + ) : ( + <> + + + + + + + + )} + + {showRadios && selectedReviewStep !== "LOCAL" ? (