dm_new: build 준비

This commit is contained in:
2026-03-06 16:42:15 +09:00
parent dd849958c0
commit 3e8f55bee5
2 changed files with 132 additions and 131 deletions
@@ -79,12 +79,6 @@ export default function SimilarCaseModal({
}) {
const titleId = useId();
// open 타입 방어
if (typeof open !== "boolean") {
console.error("SimilarCaseModal: open prop is not boolean:", open);
return null;
}
const [mounted, setMounted] = useState(false);
const [criterion, setCriterion] = useState<Criterion>("");
const [selectedCaseId, setSelectedCaseId] = useState<string>("");
@@ -130,6 +124,13 @@ export default function SimilarCaseModal({
const selectedDetail = selectedCaseId ? detailsByCaseId[selectedCaseId] : undefined;
// open 타입 방어
if (typeof open !== "boolean") {
console.error("SimilarCaseModal: open prop is not boolean:", open);
return null;
}
if (!open || !mounted) return null;
const tdBase =
@@ -1,7 +1,7 @@
// apps/dm/app/(landing)/reuse/apply/register/page.tsx (수요정보등록 페이지)
"use client";
import { useMemo, useState, useRef, useEffect } from "react";
import { useMemo, useState, useRef } from "react";
import SubPageHeader from "../../_components/SubPageHeader";
import WaterQualityRefModal from "../modal/WaterQualityRefModal";
import CandidateSiteModal, { type CandidateSite } from "../modal/CandidateSiteModal";
@@ -27,136 +27,136 @@ export default function DemandRegisterPage() {
const [openSimilar, setOpenSimilar] = useState(false);
// 유사사례 rows (목업) - API 연동 시 여기만 교체
const rows: SimilarCaseRow[] = useMemo(
() => [
{
caseId: "C-001",
projectName: "OO시 물 재이용(빗물, 중수도) 시설 설치사업",
period: "2020.01. ~ 2025.05.",
supplyFacilityType: "중수도",
supplyName: "OO새교복지타운",
supplyCapacity: 0,
demandName: "OO새교복지타운",
demandAddress: "OO시 수청로 192",
facilityCapacity: 50,
pipeKm: 0,
purpose: "청소, 화장실, 조경",
supplyAmt: 50,
treatment: "MBLM",
usePurpose: "청소,화장실",
},
{
caseId: "C-001",
projectName: "OO시 물 재이용(빗물, 중수도) 시설 설치사업",
period: "2020.01. ~ 2025.05.",
supplyFacilityType: "중수도",
supplyName: "OO스포츠센터",
supplyCapacity: 0,
demandName: "OO스포츠센터",
demandAddress: "OO시 경기동로 33",
facilityCapacity: 50,
pipeKm: 0,
purpose: "청소, 화장실, 조경",
supplyAmt: 50,
treatment: "MBLM",
usePurpose: "청소,화장실",
},
{
caseId: "C-002",
projectName: "OO 엄성저수지 하수처리수 재이용사업",
period: "2019.12 ~ 2026.01",
supplyFacilityType: "하수",
supplyName: "OO 3,4단계 공공하수처리시설",
supplyCapacity: 70000,
demandName: "OO천",
demandAddress: "-",
facilityCapacity: 0,
pipeKm: 3,
purpose: "하천 등 유지용수",
supplyAmt: 2300,
treatment: "탈황,총인, 생물산화과,소독",
usePurpose: "하천 등 유지용수",
},
{
caseId: "C-002",
projectName: "OO 엄성저수지 하수처리수 재이용사업",
period: "2019.12 ~ 2026.01",
supplyFacilityType: "하수",
supplyName: "OO 3,4단계 공공하수처리시설",
supplyCapacity: 70000,
demandName: "OO저수지",
demandAddress: "-",
facilityCapacity: 0,
pipeKm: 5,
purpose: "하천 등 유지용수",
supplyAmt: 7700,
treatment: "탈황,총인, 생물산화과,소독",
usePurpose: "하천 등 유지용수",
},
],
[]
);
// const rows: SimilarCaseRow[] = useMemo(
// () => [
// {
// caseId: "C-001",
// projectName: "OO시 물 재이용(빗물, 중수도) 시설 설치사업",
// period: "2020.01. ~ 2025.05.",
// supplyFacilityType: "중수도",
// supplyName: "OO새교복지타운",
// supplyCapacity: 0,
// demandName: "OO새교복지타운",
// demandAddress: "OO시 수청로 192",
// facilityCapacity: 50,
// pipeKm: 0,
// purpose: "청소, 화장실, 조경",
// supplyAmt: 50,
// treatment: "MBLM",
// usePurpose: "청소,화장실",
// },
// {
// caseId: "C-001",
// projectName: "OO시 물 재이용(빗물, 중수도) 시설 설치사업",
// period: "2020.01. ~ 2025.05.",
// supplyFacilityType: "중수도",
// supplyName: "OO스포츠센터",
// supplyCapacity: 0,
// demandName: "OO스포츠센터",
// demandAddress: "OO시 경기동로 33",
// facilityCapacity: 50,
// pipeKm: 0,
// purpose: "청소, 화장실, 조경",
// supplyAmt: 50,
// treatment: "MBLM",
// usePurpose: "청소,화장실",
// },
// {
// caseId: "C-002",
// projectName: "OO 엄성저수지 하수처리수 재이용사업",
// period: "2019.12 ~ 2026.01",
// supplyFacilityType: "하수",
// supplyName: "OO 3,4단계 공공하수처리시설",
// supplyCapacity: 70000,
// demandName: "OO천",
// demandAddress: "-",
// facilityCapacity: 0,
// pipeKm: 3,
// purpose: "하천 등 유지용수",
// supplyAmt: 2300,
// treatment: "탈황,총인, 생물산화과,소독",
// usePurpose: "하천 등 유지용수",
// },
// {
// caseId: "C-002",
// projectName: "OO 엄성저수지 하수처리수 재이용사업",
// period: "2019.12 ~ 2026.01",
// supplyFacilityType: "하수",
// supplyName: "OO 3,4단계 공공하수처리시설",
// supplyCapacity: 70000,
// demandName: "OO저수지",
// demandAddress: "-",
// facilityCapacity: 0,
// pipeKm: 5,
// purpose: "하천 등 유지용수",
// supplyAmt: 7700,
// treatment: "탈황,총인, 생물산화과,소독",
// usePurpose: "하천 등 유지용수",
// },
// ],
// []
// );
// 유사사례 상세(목업) - caseId로 매핑
const detailsByCaseId: Record<string, SimilarCaseDetail> = useMemo(
() => ({
"C-001": {
coliform: "불검출",
residualCl: "0.2이상",
turbidity: "1.5이하",
bod: "4.0이하",
odor: "불쾌하지않을것",
color: "10이하",
tn: "-",
tp: "-",
ph: "5.8~8.5",
chloride: "-",
ec: "-",
note: "-",
// const detailsByCaseId: Record<string, SimilarCaseDetail> = useMemo(
// () => ({
// "C-001": {
// coliform: "불검출",
// residualCl: "0.2이상",
// turbidity: "1.5이하",
// bod: "4.0이하",
// odor: "불쾌하지않을것",
// color: "10이하",
// tn: "-",
// tp: "-",
// ph: "5.8~8.5",
// chloride: "-",
// ec: "-",
// note: "-",
costTotal: 4305,
costFacility: 3518,
costPipe: undefined,
costDesign: 350,
costSupervision: 417,
costOther: 12,
// costTotal: 4305,
// costFacility: 3518,
// costPipe: undefined,
// costDesign: 350,
// costSupervision: 417,
// costOther: 12,
fundingTotal: 4305,
fundingNational: 3104,
fundingLocal: 1291,
fundingSelf: undefined,
fundingRate: 70.0,
},
"C-002": {
coliform: "불검출",
residualCl: "0.15이상",
turbidity: "2.0이하",
bod: "5.0이하",
odor: "무",
color: "10이하",
tn: "-",
tp: "-",
ph: "6.0~8.5",
chloride: "-",
ec: "-",
note: "-",
// fundingTotal: 4305,
// fundingNational: 3104,
// fundingLocal: 1291,
// fundingSelf: undefined,
// fundingRate: 70.0,
// },
// "C-002": {
// coliform: "불검출",
// residualCl: "0.15이상",
// turbidity: "2.0이하",
// bod: "5.0이하",
// odor: "무",
// color: "10이하",
// tn: "-",
// tp: "-",
// ph: "6.0~8.5",
// chloride: "-",
// ec: "-",
// note: "-",
costTotal: 9800,
costFacility: 2100,
costPipe: 1800,
costDesign: 300,
costSupervision: 280,
costOther: 1200,
// costTotal: 9800,
// costFacility: 2100,
// costPipe: 1800,
// costDesign: 300,
// costSupervision: 280,
// costOther: 1200,
fundingTotal: 9800,
fundingNational: 4900,
fundingLocal: 3000,
fundingSelf: 1900,
fundingRate: 50,
},
}),
[]
);
// fundingTotal: 9800,
// fundingNational: 4900,
// fundingLocal: 3000,
// fundingSelf: 1900,
// fundingRate: 50,
// },
// }),
// []
// );
// 기본정보
const [reqDate, setReqDate] = useState<string>(today);