하수재이용 시설 등록 수정

This commit is contained in:
leedj312
2025-06-08 18:20:13 +09:00
parent e0c235e26b
commit 6607ac0c2a
8 changed files with 70 additions and 474 deletions
@@ -9,7 +9,7 @@ import {
UiModal,
UiTable,
} from "@common/business_components";
import { Button, Input } from "@common/components";
import { Button } from "@common/components";
import { useWrStore } from "../../../store";
import { Tabs, TabsList, TabsTrigger, TabsContent } from "@common/components";
import { useEffect, useState } from "react";
@@ -50,7 +50,6 @@ export default function PublicReuseFaciltyInsert() {
const [searchTxt, setSearchTxt] = useState<string>();
const [bdstTable, setbdstTable] = useState<pubHasuType[]>();
const [selectBdst, setSelectBdst] = useState<customPbnst | null>(null);
useEffect(() => {
+6 -4
View File
@@ -2,6 +2,8 @@ import { fetchType, getFetch, postFectch } from "@/components/lib/api";
import type { pubHasuType } from "../../ruseFcltMng/fcltReg/pbnstReg/type";
import type { DemandCompType } from "@common/business_components/ui";
export type comFcltState = {
searchFclts: pubHasuType;
demandCompList: DemandCompType[];
};
@@ -36,10 +38,10 @@ export const searchActions: (set: any) => comFcltActions = (set: any) => {
fetchType.WR,
`/reuseFc/request/${searchNm}/${cnt}`
);
return set((state: comFcltState) => ({
...state,
demandCompList: coList,
}));
return set((state: comFcltState) => {
state.demandCompList= coList
return state
});
},regDemandCompany: async (data:DemandCompType)=>{
try{
@@ -1,7 +1,10 @@
import { TEST_UUID } from "../../ruseFcltMng/fcltReg/rainReg";
type NameMap = {
[key: string]: string;
};
const nameMap = {
const nameMap:NameMap = {
"세척수": "wshwtr",
"냉각수": "coolUswtr",
"청소수": "cleanUswtr",
@@ -24,7 +27,8 @@ export const excelToPbnPrfData = (excelData: JSON[], year: string,pbnstRuseFcltF
// 월별 데이터 하나로 병합
const merged = {} as any;
excelData.forEach((item: any) => {
const key = nameMap[item["용수명"]];
const usageNm = item["용수명"]
const key = nameMap[usageNm as any];
if (!key) return;
for (let i = 1; i <= 12; i++) {
@@ -1,5 +1,4 @@
import { z } from "zod";
import { TEST_UUID, type TableUpperProps } from "../rainReg";
import { TEST_UUID } from "../rainReg";
import {
deleteFectch,
fetchType,
@@ -9,8 +8,6 @@ import {
} from "@/components/lib/api";
import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList";
import {
exampleData,
fcBizSchema,
type customPbnst,
type fcBizType,
type pbnstInsertIndex,
@@ -26,6 +23,7 @@ import {
pbnstDemandHeadListExport,
fcOrgwtsHeadListExport,
} from "./headList";
import type { TableUpperProps } from "@/app/store/common/type/header";
const selectLabel: SelectDataType[] = [{ text: "test", val: "1" }];
const pubFacHeadList = pubFacHeadListExport;
@@ -324,7 +322,7 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
pbnstMngData: (data: customPbnst[]) => {
if (data.length > 0) {
}
console.log('data', data)
return set((state: pubFacState) => {
state.pbnst.pbnstMngRegData = data;
state.pbnst.pbnstBizCycle =
@@ -72,7 +72,7 @@ export type fcFileType = z.infer<typeof fcFileSchema>;
const pplInstlSchema = z.object({
ruseFcltBizFk: z.number(),
ruseFcltBizFk: z.number().nullish(),
choose:z.boolean().default(false),
pdmt: z.string().default(''),
ppMqlt: z.string().default(""),
@@ -151,7 +151,7 @@ const dmdColist = z.object({
rgtr: z.string().nullish(),
mdfr: z.string().nullish(),
pbnstRuseFcltBizPk: z.number(),
pbnstRuseFcltFk: z.string(),
pbnstRuseFcltFk: z.string().nullish(),
//telno:z.string().default('')
});
@@ -160,7 +160,7 @@ const dmdColist = z.object({
export const fcBizSchema = z.object({
pbnstRuseFcltBizPk: z.number().default(1),
pbnstRuseFcltBizPk: z.number().nullish(),
pbnstRuseFcltFk: z.string().nullish(),
superkey: z.string().default("").nullish(),
cycl: z.number().default(1),
@@ -247,436 +247,3 @@ export const pbnstRegZod = z.object({
fcOpers: z.array(fcOperSchema).default([]),
hasuhasu: z.number().default(0),
});
//관경 제외
export const exampleData = [
{
"swtrmtFcltFk": "11000SW001R",
"pbnstRuseFcltPk": "11000SW001R1",
"ruseUtztnFcltNm":'난지',
"fcltCpct": 123,
"ruseCpct": 123,
"splyExtraCpct": 123,
"hasuhasu": 123,
"fcFiles": [],
"fcBizs": [
{
"pbnstRuseFcltFk": "11000SW001R1",
"cycl": 1,
"seCd": "123",
"bizMthdCd": "123",
"gvsbs": 123,
"lcep": 123,
"cusrAlotm": 123,
"etc": "123",
"rprcsFcltCpct": 123,
"majorPrcsMsrcCd": "123",
"addr": "123",
"rprcsMthdCd": "123",
"inoutYn": "123",
"mainSplyPumpCpct": 123,
"erctWtrOcrnCpct": 123,
"erctUswtrLinkSpt": "123",
"erctUswtrFcltCpct": 123,
"erctUswtrPrcsMeth": "123",
"erctUswtrPrcsMsrcCd": "123",
"bod": 123,
"grssClfg": 123,
"combResdch": 123,
"trbt": 123,
"smll": 1230,
"crmty": 123,
"tn": 123,
"tph": 1230,
"ph": 123,
"clIonQnt": 123,
"cdtnv": 123,
"pplInstls": [
{
"ruseFcltBizFk": "",
"choose": false,
"ppMqlt": "PE관",
"pdmt": "D250",
"cpct": "123",
"id": "e1472f7c-7033-44ae-a953-f69e6b90fbc1"
}
]
},
{
"pbnstRuseFcltFk": "11000SW001R1",
"cycl": 2,
"seCd": "하하",
"bizMthdCd": "호호",
"gvsbs": 12,
"lcep": 12,
"cusrAlotm": 12,
"etc": "1",
"rprcsFcltCpct": 12,
"majorPrcsMsrcCd": "12",
"addr": "12",
"rprcsMthdCd": "12",
"inoutYn": "12",
"mainSplyPumpCpct": 12,
"erctWtrOcrnCpct": 13,
"erctUswtrLinkSpt": "12",
"erctUswtrFcltCpct": 13,
"erctUswtrPrcsMeth": "12",
"erctUswtrPrcsMsrcCd": "12",
"bod": 1,
"grssClfg": 1,
"combResdch": 1,
"trbt": 1,
"smll": 1,
"crmty": 1,
"tn": 1,
"tph": 1,
"ph": 1,
"clIonQnt": 1,
"cdtnv": 1,
"pplInstls": [
{
"ruseFcltBizFk": "",
"choose": false,
"ppMqlt": "PE관",
"pdmt": "D300",
"cpct": "1",
"id": "e1472f7c-7033-44ae-a953-f69e6b90fbc1"
}
]
}
],
"fcOpers": [
{
"choose": false,
"rgtr": "",
"mdfr": "",
"operMthd": "1",
"rprtvBzenty": "1",
"bgngDt": "20250513",
"endDt": "20250529",
"id": "cbef8f84-33df-406b-a85f-edd2a5d3618e"
}
]
},
{
"swtrmtFcltFk": "11000SW001R",
"ruseUtztnFcltNm":'난지',
"pbnstRuseFcltPk": "11000SW001R2",
"fcltCpct": 123,
"ruseCpct": 123,
"splyExtraCpct": 123,
"hasuhasu": 123,
"fcFiles": [],
"fcBizs": [
{
"pbnstRuseFcltFk": "11000SW001R2",
"cycl": 1,
"seCd": "123",
"bizMthdCd": "123",
"gvsbs": 123,
"lcep": 123,
"cusrAlotm": 123,
"etc": "123",
"rprcsFcltCpct": 123,
"majorPrcsMsrcCd": "123",
"addr": "123",
"rprcsMthdCd": "123",
"inoutYn": "123",
"mainSplyPumpCpct": 123,
"erctWtrOcrnCpct": 123,
"erctUswtrLinkSpt": "123",
"erctUswtrFcltCpct": 123,
"erctUswtrPrcsMeth": "123",
"erctUswtrPrcsMsrcCd": "123",
"bod": 123,
"grssClfg": 123,
"combResdch": 123,
"trbt": 123,
"smll": 1230,
"crmty": 123,
"tn": 123,
"tph": 1230,
"ph": 123,
"clIonQnt": 123,
"cdtnv": 123,
"pplInstls": [
{
"ruseFcltBizFk": "",
"choose": false,
"ppMqlt": "PE관",
"pdmt": "D250",
"cpct": "123",
"id": "e1472f7c-7033-44ae-a953-f69e6b90fbc1"
}
]
}
],
"fcOpers": [
{
"choose": false,
"rgtr": "",
"mdfr": "",
"operMthd": "123",
"rprtvBzenty": "123",
"bgngDt": "20250513",
"endDt": "20250529",
"id": "cbef8f84-33df-406b-a85f-edd2a5d3618e"
}
]
}
]
// [{
// pbnstRuseFcltPk: 1,
// swtrmtFcltFk: "11000SW001R",
// ruseUtztnFcltNm: "재이용시설 A",
// hasuhasu: 0,
// fcltCpct: "100",
// ruseCpct: "90",
// splyExtraCpct: "10",
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// fcFiles: [],
// fcBizs: [
// {
// pbnstRuseFcltBizPk: 1,
// pbnstRuseFcltFk: 1,
// cycl: "1",
// seCd: "A010",
// bizMthdCd: "M02",
// instlAprvSncnDt: "2022-01-01",
// bizCmcnDay: "2022-02-01",
// gvsbs: "정부지원",
// lcep: "지자체",
// cusrAlotm: "고객",
// etc: "비고 없음",
// totalMoney: "100000000",
// rprcsFcltCpct: "50",
// majorPrcsMsrcCd: "MP01",
// addr: "서울시 종로구",
// rprcsMthdCd: "RP01",
// inoutYn: "Y",
// mainSplyPumpCpct: "30",
// erctWtrOcrnCpct: "5",
// erctUswtrLinkSpt: "있음",
// erctUswtrFcltCpct: "20",
// erctUswtrPrcsMeth: "생물학적",
// erctUswtrPrcsMsrcCd: "EM01",
// wwtEmsnFcltPrmsnYn: "Y",
// tmsInstlYn: "N",
// pbnstDrngInflwExclYn: "Y",
// bod: "30",
// grssClfg: "양호",
// combResdch: "적정",
// trbt: "10",
// clIonQnt: "5",
// smll: "없음",
// crmty: "정상",
// tph: "0.2",
// tn: "2",
// ph: "7.2",
// cdtnv: "100",
// designCst: "1000",
// cstrnSpvsCst: "500",
// fcltSbsdCst: "200",
// wstCst: "300",
// cnstCmcnCst: "1000",
// mntrgEqpmntInstlCst: "150",
// gisDbCst: "200",
// elpwrMtrngCst: "180",
// mchnCst: "700",
// archCst: "400",
// pplCst: "300",
// ruseFcltCst: "5000",
// designCstClcln: "990",
// cstrnSpvsCstClcln: "480",
// fcltSbsdCstClcln: "190",
// wstCstClcln: "280",
// cnstCmcnCstClcln: "980",
// mntrgEqpmntInstlCstClcln: "140",
// gisDbCstClcln: "190",
// elpwrMtrngCstClcln: "170",
// mchnCstClcln: "680",
// archCstClcln: "380",
// pplCstClcln: "290",
// ruseFcltCstClcln: "4800",
// pplInstls: [
// {
// ruseFcltBizFk: "10",
// pdmt: "D200",
// ppMqlt: "도복장강관",
// cpct: "1",
// },
// {
// ruseFcltBizFk: "10",
// pdmt: "D100",
// ppMqlt: "PE관",
// cpct: "2",
// },
// ],
// fcOrgwts: [
// {
// pbnstRuseFcltBizFk: 1,
// swtrmtFcltFk: "11000SW001R",
// orgwtWtritQnt: "100",
// tmsYn: "Y",
// dschgFmYn: "N",
// dtlPstnExpln: "배출 위치",
// regDt: "20250221",
// rgtr: "admin",
// mdfcnDt: "20250321",
// mdfr: "admin",
// },
// {
// pbnstRuseFcltBizFk: 1,
// swtrmtFcltFk: "11200PB001R",
// orgwtWtritQnt: "153",
// tmsYn: "Y",
// dschgFmYn: "N",
// dtlPstnExpln: "배출 위치22",
// regDt: "20250221",
// rgtr: "admin",
// mdfcnDt: "20250421",
// mdfr: "admin",
// },
// ],
// flg: "N",
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// },
// {
// pbnstRuseFcltBizPk: 11,
// pbnstRuseFcltFk: 1,
// cycl: "2",
// seCd: "A011",
// bizMthdCd: "M02",
// instlAprvSncnDt: "2022-01-01",
// bizCmcnDay: "2022-02-01",
// gvsbs: "민간",
// lcep: "지자체",
// cusrAlotm: "고객",
// etc: "비고 없음",
// totalMoney: "100000000",
// rprcsFcltCpct: "50",
// majorPrcsMsrcCd: "MP01",
// addr: "부산시 해운대구",
// rprcsMthdCd: "RP01",
// inoutYn: "Y",
// mainSplyPumpCpct: "30",
// erctWtrOcrnCpct: "5",
// erctUswtrLinkSpt: "있음",
// erctUswtrFcltCpct: "20",
// erctUswtrPrcsMeth: "생물학적",
// erctUswtrPrcsMsrcCd: "EM01",
// wwtEmsnFcltPrmsnYn: "Y",
// tmsInstlYn: "N",
// pbnstDrngInflwExclYn: "Y",
// bod: "30",
// grssClfg: "양호",
// combResdch: "적정",
// trbt: "10",
// clIonQnt: "5",
// smll: "없음",
// crmty: "정상",
// tph: "0.2",
// tn: "2",
// ph: "7.2",
// cdtnv: "100",
// designCst: "1000",
// cstrnSpvsCst: "500",
// fcltSbsdCst: "200",
// wstCst: "300",
// cnstCmcnCst: "1000",
// mntrgEqpmntInstlCst: "150",
// gisDbCst: "200",
// elpwrMtrngCst: "180",
// mchnCst: "700",
// archCst: "400",
// pplCst: "300",
// ruseFcltCst: "5000",
// designCstClcln: "990",
// cstrnSpvsCstClcln: "480",
// fcltSbsdCstClcln: "190",
// wstCstClcln: "280",
// cnstCmcnCstClcln: "980",
// mntrgEqpmntInstlCstClcln: "140",
// gisDbCstClcln: "190",
// elpwrMtrngCstClcln: "170",
// mchnCstClcln: "680",
// archCstClcln: "380",
// pplCstClcln: "290",
// ruseFcltCstClcln: "4800",
// pplInstls: [
// {
// ruseFcltBizFk: "11",
// pdmt: "관경",
// ppMqlt: "1",
// cpct: "100",
// },
// {
// ruseFcltBizFk: "11",
// pdmt: "관경",
// ppMqlt: "2",
// cpct: "200",
// },
// ],
// fcOrgwts: [
// {
// pbnstRuseFcltBizFk: 11,
// swtrmtFcltFk: "11000SW001R",
// orgwtWtritQnt: "152",
// tmsYn: "Y",
// dschgFmYn: "N",
// dtlPstnExpln: "배출 위치1",
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// },
// {
// pbnstRuseFcltBizFk: 11,
// swtrmtFcltFk: "11200PB001R",
// orgwtWtritQnt: "150",
// tmsYn: "Y",
// dschgFmYn: "N",
// dtlPstnExpln: "배출 위치",
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// },
// ],
// flg: "N",
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// },
// ],
// fcOpers: [
// {
// pbnstRuseFcltOperInfoPk: 100,
// pbnstRuseFcltFk: 1,
// operMthd: "위탁",
// rprtvBzenty: "기관명",
// bgngDt: new Date("2023-09-30"),
// endDt: new Date("2023-12-31"),
// rgtr: TEST_UUID,
// mdfr: TEST_UUID,
// },
// {
// pbnstRuseFcltOperInfoPk: 101,
// pbnstRuseFcltFk: 1,
// operMthd: "직영",
// rprtvBzenty: "기관명",
// bgngDt: new Date("2024-11-30"),
// endDt: new Date("2024-12-31"),
// rgtr:TEST_UUID ,
// mdfr: TEST_UUID,
// },
// ],
// }
// ]
@@ -158,6 +158,9 @@ export function PbnstBuseForm({
const formData = form.watch();
formData.pplInstls = ref.current ? [...ref.current] : []; // ← form 내부 상태 기준으로 복사
formData.fcDemands = fcDemands;
formData.fcOrgwts = fcOrgwtFiled;
ß
if (formType === "reg") {
if (
firstBizData &&
@@ -174,7 +177,6 @@ export function PbnstBuseForm({
pbnstBizData(formData as fcBizType);
}else if(formType === "update"){
console.log('formdata ', formData)
pbnstBizData(formData as fcBizType);
@@ -462,11 +464,9 @@ export function PbnstBuseForm({
initValue={f.value}
setValue={(val) => {
f.onChange(val);
if (val) getDemandCompList(val, 3);
}}
setRtnData={(valList: PbnstDemandComType[]) => {
console.log('valList[0] ', index)
if (
valList.length > 0 &&
valList['0']
@@ -89,7 +89,6 @@ export function PbnstMngForm({
getBizCycle(pbnst.pbnstRes[val]);
form.reset(pbnst.pbnstRes[val]);
console.log('pbnst.efflAmnt ', pbnst.efflAmnt)
form.setValue('hasuhasu' , Number(pbnst.efflAmnt)??0)
getpbnstInsertIndex({ ...pbnst.pbnsUpdateIndex, mng: val });
}
@@ -203,7 +202,7 @@ export function PbnstMngForm({
form.setValue("swtrmtFcltFk", firstFcltData.swtrmtFcltFk);
form.setValue(
"pbnstRuseFcltPk",
String(firstFcltData.swtrmtFcltFk + "1")
String(firstFcltData.pbnstRuseFcltPk)
);
form.setValue("fcBizs", firstFcltData.fcBizs);
}
@@ -259,6 +258,7 @@ export function PbnstMngForm({
formData.fcOpers = ref.current ? [...ref.current] : [];
formData.fcFiles = regFileList ? [...regFileList] : [];
if (formType === "reg") {
console.log('formData ', formData)
pbnstMngData([formData] as customPbnst[]);
} else if (formType === "update"){
const updateRes = pbnst.pbnstRes?.map((item)=>{
@@ -272,7 +272,7 @@ export function PbnstMngForm({
}, [form.formState, regFileList, formType, pbnst.pbnstRes]);
useEffect(() => {
pbnstMngData(pbnst.pbnstMngRegData);
// pbnstMngData(pbnst.pbnstMngRegData);
}, [pbnst.pbnstMngRegData]);
useEffect(() => {
@@ -1,9 +1,10 @@
"use client";
import { useWrStore } from "@/app/store";
import type {
customPbnst,
fcBizType,
pubHasuType,
import {
pbnstRegZod,
type customPbnst,
type fcBizType,
type pubHasuType,
} from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type";
import { PbnstMngForm } from "@/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm";
import { ScrollArea } from "@common/business_components";
@@ -18,9 +19,11 @@ import { useEffect, useState } from "react";
import { PbnstBuseForm } from "@/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm";
export function PbnstRegModal({ data }: { data: pubHasuType }) {
const { pbnst, pbnstInsert } = useWrStore((state) => {
const { pbnst, pbnstInsert, pbnstMngData } = useWrStore((state) => {
return state;
});
const { pbnstRes } = pbnst;
const [pbnstBdstForm, setPbnstBdstForm] = useState<customPbnst>(
{} as customPbnst
);
@@ -36,23 +39,43 @@ export function PbnstRegModal({ data }: { data: pubHasuType }) {
useEffect(() => {
if (data) {
let regData = {
swtrmtFcltFk: String(data.bscFctCd),
pbnstRuseFcltPk: String(data.bscFctCd + "1"),
fcBizs: [
{
pbnstRuseFcltFk: String(data.bscFctCd + "1"),
cycl: 1,
} as unknown as fcBizType,
],
};
let regData;
if (pbnstRes && pbnstRes?.length > 0) {
regData = {
swtrmtFcltFk: String(data.bscFctCd),
pbnstRuseFcltPk: String(data.bscFctCd) + String(pbnstRes.length + 1),
fcBizs: [
{
pbnstRuseFcltFk:
String(data.bscFctCd) + String(pbnstRes.length + 1),
cycl: 1,
} as unknown as fcBizType,
],
};
//regData= pbnstRegZod.parse(regData)
//setPbnstBdstForm(regData as unknown as customPbnst);
// pbnstMngData([regData] as unknown as customPbnst[])
} else {
regData = {
swtrmtFcltFk: String(data.bscFctCd),
pbnstRuseFcltPk: String(data.bscFctCd + "1"),
fcBizs: [
{
pbnstRuseFcltFk: String(data.bscFctCd + "1"),
cycl: 1,
} as unknown as fcBizType,
],
};
//regData= pbnstRegZod.parse(regData)
// setPbnstBdstForm(regData as unknown as customPbnst);
// pbnstMngData([regData] as unknown as customPbnst[])
}
regData = pbnstRegZod.parse(regData);
setPbnstBdstForm(regData as unknown as customPbnst);
}
}, [data]);
}, [data, pbnstRes]);
useEffect(() => {}, [pbnstBdstForm]);
useEffect(() => {}, [pbnst.pbnstMngRegData]);
return (
<>
<h1 className="text-2xl font-medium text-label pl-8">
@@ -81,7 +104,10 @@ export function PbnstRegModal({ data }: { data: pubHasuType }) {
<PbnstMngForm formType={"reg"} firstFcltData={pbnstBdstForm} />
</TabsContent>
<TabsContent className="max-h-full" value="buse">
<PbnstBuseForm formType={"reg"} firstBizData={pbnstBdstForm.fcBizs} />
<PbnstBuseForm
formType={"reg"}
firstBizData={pbnstBdstForm.fcBizs}
/>
</TabsContent>
</Tabs>
</ScrollArea>