Merge branch 'iipbs/dm/dev'

This commit is contained in:
2026-05-20 14:12:09 +09:00
24 changed files with 464 additions and 172 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ NEXT_PUBLIC_NGII_URL = https://map.ngii.go.kr
NEXT_PUBLIC_NGII_PARAM = 04trYP9_xwLAfALjwZ-B8g&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={x}&tilerow={y}
NEXT_PUBLIC_GATEWAY_URL=http://con.mind-one.co.kr:11083 # 개발 서버 API
# NEXT_PUBLIC_GATEWAY_URL=http://localhost:8883 # 개발 서버 API
CONTENTS_INTRO = 31
NEXT_PUBLIC_FINDADRESS_URL=https://business.juso.go.kr/addrlink/addrLinkApi.do
NEXT_PRIVATE_WR_ADDRESS_KEY = devU01TX0FVVEgyMDI1MDgyNTEwMzkwNDExNjEwNTM=
+1 -1
View File
@@ -20,7 +20,7 @@ NEXT_PUBLIC_SEWERAGE_API_URL=http://con.mind-one.co.kr:11083/sewerage-service
NEXT_PUBLIC_GATEWAY_URL=http://con.mind-one.co.kr:11083 # 개발 서버 API
# NEXT_PUBLIC_SEWERAGE_API_URL=http://192.168.1.128:8883/sewerage-service/api # 최용성
#NEXT_PUBLIC_SEWERAGE_API_URL=http://192.168.1.66:8883/sewerage-service/api # 박이정
CONTENTS_INTRO = 31
NEXT_PUBLIC_FINDADRESS_URL=https://business.juso.go.kr/addrlink/addrLinkApi.do
NEXT_PRIVATE_WR_ADDRESS_KEY = devU01TX0FVVEgyMDI1MDgyNTEwMzkwNDExNjEwNTM=
+1 -1
View File
@@ -18,7 +18,7 @@ NEXT_PUBLIC_SEWERAGE_API_URL = http://apigateway.iipbs-was.svc.cluster.local:800
NEXT_PUBLIC_NGII_URL = http://172.29.143.87/poiact
NEXT_PUBLIC_NGII_PARAM = BDE2BEF39DAFEC293AB6730150F222AC&service=WMTS&request=GetTile&version=1.0.0&format=image/png&layer=korean_map&style=korean&tilematrixset=korean&tilematrix={z}&tilecol={y}&tilerow={x}
NEXT_PUBLIC_GATEWAY_URL = http://apigateway.iipbs-was.svc.cluster.local:8000
CONTENTS_INTRO = 31
NEXT_PUBLIC_FINDADRESS_URL=https://business.juso.go.kr/addrlink/addrLinkApi.do
NEXT_PRIVATE_WR_ADDRESS_KEY = U01TXOFVVEgyMDI1MDgyODE0MTAxNzExNjEyMjA=
@@ -1,123 +1,93 @@
"use client";
import React from "react";
import Image, { type StaticImageData } from "next/image";
import lawPlan from "@/public/images/landing/intro/law_timeline.png";
import planPerformance from "@/public/images/landing/intro/performance_left.png";
import domesticChange from "@/public/images/landing/intro/domestic_textbox.png";
import policyHistory from "@/public/images/landing/intro/policy_timeline.png";
import lawRelation from "@/public/images/landing/intro/rel_note.png";
import domesticLinkage from "@/public/images/landing/intro/linkage.png";
function SectionTitle({ children }: { children: React.ReactNode }) {
return (
<div className="flex items-center gap-3">
<span className="h-5 w-[3px] bg-sky-500" />
<h3 className="text-[24px] font-bold text-neutral-900">{children}</h3>
</div>
);
}
function Hr({ className = "" }: { className?: string }) {
return <div className={`h-[2px] w-full bg-black/10 ${className}`} />;
}
function ImgCard({ src, alt }: { src: StaticImageData; alt: string }) {
return (
<div className="w-full overflow-x-auto">
<Image
src={src}
alt={alt}
className="mx-auto block max-w-none"
style={{ width: "auto", height: "auto" }}
/>
</div>
);
}
function SectionShell({
id,
title,
children,
className = "",
}: {
id: string;
title: string;
children: React.ReactNode;
className?: string;
}) {
return (
<section id={id} className={`scroll-mt-[120px] ${className}`}>
<SectionTitle>{title}</SectionTitle>
<div className="mt-8">{children}</div>
</section>
);
}
export default function LawIntroSection() {
const title = "물재이용법";
return (
<div className="bg-white">
<div className="inline-block">
<h2 className="relative inline-block px-2 text-[28px] font-extrabold leading-none tracking-tight text-slate-900">
<span className="relative z-10">{title}</span>
<span className="absolute bottom-[-4px] left-0 z-0 h-3 w-full bg-gradient-to-r from-sky-300 to-green-300" />
const contentsHtml = `
<div class="contents-page">
<div class="page-title">
<h2>
<span class="title-text">물재이용법</span>
<span class="title-bg"></span>
</h2>
</div>
<div className="mt-10">
<SectionShell
id="law-plan"
title="법률 제·개정 및 기본계획 수립"
className="mt-10"
>
<ImgCard src={lawPlan} alt="법률 제·개정 및 기본계획 수립" />
</SectionShell>
<div class="sections">
<section id="law-plan" class="section first">
<div class="section-title">
<span class="section-bar"></span>
<h3>법률 제·개정 및 기본계획 수립</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/law_timeline.png" alt="법률 제·개정 및 기본계획 수립" />
</div>
</section>
<Hr className="my-11" />
<div class="divider"></div>
<SectionShell
id="plan-performance"
title="제2차 계획 대비 실적 현황"
>
<ImgCard src={planPerformance} alt="제2차 계획 대비 실적 현황" />
</SectionShell>
<section id="plan-performance" class="section">
<div class="section-title">
<span class="section-bar"></span>
<h3>제2차 계획 대비 실적 현황</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/performance_left.png" alt="제2차 계획 대비 실적 현황" />
</div>
</section>
<Hr className="my-11" />
<div class="divider"></div>
<SectionShell id="domestic-change" title="우리나라의 수자원 현황 및 물이용 여건">
<ImgCard src={domesticChange} alt="우리나라의 수자원 현황 및 물이용 여건" />
</SectionShell>
<section id="domestic-change" class="section">
<div class="section-title">
<span class="section-bar"></span>
<h3>우리나라의 수자원 현황 및 물이용 여건</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/domestic_textbox.png" alt="우리나라의 수자원 현황 및 물이용 여건" />
</div>
</section>
<Hr className="my-11" />
<div class="divider"></div>
<SectionShell
id="policy-history"
title="물 재이용 정책 변화 추이"
>
<ImgCard src={policyHistory} alt="물 재이용 정책 변화 추이" />
</SectionShell>
<section id="policy-history" class="section">
<div class="section-title">
<span class="section-bar"></span>
<h3>물 재이용 정책 변화 추이</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/policy_timeline.png" alt="물 재이용 정책 변화 추이" />
</div>
</section>
<Hr className="my-11" />
<div class="divider"></div>
<SectionShell
id="law-relation"
title="타법령과의 관계 검토"
>
<ImgCard src={lawRelation} alt="타법령과의 관계 검토" />
</SectionShell>
<section id="law-relation" class="section">
<div class="section-title">
<span class="section-bar"></span>
<h3>타법령과의 관계 검토</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/rel_note.png" alt="타법령과의 관계 검토" />
</div>
</section>
<Hr className="my-11" />
<div class="divider"></div>
<SectionShell
id="domestic-linkage"
title="주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요"
>
<ImgCard src={domesticLinkage} alt="주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요" />
</SectionShell>
<section id="domestic-linkage" class="section">
<div class="section-title">
<span class="section-bar"></span>
<h3>주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요</h3>
</div>
<div class="image-wrap">
<img src="/images/landing/intro/linkage.png" alt="주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요" />
</div>
</section>
</div>
</div>
`;
return (
<div
className="bg-white"
dangerouslySetInnerHTML={{ __html: contentsHtml }}
/>
);
}
}
@@ -0,0 +1,232 @@
import { ContentsPage } from "@/components/ui/contents";
export default function IntroSection() {
// const contentsHtml = `
// <div class="contents-page">
// <div class="page-title">
// <h2>
// <span class="title-text">물재이용법</span>
// <span class="title-bg">&nbsp;</span>
// </h2>
// </div>
// <div class="sections">
// <section id="law-plan" class="section first">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>법률 제·개정 및 기본계획 수립</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/law_timeline.png" alt="법률 제·개정 및 기본계획 수립" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="plan-performance" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>제2차 계획 대비 실적 현황</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/performance_left.png" alt="제2차 계획 대비 실적 현황" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="domestic-change" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>우리나라의 수자원 현황 및 물이용 여건</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/domestic_textbox.png" alt="우리나라의 수자원 현황 및 물이용 여건" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="policy-history" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>물 재이용 정책 변화 추이</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/policy_timeline.png" alt="물 재이용 정책 변화 추이" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="law-relation" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>타법령과의 관계 검토</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/rel_note.png" alt="타법령과의 관계 검토" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="domestic-linkage" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/linkage.png" alt="주요 국가계획의 정책방향과 연계한 물 재이용 정책 필요" />
// </div>
// </section>
// </div>
// </div>
// <div class="contents-page" style="margin-top:120px;">
// <div class="page-title">
// <h2>
// <span class="title-text">빗물이용시설</span>
// <span class="title-bg">&nbsp;</span>
// </h2>
// </div>
// <div class="sections">
// <section id="rain-intro" class="section first">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>빗물 재이용 소개</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/rainreuse_intro.png" alt="빗물 재이용 소개" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="rain-mandatory" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>빗물이용시설 설치 관리 법적 의무 대상</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/rainreuse_mandatory.png" alt="빗물이용시설 설치 관리 법적 의무 대상" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="rain-design" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>빗물이용시설 설계 방안</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/rainwater_design.png" alt="빗물이용시설 설계 방안" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="rain-standards" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>빗물이용시설 시설기준 및 관리기준</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/rainwater_standards.png" alt="빗물이용시설 시설기준 및 관리기준" />
// </div>
// </section>
// </div>
// </div>
// <div class="contents-page" style="margin-top:120px;">
// <div class="page-title">
// <h2>
// <span class="title-text">중수도</span>
// <span class="title-bg">&nbsp;</span>
// </h2>
// </div>
// <div class="sections">
// <section id="greywater-intro" class="section first">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>중수 재이용 소개</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/greywater_intro.png" alt="중수 재이용 소개" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="greywater-mandatory" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>중수도 설치 의무 대상</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/greywater_mandatory.png" alt="중수도 설치 의무 대상" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="greywater-standard" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>중수도 시설기준 및 관리기준</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/greywater_standard.png" alt="중수도 시설기준 및 관리기준" />
// </div>
// </section>
// </div>
// </div>
// <div class="contents-page" style="margin-top:120px;">
// <div class="page-title">
// <h2>
// <span class="title-text">하수처리수 재이용</span>
// <span class="title-bg">&nbsp;</span>
// </h2>
// </div>
// <div class="sections">
// <section id="treatedwater-intro" class="section first">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>하수처리수 소개</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/treatedwater_intro.png" alt="하수처리수" />
// </div>
// </section>
// <div class="divider"></div>
// <section id="treatedwater-mandatory" class="section">
// <div class="section-title">
// <span class="section-bar">&nbsp;</span>
// <h3>하수처리수 재이용시설 의무 대상</h3>
// </div>
// <div class="image-wrap">
// <img src="/images/landing/intro/treatedwater_mandatory.png" alt="하수처리수 재이용시설 의무 대상" />
// </div>
// </section>
// </div>
// </div>
// `;
const contsSn = Number(process.env.CONTENTS_INTRO ?? 31);
const menuCd = "24";
return <ContentsPage contsSn={contsSn} menuCd={menuCd} />;
// return (
// <div
// className="bg-white"
// dangerouslySetInnerHTML={{ __html: contentsHtml }}
// />
// );
}
+5 -9
View File
@@ -1,10 +1,9 @@
export const dynamic = "force-dynamic";
// DM 물 재이용 소개 페이지
import BusinessSubNav, { type BusinessSubNavMenu } from "@/components/BusinessSubNav";
import SubPageHeader from "@/components/SubPageHeader";
import LawIntroSection from "./_components/LawIntroSection";
import RainIntroSection from "./_components/RainIntroSection";
import ReuseWaterIntroSection from "./_components/ReuseWaterIntroSection";
import TreatedIntroSection from "./_components/TreatedIntroSection";
import IntroSection from "./introSection";
const menus: BusinessSubNavMenu[] = [
{
@@ -76,11 +75,8 @@ export default function IntroPage() {
{/* 본문 */}
<div className="max-w-[1320px] pb-24">
<LawIntroSection />
<RainIntroSection />
<ReuseWaterIntroSection />
<TreatedIntroSection />
<IntroSection />
</div>
</div>
);
}
}
+87
View File
@@ -0,0 +1,87 @@
.contents-page {
color: #0f172a;
font-size: 16px;
line-height: 1.5;
}
.contents-page .page-title {
display: inline-block;
}
.contents-page .page-title h2 {
position: relative;
display: inline-block;
padding: 0 0.5rem;
font-size: 28px;
font-weight: 800;
line-height: 1;
letter-spacing: -0.025em;
color: #0f172a;
}
.contents-page .page-title .title-text {
position: relative;
z-index: 1;
}
.contents-page .page-title .title-bg {
position: absolute;
left: 0;
bottom: -4px;
z-index: 0;
height: 12px;
width: 100%;
background: linear-gradient(to right, #7dd3fc, #86efac);
}
.contents-page .sections {
margin-top: 2.5rem;
}
.contents-page .section {
scroll-margin-top: 120px;
}
.contents-page .section.first {
margin-top: 2.5rem;
}
.contents-page .section-title {
display: flex;
align-items: center;
gap: 0.75rem;
}
.contents-page .section-bar {
height: 20px;
width: 3px;
flex-shrink: 0;
background: #0ea5e9;
}
.contents-page .section-title h3 {
font-size: 24px;
font-weight: 700;
line-height: 1.2;
color: #171717;
}
.contents-page .image-wrap {
margin-top: 2rem;
width: 100%;
overflow-x: auto;
}
.contents-page .image-wrap img {
display: block;
margin: 0 auto;
max-width: none;
height: auto;
}
.contents-page .divider {
height: 2px;
width: 100%;
margin: 2.75rem 0;
background: rgba(0, 0, 0, 0.1);
}
+1
View File
@@ -1,5 +1,6 @@
/* @import "../../../packages/common/components/src/base.css"; */
/* @import "../../../packages/common/components/src/base.css"; */
@import "./contents-page.css";
@tailwind base;
@tailwind components;
@@ -1,6 +1,5 @@
"use client";
import { useEffect, useRef } from "react";
import type { ContentsDetail } from "@/src/entities/content/model/contents-interface";
type ContentsPageClientProps = {
@@ -8,28 +7,14 @@ type ContentsPageClientProps = {
};
function ContentsPageClient({ initialContent }: ContentsPageClientProps) {
const shadowRootRef = useRef<HTMLDivElement>(null);
useEffect(() => {
if (!shadowRootRef.current || !initialContent?.contsCn) return;
const shadowRoot =
shadowRootRef.current.shadowRoot ??
shadowRootRef.current.attachShadow({ mode: "open" });
shadowRoot.innerHTML = "";
const styleElement = document.createElement("style");
styleElement.textContent = `div { font-size: 16px; line-height: 1.5; }`;
shadowRoot.appendChild(styleElement);
const contentElement = document.createElement("div");
contentElement.innerHTML = initialContent.contsCn;
shadowRoot.appendChild(contentElement);
}, [initialContent]);
return (
<div className="card card-border !mt-6 !p-6">
<div ref={shadowRootRef} />
<div className="card card-border !mt-6">
<div
className="contents-page text-[16px] leading-[1.5]"
dangerouslySetInnerHTML={{
__html: initialContent?.contsCn ?? "",
}}
/>
</div>
);
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 139 KiB

@@ -6,6 +6,7 @@ import type { customHtdflBdst } from "@/app/store/ruseFcltMng/fcltReg/htdflReg";
import { formatArchArea, tableData } from "@/components/lib/func/common";
import HtdflRegForm from "@/components/ui/form/fcltReg/htdflReg/htdflRegForm";
import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import {
ContentsDiv,
ScrollArea,
@@ -136,12 +137,13 @@ export default function Home() {
</div>
<div className="grid grid-cols-6 gap-4 ">
<div className="col-span-4 h-full min-h-0">
<ListDiv className="min-h-0">
<div className="col-span-4">
<ListDiv>
<ScrollArea className="h-[75vh]">
<UiTable
tableData={bdstTable || []}
headlist={htdfl.upHeadList}
pageSize={20}
pageSize={DEFAULT_LIST_SIZE}
total={htdflResCount}
headName={"시설물 목록"}
cellClick={(val) => {
@@ -153,11 +155,12 @@ export default function Home() {
index={htdfTableIndex}
resetPageNo={resetPageNo}
></UiTable>
</ScrollArea>
</ListDiv>
</div>
<div className="col-span-2 max-h-full">
<ListDiv>
<ScrollArea className="h-[65vh]">
<ScrollArea className="h-[75vh]">
<HtdflRegForm
htdflForm={htdflForm ?? ({} as customHtdflBdst)}
isModal={false}
@@ -15,6 +15,7 @@
* */
"use client";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import {
ContentsDiv,
ScrollArea,
@@ -347,13 +348,13 @@ export default function PublicReuseFaciltyInsert() {
</div>
<div className="grid grid-cols-8 gap-4">
<div className="col-span-5 h-full min-h-0">
<ListDiv className="min-h-0">
{/* <ScrollArea className="h-[60vh]"> */} {/* 높이 조정 */}
<div className="col-span-5">
<ListDiv>
<ScrollArea className="h-[75vh]">
<UiTable
tableData={bdstTable || []}
headlist={pubFacHeadList}
pageSize={10}
pageSize={DEFAULT_LIST_SIZE}
total={pbnstHasuResCount || 20}
headName={"공공 하수처리시설 목록"}
cellClick={cellClick}
@@ -368,7 +369,7 @@ export default function PublicReuseFaciltyInsert() {
index={selectedRowIndex}
curPage={pageNation}
/>
{/* </ScrollArea> */}
</ScrollArea>
</ListDiv>
</div>
<ListDiv className="col-span-3 pr-6">
@@ -152,9 +152,9 @@ export default function Home() {
</div>
</div>
<div className="grid grid-cols-6 gap-4">
<div className="col-span-4 h-full min-h-0">
<ListDiv className="min-h-0">
{/* <ScrollArea className="h-[60vh]"> */}
<div className="col-span-4">
<ListDiv>
<ScrollArea className="h-[75vh]">
<UiTable
tableData={bdstTable || []}
headlist={rain.upHeadList}
@@ -168,7 +168,7 @@ export default function Home() {
index={rainTableIndex}
resetPageNo={resetPageNo}
></UiTable>
{/* </ScrollArea> */}
</ScrollArea>
</ListDiv>
</div>
<div className="col-span-2 ">
@@ -158,8 +158,9 @@ export default function Home() {
</div>
<div className="grid grid-cols-6 gap-4">
<div className="col-span-4 h-full min-h-0">
<ListDiv className="min-h-0">
<div className="col-span-4">
<ListDiv>
<ScrollArea className="h-[75vh]">
<UiTable
tableData={bdstTable || []}
headlist={rswt.upHeadList}
@@ -171,6 +172,7 @@ export default function Home() {
index={rswtTableIndex}
resetPageNo={resetPageNo}
></UiTable>
</ScrollArea>
</ListDiv>
</div>
<div className="col-span-2 max-h-full">
@@ -73,8 +73,18 @@ export default function PbnstSttn() {
!isAllAreaUser && laeSeCd?.length === 5 ? laeSeCd : "0";
const getFixedSearchValue = useCallback(
(baseValue: ReturnType): ReturnType => {
const cleanedValue = { ...baseValue };
// 유역(R) 탭 선택 시, 이전 행정구역 탭에서 선택된 시군구 값이 남아있어
// 검색 결과가 시군구로 필터링되는 현상을 방지하기 위해 sigunValue를 '0'으로 초기화합니다.
if (cleanedValue.partValue === "R"|| cleanedValue.partValue === "G") {
cleanedValue.sigunValue = "0";
cleanedValue.sigunText = "";
}
if (isAllAreaUser) {
return baseValue;
// console.log("isAllAreaUser is true");
return cleanedValue;
}
const fixedSidoText =
@@ -85,7 +95,7 @@ export default function PbnstSttn() {
: "";
return {
...baseValue,
...cleanedValue,
partValue: "A",
sidoValue: fixedSidoValue,
sigunValue: fixedSigunValue,
@@ -259,7 +269,7 @@ export default function PbnstSttn() {
ref={ref}
isAdmin={!isAllAreaUser}
initSidoValue={fixedSidoValue}
initSigunValue={fixedSigunValue !== "0" ? fixedSigunValue : ""}
initSigunValue={fixedSigunValue !== "0" ? fixedSigunValue : "0"}
/>
</div>
</div>
@@ -338,4 +348,3 @@ export default function PbnstSttn() {
</>
);
}
@@ -1,5 +1,6 @@
import { getFetchWithCount, postFectch, putFectch, deleteFectch } from "@/components/lib/api";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import type { TableUpperProps } from "@/app/store/common/type/header";
import { z } from "zod";
import { makeMdfr, makeRstr } from "../bdstReg";
@@ -121,7 +122,7 @@ export const htdflFacStateExport: htdflFacState = {
const initFetch = async (code: string) => {
let url = `/drain/facilityList/1/11`
let url = `/drain/facilityList/1/${DEFAULT_LIST_SIZE}`
url+=`/${code}`
@@ -137,7 +138,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
try {
const htdflRes = await getFetchWithCount(
"wr",
`/drain/facilityList/${pageNation}/11/${code}`
`/drain/facilityList/${pageNation}/${DEFAULT_LIST_SIZE}/${code}`
);
return set((state: htdflFacState) => ({
...state,
@@ -181,7 +182,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
}
const htdflRes = await getFetchWithCount(
"wr",
`/drain/facilityList/1/11/${code}`
`/drain/facilityList/1/${DEFAULT_LIST_SIZE}/${code}`
);
set((state: htdflFacState) => ({
...state,
@@ -251,7 +252,7 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
},
htdflNmSearch :async(code:string | number, fcltNm:string) =>{
try {
const htdflRes = await getFetchWithCount("wr", `/drain/facilityList/1/11/${code}/${fcltNm}`);
const htdflRes = await getFetchWithCount("wr", `/drain/facilityList/1/${DEFAULT_LIST_SIZE}/${code}/${fcltNm}`);
set((state: htdflFacState) => {
return {
...state,
@@ -6,7 +6,7 @@ import {
postFectch,
putFectch,
} from "@/components/lib/api";
import { SITE_ID } from "@/src/shared/config";
import { DEFAULT_LIST_SIZE, SITE_ID } from "@/src/shared/config";
import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList";
import {
type customPbnst,
@@ -113,7 +113,7 @@ const hasuListFetch = async (
) => {
const checkWrRegListRes = await checkWrRegList(); // 재사용시설에 대한 정보 조회
let url = `/prcsFclt/ruseInfo/${page ? page : 1}/11/A/${sggOrCity ? sggOrCity : "11"}/0/1/SW`;
let url = `/prcsFclt/ruseInfo/${page ? page : 1}/${DEFAULT_LIST_SIZE}/A/${sggOrCity ? sggOrCity : "11"}/0/1/SW`;
const data = checkWrRegListRes.filter((item: string) => item !== "");
if (searchTxt) {
@@ -6,6 +6,7 @@ import {
postFectch,
putFectch,
} from "@/components/lib/api";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import { z } from "zod";
import { makeMdfr, makeRstr } from "../bdstReg";
import {
@@ -14,7 +15,7 @@ import {
validationMessages,
} from "./type";
export const TEST_UUID = "2d4b151d-1828-41e0-91d9-4cd28ea1cc7e";
export const rainRegSize = 15;
export const rainRegSize = DEFAULT_LIST_SIZE;
/**
* 밧물이용시설 등록 (스토어)
@@ -1,6 +1,7 @@
import { deleteFectch, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api";
import { upHeadList, type chgBuilding } from "../rainReg";
import { DEFAULT_LIST_SIZE } from "@/src/shared/config";
import type { TableUpperProps } from "@/app/store/common/type/header";
import { z } from "zod";
import { makeMdfr, makeRstr } from "../bdstReg";
@@ -14,7 +15,7 @@ import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "
* 재이용시설 등록 - 중수도시설 등록
* 중수도시설에서 사용하는 api 및 타입 등을 관리한다.
* */
export const rswtRegSize =15;
export const rswtRegSize = DEFAULT_LIST_SIZE;
const rswtrObjSchema = z.object({
bdstRuseFcltSn: z.number().nullish(),
orgwtKndCd: z.string({ required_error: validationMessages.requiredSelect("원수 종류") }).min(1, { message: validationMessages.requiredSelect("원수 종류") }),
@@ -298,6 +298,7 @@ export const pbnstSttnActionsExport: (set: any) => pbnstSttnActions = (
fclts: string[]
) => {
try {
console.log(reurnValue);
const pbnstSttnRes = await hasuListFetch(
page,
total,
+2
View File
@@ -1,2 +1,4 @@
export * from "./api";
export * from "./env";
export const DEFAULT_LIST_SIZE = 10;
@@ -10,9 +10,9 @@ type SearchBaseType = {
rightChildren:React.ReactNode;
selectSidoData?: SelectDataType[] | [];
selectSigunData?: SelectDataType[] | [];
selectRegionData?: SelectDataType[] | [];
selectUnitWaterShedData?: SelectDataType[] | [];
selectMiddleRegionData?: SelectDataType[] | [];
selectRegionData?: SelectDataType[] | []; // 유역 코드
selectUnitWaterShedData?: SelectDataType[] | []; // 단위유역 코드
selectMiddleRegionData?: SelectDataType[] | []; // 중권역 코드
selectEnvPartData?: EnvPartSelectDataType[] | [];
queryClick:(returnType:ReturnType) => void;
excelName?:string;
@@ -220,12 +220,12 @@ function SearchFormLeft({ isShowPart = false, children, selectSidoData = [], sel
initializeCityDataByEnvPartSido('0');
} else {
initializeSigunData('0');
onSelectValue(selectSigunData[0]?.val || '0', 'sigun');
//onSelectValue(selectSigunData[0]?.val || '0', 'sigun');
}
// 다른 selectbox 전체로 초기화
onSelectValue(selectSidoData[0]?.val || '0', 'sido');
onSelectValue(selectSigunData[0]?.val || '0', 'sigun');
//onSelectValue(selectSidoData[0]?.val || '0', 'sido');
//onSelectValue(selectSigunData[0]?.val || '0', 'sigun');
break;
case 'sido':
setSidoValue(val);
@@ -152,7 +152,7 @@ export function UiTable<T extends object = Record<string, unknown>>({
<></>
)}
<div className={`card !p-0r !m-[1.2rem] ${className}`}>
<Table variant="secondary" className={widthFixed ? "table-fixed" : "w-max min-w-max"}>
<Table variant="secondary" className={widthFixed ? "table-fixed" : ""}>
{widthFixed ?
<colgroup>
{leafCols.map(col => (