건축물 데이터 검증 소스 수정
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg";
|
||||
import { formatCommaNumber, tableData } from "@/components/lib/func/commom";
|
||||
import { rainRegSize, type customRainBdst } from "@/app/store/ruseFcltMng/fcltReg/rainReg";
|
||||
import { formatArchArea, tableData } from "@/components/lib/func/commom";
|
||||
import RainRegForm from "@/components/ui/form/fcltReg/rainReg/rainRegForm";
|
||||
import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal";
|
||||
import {
|
||||
@@ -49,14 +49,11 @@ export default function Home() {
|
||||
if (rainRes && rainRes.length > 0) {
|
||||
const rainData = tableData(rainRes, { code }).map(
|
||||
(item: customRainBdst) => {
|
||||
const archArea =
|
||||
item?.archArea.split(".")[0] !== "-1"
|
||||
? item?.archArea.split(".")[0]
|
||||
: "확인불가";
|
||||
return {
|
||||
...item,
|
||||
archArea: formatCommaNumber(archArea),
|
||||
archArea: formatArchArea(item?.archArea,1),
|
||||
bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N",
|
||||
frstArchPrmsnDt:item?.frstArchPrmsnDt||'확인불가'
|
||||
};
|
||||
}
|
||||
);
|
||||
@@ -129,7 +126,7 @@ export default function Home() {
|
||||
<UiTable
|
||||
tableData={bdstTable || []}
|
||||
headlist={rain.upHeadList}
|
||||
pageSize={20}
|
||||
pageSize={rainRegSize}
|
||||
total={rainResCount}
|
||||
headName={"건축물 목록"}
|
||||
cellClick={(val) => {
|
||||
@@ -140,9 +137,9 @@ export default function Home() {
|
||||
{/* </ScrollArea> */}
|
||||
</ListDiv>
|
||||
</div>
|
||||
<div className="col-span-2 max-h-full">
|
||||
<ListDiv className="">
|
||||
<ScrollArea className="h-[65vh]">
|
||||
<div className="col-span-2 ">
|
||||
<ListDiv >
|
||||
<ScrollArea className="h-[75vh]">
|
||||
<RainRegForm
|
||||
rainForm={rainForm ?? ({} as customRainBdst)}
|
||||
isModal={false}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
import { useWrStore } from "@/app/store";
|
||||
import type { customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
|
||||
import { rswtRegSize, type customRswtBdst } from "@/app/store/ruseFcltMng/fcltReg/rswtReg";
|
||||
import { tableData } from "@/components/lib/func/commom";
|
||||
import RswtrRegForm from "@/components/ui/form/fcltReg/rswtrReg/rswtrRegForm";
|
||||
import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal";
|
||||
@@ -134,7 +134,7 @@ export default function Home() {
|
||||
<UiTable
|
||||
tableData={bdstTable || []}
|
||||
headlist={rswt.upHeadList}
|
||||
pageSize={20}
|
||||
pageSize={rswtRegSize}
|
||||
total={rswtResCount}
|
||||
headName={"건축물 목록"}
|
||||
cellClick={cellClick}
|
||||
@@ -145,7 +145,7 @@ export default function Home() {
|
||||
</div>
|
||||
<div className="col-span-2 max-h-full">
|
||||
<ListDiv className="">
|
||||
<ScrollArea className="h-[65vh]">
|
||||
<ScrollArea className="h-[75vh]">
|
||||
<RswtrRegForm
|
||||
rswtForm={rswtForm ?? ({} as customRswtBdst)}
|
||||
isModal={false}
|
||||
|
||||
@@ -71,6 +71,35 @@ export const bdstUsgCd: SelectDataType[] = [
|
||||
{ val: "14", text: "골프장" },
|
||||
{ val: "15", text: "대규모점포" },
|
||||
{ val: "16", text: "기타" },
|
||||
{ text: "숙박업", val: "17" },
|
||||
{ text: "목욕장업", val: "18" },
|
||||
{ text: "공장", val: "19" },
|
||||
{ text: "발전시설", val: "20" },
|
||||
{ text: "관광단지개발사업", val: "21" },
|
||||
{ text: "도시개발사업", val: "22" },
|
||||
{ text: "산업단지개발사업", val: "23" },
|
||||
{ text: "택지개발사업", val: "24" },
|
||||
{ text: "대규모점포(대형마트)", val: "25" },
|
||||
{ text: "대규모점포(전문점)", val: "26" },
|
||||
{ text: "대규모점포(백화점)", val: "27" },
|
||||
{ text: "대규모점포(쇼핑센터)", val: "28" },
|
||||
{ text: "대규모점포(복합쇼핑몰)", val: "29" },
|
||||
{ text: "물류시설", val: "30" },
|
||||
{ text: "운수시설(여객자동차터미널)", val: "31" },
|
||||
{ text: "운수시설(철도시설)", val: "32" },
|
||||
{ text: "운수시설(공항시설)", val: "33" },
|
||||
{ text: "운수시설(항만시설)", val: "34" },
|
||||
{ text: "업무시설(공공업무시설)", val: "35" },
|
||||
{ text: "업무시설(금융업소)", val: "36" },
|
||||
{ text: "업무시설(사무소)", val: "37" },
|
||||
{ text: "업무시설(결혼상담소 등 소개업소)", val: "38" },
|
||||
{ text: "업무시설(출판사)", val: "39" },
|
||||
{ text: "업무시설(신문사)", val: "40" },
|
||||
{ text: "업무시설(오피스텔)", val: "41" },
|
||||
{ text: "교정시설", val: "42" },
|
||||
{ text: "방송국", val: "43" },
|
||||
{ text: "전신전화국", val: "44" },
|
||||
{ text: "기타", val: "45" },
|
||||
];
|
||||
|
||||
export const rswtBdstType: SelectDataType[] = [
|
||||
|
||||
@@ -6,7 +6,7 @@ import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "./type";
|
||||
|
||||
export const TEST_UUID = '2d4b151d-1828-41e0-91d9-4cd28ea1cc7e'
|
||||
|
||||
export const rainRegSize =15
|
||||
const rainyObjSchema = z.object({
|
||||
bdstReuseFcltFk: z.number().nullish(),
|
||||
pntfColKnd: z.string().min(1, { message: validationMessages.requiredSelect("종류") }),
|
||||
@@ -99,7 +99,7 @@ export const rainFacStateExport: rainFacState = {
|
||||
|
||||
const initFetch = async (code: string | number) => {
|
||||
// const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`);
|
||||
const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/11/${code}`);
|
||||
const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/${rainRegSize}/${code}`);
|
||||
return rainRes;
|
||||
};
|
||||
export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
@@ -108,7 +108,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
return {
|
||||
getRainData: async (pageNation: number, code: string | number) => {
|
||||
try {
|
||||
const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/11/${code}`);
|
||||
const rainRes = await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/${code}`);
|
||||
|
||||
// 여기서 상태 업데이트
|
||||
return set((state: rainFacState) => ({
|
||||
@@ -149,7 +149,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
try {
|
||||
|
||||
// const rainRes = await getFetch('wr' , `/reuseFc/rainyInfoList/${pageNation}/20/41` +(txt? `/${txt}`:''))
|
||||
const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/11/41` + (txt ? `/${txt}` : ''))
|
||||
const rainRes = await getFetchWithCount('wr', `/reuseFc/rainyInfoList/${pageNation}/${rainRegSize}/41` + (txt ? `/${txt}` : ''))
|
||||
console.log("rainRes", rainRes)
|
||||
set((state: rainFacState) => {
|
||||
return {
|
||||
|
||||
@@ -6,14 +6,13 @@ export const validationMessages = {
|
||||
requiredSelect: (field: string) => `${field}을(를) 선택해주세요.`,
|
||||
yearFormat: '4자리 연도만 입력하세요',
|
||||
};
|
||||
|
||||
export const baseReuseBuildingSchema = z.object({
|
||||
bdstRuseFcltSn: z.number().nullish(),
|
||||
bdstInfoSn: z.number().nullish(),
|
||||
instlCmptnDt: z.coerce.date().default(() => new Date()),
|
||||
instlCst: z
|
||||
.number()
|
||||
.max(9_999_999, { message: "최대 9,999,999까지 입력 가능합니다." })
|
||||
.max(999_999_999_999, { message: "최대 1,000,000,000,000까지 입력 가능합니다." })
|
||||
.nullish(),
|
||||
operMngCd: z.string().optional().default(""),
|
||||
anlOperCst: z.number().default(0),
|
||||
|
||||
@@ -7,6 +7,8 @@ import { z } from "zod";
|
||||
import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "../rainReg/type";
|
||||
|
||||
|
||||
export const rswtRegSize =15;
|
||||
const rswtrObjSchema = z.object({
|
||||
bdstRuseFcltSn: z.number().nullish(),
|
||||
//wtrUsqty: z.number({ required_error: validationMessages.required("물사용량(m³)") }).positive({ message: validationMessages.required("물사용량(m³)") }),
|
||||
@@ -84,7 +86,7 @@ export const rswtFacStateExport: rswtFacState = {
|
||||
};
|
||||
|
||||
const initFetch = async (code: string | number) => {
|
||||
const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/11/${code}`);
|
||||
const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/${rswtRegSize}/${code}`);
|
||||
return rswtRes;
|
||||
};
|
||||
export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
@@ -99,7 +101,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
try {
|
||||
const rswtRes = await getFetchWithCount(
|
||||
"wr",
|
||||
`/reuseFc/waterreuseFc/${pageNation}/11/${code}` +
|
||||
`/reuseFc/waterreuseFc/${pageNation}/${rswtRegSize}/${code}` +
|
||||
(txt ? `/${txt}` : "")
|
||||
);
|
||||
set((state: rswtFacState) => {
|
||||
@@ -121,7 +123,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
try {
|
||||
const rswtRes = await getFetchWithCount(
|
||||
"wr",
|
||||
`/reuseFc/waterreuseFc/${pageNation}/11/${code}`
|
||||
`/reuseFc/waterreuseFc/${pageNation}/${rswtRegSize}/${code}`
|
||||
);
|
||||
console.log(pageNation);
|
||||
// 여기서 상태 업데이트
|
||||
|
||||
@@ -272,4 +272,28 @@ export const formatYyyymmdd = (val: string | undefined) => {
|
||||
}
|
||||
const m = moment(val);
|
||||
return m.isValid() ? m.format("YYYY-MM-DD") : val;
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* 문자열 숫자(콤마 포함 가능)를 반올림 처리해 반환.
|
||||
* 숫자가 아닌 경우(예: "확인불가")는 원래 값을 그대로 반환.
|
||||
*
|
||||
* @param value 입력 문자열
|
||||
* @param digits 소수점 자릿수 (기본 0 = 정수 반올림)
|
||||
*/
|
||||
export const formatArchArea =(value: string, digits: number=0 ) => {
|
||||
|
||||
// "확인불가" 등 숫자 아님 → 그대로 반환
|
||||
const cleaned = value.replace(/,/g, "");
|
||||
const num = parseFloat(cleaned);
|
||||
|
||||
if (isNaN(num)) {
|
||||
return value;
|
||||
}
|
||||
|
||||
// 반올림 (digits 자릿수까지)
|
||||
const rounded = num.toFixed(digits);
|
||||
|
||||
// 다시 천 단위 콤마 찍어서 반환
|
||||
return Number(rounded).toLocaleString();
|
||||
}
|
||||
@@ -14,9 +14,9 @@ import {
|
||||
} from "@/components/lib/func/commom";
|
||||
import { DatePicker, FormUi } from "@common/business_components";
|
||||
import { Form, FormField, SelectBox } from "@common/business_components/ui";
|
||||
import { Button, Input, ScrollArea } from "@common/components/ui";
|
||||
import { Button, Input } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { z } from "zod";
|
||||
import BdstReg from "../bdstReg/bdstReg";
|
||||
@@ -54,18 +54,12 @@ export default function RainRegForm({
|
||||
"reuseBuilding.0.rainyObj.filtrTrtmfctYn",
|
||||
]);
|
||||
|
||||
const [divStyle, setDivStyle] = useState("h-[53vh]");
|
||||
// const [divStyle, setDivStyle] = useState("h-[53vh]");
|
||||
useEffect(() => {
|
||||
if(isMap=== true){
|
||||
setDivStyle("h-[100vh]")
|
||||
}else if (isModal === true) {
|
||||
setDivStyle("h-[53vh] max-h-[37vh]")
|
||||
} else if (readonly === true) {
|
||||
setDivStyle("h-[62vh]")
|
||||
} else {
|
||||
setDivStyle("h-[57vh]")
|
||||
|
||||
}
|
||||
}, [isModal, readonly ,isMap]);
|
||||
}, [isMap]);
|
||||
|
||||
const cleanRainData = (raw: any): z.infer<typeof rainZod> => {
|
||||
const buildings =
|
||||
@@ -94,6 +88,8 @@ export default function RainRegForm({
|
||||
grntchBdstCertYn: item?.grntchBdstCertYn ?? "Y",
|
||||
rainyObj: {
|
||||
...item?.rainyObj,
|
||||
pntfColKnd:item.rainyObj?.pntfColKnd??'확인불가',
|
||||
filtrTrtmfctPrs:item.rainyObj?.filtrTrtmfctPrs??'',
|
||||
filtrTrtmfctYn: item?.rainyObj?.filtrTrtmfctYn ?? "Y",
|
||||
},
|
||||
})),
|
||||
@@ -180,7 +176,7 @@ export default function RainRegForm({
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<ScrollArea className={divStyle}>
|
||||
{/* <ScrollArea className={divStyle}> */}
|
||||
{isModal && rainForm != undefined ? <BdstReg form={form} /> : <></>}
|
||||
{isModal ? (
|
||||
<h1 className="pl-3 text-xl col-span-10 mt-4">
|
||||
@@ -614,7 +610,7 @@ export default function RainRegForm({
|
||||
</div>
|
||||
</div>
|
||||
<BdstAdd form={form} readonly={readonly}></BdstAdd>
|
||||
</ScrollArea>
|
||||
{/* </ScrollArea> */}
|
||||
</form>
|
||||
</Form>
|
||||
</div>
|
||||
|
||||
@@ -19,9 +19,9 @@ import {
|
||||
FormUi,
|
||||
SelectBox,
|
||||
} from "@common/business_components/ui";
|
||||
import { Button, Input, ScrollArea } from "@common/components/ui";
|
||||
import { Button, Input } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
import { z } from "zod";
|
||||
import BdstAdd from "../bdstReg/bdstAdd";
|
||||
@@ -46,18 +46,11 @@ export default function RswtrRegForm({
|
||||
const { code, rswtBdstUpdate, rswtBdstReg } = useWrStore(
|
||||
(state) => state
|
||||
);
|
||||
const [divStyle, setDivStyle] = useState("h-[53vh]");
|
||||
// const [divStyle, setDivStyle] = useState("h-[53vh]");
|
||||
useEffect(() => {
|
||||
if(isMap){
|
||||
setDivStyle("h-[100vh]")
|
||||
}else if (isModal === true) {
|
||||
setDivStyle("h-[53vh] max-h-[37vh]")
|
||||
} else if (readonly === true) {
|
||||
setDivStyle("h-[62vh]")
|
||||
} else {
|
||||
setDivStyle("h-[57vh]")
|
||||
}
|
||||
}, [isModal, readonly ,isMap]);
|
||||
}, [isMap]);
|
||||
// const defaultValues: z.infer<typeof rswtZod> = rswtZod.parse({});
|
||||
|
||||
const form = useForm<z.infer<typeof rswtZod>>({
|
||||
@@ -176,7 +169,7 @@ export default function RswtrRegForm({
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<ScrollArea className={divStyle}>
|
||||
{/* <ScrollArea className={divStyle}> */}
|
||||
{isModal && rswtForm != undefined ? <BdstReg form={form} /> : <></>}
|
||||
{isModal ? (
|
||||
<h1 className="pl-3 text-xl col-span-10 mt-4 ">
|
||||
@@ -506,7 +499,7 @@ export default function RswtrRegForm({
|
||||
</div>
|
||||
</div>
|
||||
<BdstAdd form={form} readonly={readonly}></BdstAdd>
|
||||
</ScrollArea>
|
||||
{/* </ScrollArea> */}
|
||||
</form>
|
||||
</Form>
|
||||
</div>
|
||||
|
||||
@@ -196,7 +196,7 @@ export function BdstReg<T extends MoType>({
|
||||
</div>
|
||||
</ScrollArea>
|
||||
<div className="border-t border-gray-300 my-4"></div>
|
||||
{/* <ScrollArea className="h-[40vh]"> */}
|
||||
<ScrollArea className="h-[40vh]">
|
||||
<div>
|
||||
{moType === "RNB" ? (
|
||||
<RainRegForm
|
||||
@@ -226,7 +226,7 @@ export function BdstReg<T extends MoType>({
|
||||
></HtdflRegForm>
|
||||
)}
|
||||
</div>
|
||||
{/* </ScrollArea> */}
|
||||
</ScrollArea>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user