diff --git a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
index 68e4e9e7d..2de818db3 100644
--- a/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
+++ b/apps/st/src/components/statistics/review/SewagePipeMaintainRvw.tsx
@@ -1,11 +1,49 @@
import SearchForm from "@/components/module/SearchForm";
+import TabDataGrid from "@/components/module/TabDataGrid";
+import SaveButton from "@/components/button/SaveButton";
+import ApproveButton from "@/components/button/ApproveButton";
+import ReviewOpinionButton from "@/components/button/ReviewOpinionButton";
+import ReturnButton from "@/components/button/ReturnButton";
+
+import { SewagePipeMaintainColumnInfoListRvw } from "@/components/util/column/SewagePipeMaintainColumnRvw";
+
const SewagePipeMaintainRvw = () => {
+
+ const approveFunc = () => {
+ console.log('approveFunc');
+ // 승인 로직
+ };
+
+ const saveFunc = () => {
+ console.log('submit');
+ // 저장 로직
+ };
+
+ const reviewOpinionFunc = () => {
+ console.log('reviewOpinionFunc');
+ // 검토의견 작성
+ };
+
+ const returnFunc = () => {
+ console.log('returnFunc');
+ // 반려
+ };
+
+
return (
- <>
-
+ <>
+
+
+
+
>
);
-}
+};
export default SewagePipeMaintainRvw;
\ No newline at end of file
diff --git a/apps/st/src/components/util/column/SewagePipeMaintainColumnRvw.ts b/apps/st/src/components/util/column/SewagePipeMaintainColumnRvw.ts
new file mode 100644
index 000000000..c933ebead
--- /dev/null
+++ b/apps/st/src/components/util/column/SewagePipeMaintainColumnRvw.ts
@@ -0,0 +1,164 @@
+
+export const SewagePipeMaintainColumnInfoListRvw = [
+ {
+ tabKey: 'a',
+ tabLabel: '개보수',
+ rowStartNum: 4, // XML의 rowspan="4" 반영
+ fixedColumns: 2, // 순번, 시도, 시군구, 행정코드, 구분까지 고정
+ columns: [
+ /* 1. 행정 및 기본 정보 */
+ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
+ { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
+ { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
+
+ /* 2. 전체보수 (단위: m) */
+ { name: 'RPAIR_PIPE_SM', fieldName: 'RPAIR_PIPE_SM', header: { text: '계' } },
+ { name: 'RPAIR_CMBN_PIPE', fieldName: 'RPAIR_CMBN_PIPE', header: { text: '합류식' } },
+ { name: 'RPAIR_RAINWTR_PIPE', fieldName: 'RPAIR_RAINWTR_PIPE', header: { text: '우수' } },
+ { name: 'RPAIR_PLTWTR_PIPE', fieldName: 'RPAIR_PLTWTR_PIPE', header: { text: '오수' } },
+
+ /* 3. 부분보수 (단위: 개소) */
+ { name: 'RPAIR_PIPE_SM2', fieldName: 'RPAIR_PIPE_SM2', header: { text: '계' } },
+ { name: 'RPAIR_CMBN_PIPE2', fieldName: 'RPAIR_CMBN_PIPE2', header: { text: '합류식' } },
+ { name: 'RPAIR_RAINWTR_PIPE2', fieldName: 'RPAIR_RAINWTR_PIPE2', header: { text: '우수' } },
+ { name: 'RPAIR_PLTWTR_PIPE2', fieldName: 'RPAIR_PLTWTR_PIPE2', header: { text: '오수' } },
+
+ /* 4. 부속시설 (개소) */
+ { name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '합류식\n맨홀' } },
+ { name: 'PLTWTR_MNHLE_SITE', fieldName: 'PLTWTR_MNHLE_SITE', header: { text: '오수맨홀' } },
+ { name: 'RAINWTR_MNHLE_SITE', fieldName: 'RAINWTR_MNHLE_SITE', header: { text: '우수맨홀' } },
+ { name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오수받이(개소)' } },
+ { name: 'RAINWTR_RCVR_SITE', fieldName: 'RAINWTR_RCVR_SITE', header: { text: '빗물받이(개소)' } },
+ { name: 'SOILHOLE_SITE', fieldName: 'SOILHOLE_SITE', header: { text: '토실(개소)' } },
+ { name: 'SOILSPLL_SITE', fieldName: 'SOILSPLL_SITE', header: { text: '토구(개소)' } },
+
+ /* 5. 조사량 및 비고 */
+ { name: 'CCTV', fieldName: 'CCTV', header: { text: '수밀검사·\nCCTV조사량\n(m)' } },
+ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'addrGroup',
+ header: { text: '행정구역' },
+ items: ['SIDO', 'GUGUN'],
+ },
+ 'YR_GBN',
+ {
+ name: 'mtcPipeGroup',
+ header: { text: '개·보수관로' },
+ items: [
+ {
+ name: 'totalRepairGroup',
+ header: { text: '전체보수(m)' },
+ items: [
+ 'RPAIR_PIPE_SM',
+ 'RPAIR_CMBN_PIPE',
+ { name: 'sepTotalGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE', 'RPAIR_PLTWTR_PIPE'] }
+ ]
+ },
+ {
+ name: 'partRepairGroup',
+ header: { text: '부분보수(개소)' },
+ items: [
+ 'RPAIR_PIPE_SM2',
+ 'RPAIR_CMBN_PIPE2',
+ { name: 'sepPartGroup', header: { text: '분류식' }, items: ['RPAIR_RAINWTR_PIPE2', 'RPAIR_PLTWTR_PIPE2'] }
+ ]
+ }
+ ]
+ },
+ 'MNHLE_SITE',
+ {
+ name: 'sepMnhleGroup',
+ header: { text: '분류식' },
+ items: ['PLTWTR_MNHLE_SITE', 'RAINWTR_MNHLE_SITE']
+ },
+ 'PLTWTR_RCVR_SITE',
+ 'RAINWTR_RCVR_SITE',
+ 'SOILHOLE_SITE',
+ 'SOILSPLL_SITE',
+ 'CCTV',
+ 'RMK'
+ ]
+ },
+ {
+ tabKey: 'b',
+ tabLabel: '관로준설',
+ rowStartNum: 4, // XML의 rowspan="4" 및 4단 헤더 반영
+ fixedColumns: 3, // 순번, 시도, 시군구, 구분까지 고정
+ columns: [
+ /* 1. 행정 및 기본 정보 (Band: Left) */
+ { name: 'SIDO', fieldName: 'SIDO', header: { text: '시도' } },
+ { name: 'GUGUN', fieldName: 'GUGUN', header: { text: '시군구' } },
+ { name: 'YR_GBN', fieldName: 'YR_GBN', header: { text: '구분' } },
+
+ /* 2. 시설 기본 정보 */
+ { name: 'PIPL_FCLTY_EXTN', fieldName: 'PIPL_FCLTY_EXTN', header: { text: '하수관로\n총시설연장\n(m)' } },
+
+ /* 3. 준설연장 및 개소수 */
+ { name: 'DRDG_PIPE_SM', fieldName: 'DRDG_PIPE_SM', header: { text: '합계' } },
+ { name: 'DRDG_CMBN_PIPE', fieldName: 'DRDG_CMBN_PIPE', header: { text: '합류식' } },
+ { name: 'DRDG_RAINWTR_PIPE', fieldName: 'DRDG_RAINWTR_PIPE', header: { text: '우수' } },
+ { name: 'DRDG_PLTWTR_PIPE', fieldName: 'DRDG_PLTWTR_PIPE', header: { text: '오수' } },
+ { name: 'MNHLE_SITE', fieldName: 'MNHLE_SITE', header: { text: '맨홀\n(개소)' } },
+ { name: 'PLTWTR_RCVR_SITE', fieldName: 'PLTWTR_RCVR_SITE', header: { text: '오·우수받이\n(개소)' } },
+ { name: 'SOILSPLL_SOILHOLE_SITE', fieldName: 'SOILSPLL_SOILHOLE_SITE', header: { text: '토실·토구\n(개소)' } },
+
+ /* 4. 준설 계획 및 율 */
+ { name: 'DRDG_TRGET_EXTN', fieldName: 'DRDG_TRGET_EXTN', header: { text: '준설 계획\n연장(m)' } },
+ { name: 'DRDG_TRGET_RT', fieldName: 'DRDG_TRGET_RT', header: { text: '계획대비\n준설율\n(%)' } },
+ { name: 'PIPL_FCLTY_RT', fieldName: 'PIPL_FCLTY_RT', header: { text: '준설계획\n연장대비\n준설율(%)' } },
+
+ /* 5. 준설실적 */
+ { name: 'DRDG_ACMSLT_AMOUNT', fieldName: 'DRDG_ACMSLT_AMOUNT', header: { text: '금액\n(백만원)' } },
+ { name: 'DRDG_ACMSLT_QY', fieldName: 'DRDG_ACMSLT_QY', header: { text: '준설량\n(㎥)' } },
+
+ /* 6. 준설토사처리 */
+ { name: 'DRDG_ACMSLT_UNTPC', fieldName: 'DRDG_ACMSLT_UNTPC', header: { text: '준설토\n처리비\n(백만원)' } },
+ { name: 'DRDG_ETND_SM', fieldName: 'DRDG_ETND_SM', header: { text: '처리량 계\n(톤)' } },
+ { name: 'RCLM', fieldName: 'RCLM', header: { text: '매립' } },
+ { name: 'OCEAN_DPSL', fieldName: 'OCEAN_DPSL', header: { text: '해양투기' } },
+ { name: 'RUSE', fieldName: 'RUSE', header: { text: '재활용' } },
+ { name: 'ETC', fieldName: 'ETC', header: { text: '기타\n(소각, 고형화,\n시멘트원료 등)' } },
+
+ /* 7. 기타 및 의견 */
+ { name: 'RMK', fieldName: 'RMK', header: { text: '비고' } },
+ ],
+ columnLayout: [
+ {
+ name: 'addrGroup',
+ header: { text: '행정구역' },
+ items: ['SIDO', 'GUGUN'],
+ },
+ 'YR_GBN',
+ 'PIPL_FCLTY_EXTN',
+ {
+ name: 'drdgGroup',
+ header: { text: '준설연장 및 개소수' },
+ items: [
+ {
+ name: 'pipeLenGroup',
+ header: { text: '관로(m)' },
+ items: [
+ 'DRDG_PIPE_SM', 'DRDG_CMBN_PIPE',
+ { name: 'sepRepairGroup', header: { text: '분류식' }, items: ['DRDG_RAINWTR_PIPE', 'DRDG_PLTWTR_PIPE'] }
+ ]
+ },
+ 'MNHLE_SITE', 'PLTWTR_RCVR_SITE', 'SOILSPLL_SOILHOLE_SITE'
+ ]
+ },
+ 'DRDG_TRGET_EXTN', 'DRDG_TRGET_RT', 'PIPL_FCLTY_RT',
+ {
+ name: 'acmsltGroup',
+ header: { text: '준설실적' },
+ items: ['DRDG_ACMSLT_AMOUNT', 'DRDG_ACMSLT_QY']
+ },
+ {
+ name: 'processGroup',
+ header: { text: '준설토사처리' },
+ items: ['DRDG_ACMSLT_UNTPC', 'DRDG_ETND_SM', 'RCLM', 'OCEAN_DPSL', 'RUSE', 'ETC']
+ },
+ 'RMK'
+ ]
+}
+];