Merge commit 'a5d816e221985da6df93a4587d91c858acbbb12b' into iipbs/wr/form_fuction

This commit is contained in:
jyha00
2025-05-30 09:17:38 +09:00
7 changed files with 605 additions and 347 deletions
@@ -39,9 +39,9 @@ useEffect(() => {
if (!pbnst.isInit ) {
pubHasuInit('1','11');
pbnstRegInit( '41');
///pbnstRegInit( '41');
}
}, [pbnst.isInit, pubHasuInit,pbnstRegInit]);
}, [pbnst.isInit, pubHasuInit]);
useEffect(() => {
@@ -60,10 +60,11 @@ useEffect(() => {
if (selectRow) {
setSelectedRow(selectRow);
}
if (pbnstRes === null){
alert("등록된 재이용시설 정보가 없습니다. 신규등록 하십시오.")
return;
}
console.log('selectRow ', selectRow)
pbnstRegInit(selectRow)
// setSelectBdst(pbnstRes);
// setPbnstBiz(pbnstRes?.fcBizs)
};
@@ -42,6 +42,7 @@ export type pubFacState = {
pbnstMngNm: chHeadType[];
pbnstHasuRes: pubHasuType[];
pbnstRes: customPbnst[] | null; // 배열에서 단일 객체 또는 null로 변경
pbnstResObj: customPbnst | null; // 배열에서 단일 객체 또는 null로 변경
pbnstBizCycle: SelectDataType[];
selectLabel: SelectDataType[];
pbnstOrgwtHeadList: TableUpperProps[];
@@ -52,16 +53,15 @@ export type pubFacState = {
};
};
type pubFacActions = {
pubHasuInit: (page:string, sggOrCity:string) => void;
pbnstRegInit: (sgg: string) => void;
pbnstRegSearch: (txt: string | undefined, sgg: string) => void;
pubHasuInit: (page: string, sggOrCity: string) => void;
pbnstRegInit: (pubHasuRes: pubHasuType) => void;
pbnstReg: (txt: string | undefined) => void;
pbnstUpdate(pbnstRes: customPbnst): Promise<void>;
fileDelete: (atflCd: string) => void;
fileDownLoad: (atflCd: string) => void;
pbnstMngData: (data: customPbnst[]) => void;
pbnstBizData(data: fcBizType): void;
getBizCycle: (pbnstObj: customPbnst) => void;
};
export type pubFacType = pubFacState & pubFacActions;
@@ -74,7 +74,8 @@ export const pubFacStateExport: pubFacState = {
pbnstMngNm: pbnstMngNm,
pbnstOrgwtHeadList: pbnstOrgwtHeadList,
pbnstHasuRes: [],
pbnstRes: null, // 초기값을 null로 변경
pbnstResObj: null, // 초기값을 null로 변경
pbnstRes: [], // 초기값을 null로 변경
pbnstBizCycle: [{ text: "없음", val: "1" }],
selectLabel: selectLabel,
pplInstlsHeadLisat: pplInstlsHeadLisat,
@@ -89,11 +90,11 @@ const checkWrRegList = async () => {
return wrRegList;
};
const hasuListFetch = async (page:string, sggOrCity:string) => {
const hasuListFetch = async (page: string, sggOrCity: string) => {
const checkWrRegListRes = await checkWrRegList();
const rainRes = await postFectch(
`/prcsFclt/ruseInfo/${page?page:1}/10/A/${sggOrCity?sggOrCity:"11"}/0/1/SW`,
`/prcsFclt/ruseInfo/${page ? page : 1}/10/A/${sggOrCity ? sggOrCity : "11"}/0/1/SW`,
checkWrRegListRes,
fetchType.COMMON
);
@@ -108,18 +109,6 @@ const hasuListFetch = async (page:string, sggOrCity:string) => {
return hasuList;
};
const getBizCycle = (fcBizs: z.infer<typeof fcBizSchema>[]) => {
const pbnstBizCycle = fcBizs.map((item: z.infer<typeof fcBizSchema>) => {
return {
text: `${item.cycl}차`,
val: item.cycl,
superkey: "", // Add default superkey value
};
});
return pbnstBizCycle;
};
const initFetch = async (code: string | undefined) => {
const pbnstRes = await getFetch("wr", `${code}`);
return pbnstRes;
@@ -127,11 +116,10 @@ const initFetch = async (code: string | undefined) => {
export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
return {
pubHasuInit: async (page:string, sggOrCity:string) => {
pubHasuInit: async (page: string, sggOrCity: string) => {
try {
const pbnstHasuRes = await hasuListFetch(page, sggOrCity);
return set((state: pubFacState) => ({
...state,
pbnst: {
@@ -145,21 +133,16 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
}
},
pbnstRegInit: async (txt: string | undefined) => {
pbnstRegInit: async (pubHasuRes: pubHasuType ) => {
try {
// const pbnstRes = await initFetch(txt);
const pbnstRes = [exampleData];
const pbnstBizCycle = pbnstRes && pbnstRes.length > 0 ? getBizCycle(pbnstRes[0]?.fcBizs || []) : []; // pbnstRes가 null일 수 있으므로 체크
//const pbnstRes = await initFetch(txt);
const pbnstRes = exampleData;
return set((state: pubFacState) => ({
...state,
pbnst: {
...state.pbnst,
pbnstRes: [pbnstRes],
pbnstBizCycle: pbnstBizCycle,
pbnstRes: pbnstRes,
isInit: false,
},
}));
@@ -167,10 +150,10 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
console.log(errorHasu);
}
},
pbnstReg: async (txt: string | undefined) => {
try {
const pbnstRes = await hasuListFetch(txt);
const pbnstRes = await hasuListFetch('11' , '11');
return set((state: pubFacState) => ({
...state,
pbnst: {
@@ -202,6 +185,23 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
console.error("Error updating pbnst:", error);
}
},
getBizCycle: async (pbnstObj: customPbnst) => {
const pbnstBizCycle = pbnstObj.fcBizs.map((item) => {
return {
text: `${item.cycl}차`,
val: item.cycl,
};
});
return set((state: pubFacState) => ({
...state,
pbnst: {
...state.pbnst,
pbnstBizCycle: pbnstBizCycle,
pbnstResObj: pbnstObj,
isInit: false,
},
}));
},
fileDelete: async (atflCd: string) => {
try {
const response = await deleteFectch(
@@ -242,21 +242,23 @@ export const pubFacActionsExport: (set: any) => pubFacActions = (set: any) => {
return state;
});
},
pbnstBizData:(data:fcBizType)=>{
return set((state:pubFacState)=>{
if(state.pbnst.pbnstMngRegData){
const regData = state.pbnst.pbnstMngRegData.find(item=>
data.pbnstRuseFcltFk===item.pbnstRuseFcltPk
)
if(regData){
const bizIdx = regData.fcBizs.findIndex(item=>item.pbnstRuseFcltBizPk==data.pbnstRuseFcltBizPk)
if(bizIdx>=0){
pbnstBizData: (data: fcBizType) => {
return set((state: pubFacState) => {
if (state.pbnst.pbnstMngRegData) {
const regData = state.pbnst.pbnstMngRegData.find(
(item) => data.pbnstRuseFcltFk === item.pbnstRuseFcltPk
);
if (regData) {
const bizIdx = regData.fcBizs.findIndex(
(item) => item.pbnstRuseFcltBizPk == data.pbnstRuseFcltBizPk
);
if (bizIdx >= 0) {
regData.fcBizs[bizIdx] = data;
}
}
}
return state;
})
}
});
},
};
};
@@ -197,247 +197,434 @@ const pubHasuZod = z.object({
export type pubHasuType = z.infer<typeof pubHasuZod>;
//관경 제외
export const exampleData = {
pbnstRuseFcltPk: 1,
swtrmtFcltFk: "11000SW001R",
ruseUtztnFcltNm: "재이용시설 A",
hasuhasu: 0,
fcltCpct: "100",
ruseCpct: "90",
splyExtraCpct: "10",
rgtr: TEST_UUID,
mdfr: TEST_UUID,
fcFiles: [],
fcBizs: [
export const exampleData = [
{
"swtrmtFcltFk": "11000SW001R",
"pbnstRuseFcltPk": "11000SW001R1",
"ruseUtztnFcltNm":'난지',
"fcltCpct": 123,
"ruseCpct": 123,
"splyExtraCpct": 123,
"hasuhasu": 123,
"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: [
"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: "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,
"ruseFcltBizFk": "",
"choose": false,
"ppMqlt": "PE관",
"pdmt": "D250",
"cpct": "123",
"id": "e1472f7c-7033-44ae-a953-f69e6b90fbc1"
}
]
},
{
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: [
"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: "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,
},
"ruseFcltBizFk": "",
"choose": false,
"ppMqlt": "PE관",
"pdmt": "D300",
"cpct": "1",
"id": "e1472f7c-7033-44ae-a953-f69e6b90fbc1"
}
]
}
],
fcOpers: [
"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,
},
"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": [
{
pbnstRuseFcltOperInfoPk: 101,
pbnstRuseFcltFk: 1,
operMthd: "직영",
rprtvBzenty: "기관명",
bgngDt: new Date("2024-11-30"),
endDt: new Date("2024-12-31"),
rgtr:TEST_UUID ,
mdfr: TEST_UUID,
},
"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,
// },
// ],
// }
// ]
@@ -118,13 +118,16 @@ export function PbnstBuseForm({ data }: { data: fcBizType[] }) {
};
useEffect(() => {
if (data) {
const index = Number(getBizCycle) - 1;
form.reset(data[index]);
ref.current = data[index]?.pplInstls ?? [];
if(getBizCycle){
const index = Number(getBizCycle) - 1;
form.reset(pbnst.pbnstResObj?.fcBizs[index]);
ref.current = pbnst.pbnstResObj?.fcBizs[index]?.pplInstls ?? [];
}
}, [getBizCycle, data]);
}, [getBizCycle,pbnst.pbnstResObj]);
useEffect(() => {
const ppl = [];
@@ -27,30 +27,29 @@ import {
} from "@/app/store/ruseFcltMng/fcltReg/pbnstReg/type";
import { TEST_UUID } from "@/app/store/ruseFcltMng/fcltReg/rainReg";
import { Label } from "@common/business_components/ui/form/lib/label";
import React from "react";
export type FilesType = {
atflCd: string;
file: File;
};
export function PbnstMngForm({ data }: { data: customPbnst[] }) {
const { pbnst, pbnstUpdate ,pbnstMngData, fileDelete,getBizCycle} = useWrStore((state) => state);
const [regFileList, setRegFileList] = useState<fcFileType[] | null>(null);
const { pbnst, pbnstUpdate ,pbnstMngData, fileDelete} = useWrStore((state) => state);
const [planFiles, setPlanFiles] = useState<FilesType[] | null>(null);
const [relationfiles, setRelationFiles] = useState<FilesType[] | null>(null);
const [fcltNm, setFcltNm] = useState<selectLabel[] | null>(null);
const [progress, setProgress] = useState(0);
//const new File([] as BlobPart[], "") 파일 다운로드 활용
const handleProgress = (percentage: string) => {
setProgress(Number(percentage));
};
const ref = useRef<operType[] | null>( null);
const form = useForm<z.infer<typeof pbnstRegZod>>({
resolver: zodResolver(pbnstRegZod),
defaultValues: pbnstRegZod.parse({}),
});
const {
fields: fcOpersField,
append,
@@ -61,18 +60,19 @@ export type FilesType = {
});
useEffect(() => {
const formData = form.watch();
formData.fcOpers = ref.current ? [...ref.current] : [];
formData.fcFiles = regFileList ? [...regFileList] : [];
pbnstMngData([formData] as customPbnst[]);
}, [form.formState, regFileList]);
const handleProgress = (percentage: string) => {
setProgress(Number(percentage));
};
useEffect(() => {
pbnstMngData(pbnst.pbnstMngRegData);
}, [pbnst.pbnstMngRegData]);
const selectFclt = (val: number) => {
if (pbnst.pbnstRes && pbnst.pbnstRes[val]) {
getBizCycle(pbnst.pbnstRes[val])
form.reset(pbnst.pbnstRes[val])
};
}
const fileDownload = (index: number) => {};
const plusHist = () => {
const regData = {
@@ -102,31 +102,6 @@ export type FilesType = {
selectedIdxs.reverse().forEach((idx) => remove(idx));
};
useEffect(() => {
if (!data) return;
//form.reset(data);
const fcltNmList = data.map((item, index) => ({
text: item.ruseUtztnFcltNm,
val: String(index)
}))
ref.current = data[0]?.fcOpers ?? null;
setFcltNm(fcltNmList)
}, [data])
useEffect(() => {
if (!fcltNm || fcltNm.length === 0) return;
form.reset(data[0]);
}, [fcltNm, data]);
// 2. Define a submit handler.
function onSubmit(values: z.infer<typeof pbnstRegZod>) {
values.fcOpers = ref.current || [];
values.fcFiles = regFileList || [];
console.log("form values:", values);
pbnstUpdate(values);
}
const fileHandler = (files: File[], type: string) => {
let fileList = [] as FilesType[];
if (type === "relation" && relationfiles) {
@@ -179,6 +154,7 @@ useEffect(() => {
: setPlanFiles(setReFiles);
}
};
const regFileFilter = (
files: FilesType[],
fileKnd: string,
@@ -194,6 +170,50 @@ useEffect(() => {
}));
return [...planDatas, ...data];
}
useEffect(() => {
const formData = form.watch();
formData.fcOpers = ref.current ? [...ref.current] : [];
formData.fcFiles = regFileList ? [...regFileList] : [];
pbnstMngData([formData] as customPbnst[]);
}, [form.formState, regFileList]);
useEffect(() => {
pbnstMngData(pbnst.pbnstMngRegData);
}, [pbnst.pbnstMngRegData]);
useEffect(() => {
if (!data) return;
//form.reset(data);
ref.current = data[0]?.fcOpers ?? null;
}, [data])
useEffect(() => {
if (!pbnst.pbnstRes) return;
const fcltNmList = pbnst.pbnstRes.map((item, index) => ({
text: item.ruseUtztnFcltNm,
val: String(index)
}))
console.log('fcltNmList ', fcltNmList)
setFcltNm(fcltNmList)
}, [pbnst.pbnstRes])
// 2. Define a submit handler.
function onSubmit(values: z.infer<typeof pbnstRegZod>) {
values.fcOpers = ref.current || [];
values.fcFiles = regFileList || [];
console.log("form values:", values);
pbnstUpdate(values);
}
useEffect(() => {
if (relationfiles) {
@@ -223,7 +243,7 @@ useEffect(() => {
className="mt-4 ml-2"
selectClass={undefined}
selectArray={fcltNm ?? []}
onSelectValue={(val) => {console.log("val", val)}}
onSelectValue={(val) => {selectFclt( Number(val))}}
value={""}
/>
</div>
@@ -49,10 +49,10 @@ const pbnstRegTotal = ()=>{
if(data ){
let regData = {
superKey: String(data.bscFctCd + "1"),
swtrmtFcltFk: String(data.bscFctCd ),
pbnstRuseFcltPk: 1,
fcBizs: [{ pbnstRuseFcltFk: 1 ,cycl:1 } as unknown as fcBizType],
pbnstRuseFcltPk: String(data.bscFctCd + "1"),
ruseUtztnFcltNm: data.bscFctNm,
fcBizs: [{ pbnstRuseFcltFk: String(data.bscFctCd + "1") ,cycl:1 } as unknown as fcBizType],
};
setPbnstBdstForm(regData as unknown as customPbnst);
@@ -1,19 +1,64 @@
import React from "react";
import React, { useCallback, useState } from "react";
import { FormControl, FormItem, FormLabel, FormMessage } from "../form";
import { Button, Checkbox } from "@common/components/ui";
const FormUi = React.forwardRef<
HTMLDivElement,
React.HTMLAttributes<HTMLDivElement> & {label:string|undefined}
>(({children, label},ref)=>{
export const BZNM_TOT_NO = '총사업자등록번호';
export const CANDIDATE = '공급처 후보지 선택(필수아님)';
interface FormUiProps extends React.HTMLAttributes<HTMLDivElement> {
label?: string;
onCheckboxChange?: (checked: boolean) => void;
isDisabled?: boolean;
}
interface FormElementProps extends React.HTMLAttributes<HTMLElement> {
disabled?: boolean;
}
const FormUi = React.forwardRef<HTMLDivElement, FormUiProps>(
({ children, label, onCheckboxChange, isDisabled }, ref) => {
const [isChecked, setIsChecked] = useState(false);
const handleCheckboxChange = useCallback((checked: boolean) => {
setIsChecked(checked);
onCheckboxChange?.(checked);
}, [onCheckboxChange]);
console.log(children);
return (
<FormItem ref={ref}>
{label?<FormLabel className="text-xl">{label}</FormLabel>:<></>}
<FormControl>
{children}
</FormControl>
<FormMessage />
</FormItem>
)
})
<FormItem ref={ref}>
{label && <FormLabel className="text-xl">{label}</FormLabel>}
{label === BZNM_TOT_NO && (
<div className="float-right">
<div className="flex items-center gap-2">
<Checkbox
id="check"
checked={isChecked}
onCheckedChange={handleCheckboxChange}
/>
<label className="w-20 text-xl text-gray-600" htmlFor="check">해당없음</label>
</div>
</div>
)}
{label === CANDIDATE && (
<FormControl>
{children}
</FormControl>
)}
{label !== BZNM_TOT_NO && label !== CANDIDATE && (
<FormControl>
{React.isValidElement(children) && isDisabled
? React.cloneElement(children, {
disabled: true,
...(children.props as FormElementProps)
})
: children}
</FormControl>
)}
<FormMessage />
</FormItem>
);
}
);
FormUi.displayName = 'FormUi';
export { FormUi };
export { FormUi };