Merge branch 'iipbs/dm/dev'
This commit is contained in:
+1
-1
@@ -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=
|
||||
|
||||
@@ -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=
|
||||
|
||||
@@ -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"> </span>
|
||||
// </h2>
|
||||
// </div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="divider"></div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="divider"></div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="divider"></div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="divider"></div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="divider"></div>
|
||||
|
||||
// <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>
|
||||
|
||||
// <div class="contents-page" style="margin-top:120px;">
|
||||
// <div class="page-title">
|
||||
// <h2>
|
||||
// <span class="title-text">빗물이용시설</span>
|
||||
// <span class="title-bg"> </span>
|
||||
// </h2>
|
||||
// </div>
|
||||
|
||||
// <div class="sections">
|
||||
// <section id="rain-intro" class="section first">
|
||||
// <div class="section-title">
|
||||
// <span class="section-bar"> </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"> </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"> </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"> </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"> </span>
|
||||
// </h2>
|
||||
// </div>
|
||||
|
||||
// <div class="sections">
|
||||
// <section id="greywater-intro" class="section first">
|
||||
// <div class="section-title">
|
||||
// <span class="section-bar"> </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"> </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"> </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"> </span>
|
||||
// </h2>
|
||||
// </div>
|
||||
|
||||
// <div class="sections">
|
||||
// <section id="treatedwater-intro" class="section first">
|
||||
// <div class="section-title">
|
||||
// <span class="section-bar"> </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"> </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 }}
|
||||
// />
|
||||
// );
|
||||
}
|
||||
@@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,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,
|
||||
|
||||
@@ -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 => (
|
||||
|
||||
Reference in New Issue
Block a user