diff --git a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx index ef2dcd2ad..e1f62c313 100644 --- a/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltReg/pbnstReg/page.tsx @@ -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) }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx index a99142c64..387368827 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/index.tsx @@ -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; 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[]) => { - const pbnstBizCycle = fcBizs.map((item: z.infer) => { - 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; - }) - } + }); + }, }; }; diff --git a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx index fbf7ec49e..daaaaab98 100644 --- a/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx +++ b/apps/wr/app/store/ruseFcltMng/fcltReg/pbnstReg/type.tsx @@ -197,247 +197,434 @@ const pubHasuZod = z.object({ export type pubHasuType = z.infer; //관경 제외 -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, +// }, +// ], +// } + + + + + +// ] diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx index 8bed0dacd..0e5e8f97d 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/buseReg/bugRegForm.tsx @@ -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 = []; diff --git a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx index 5fc30a4c7..9dcd9b5e5 100644 --- a/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx +++ b/apps/wr/components/ui/form/fcltReg/pbnstReg/mngReg/mngRegForm.tsx @@ -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(null); - const { pbnst, pbnstUpdate ,pbnstMngData, fileDelete} = useWrStore((state) => state); const [planFiles, setPlanFiles] = useState(null); const [relationfiles, setRelationFiles] = useState(null); const [fcltNm, setFcltNm] = useState(null); const [progress, setProgress] = useState(0); //const new File([] as BlobPart[], "") 파일 다운로드 활용 - const handleProgress = (percentage: string) => { - setProgress(Number(percentage)); - }; const ref = useRef( null); const form = useForm>({ 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) { - 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) { + 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={""} /> diff --git a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx index e58f7b856..ead010fa0 100644 --- a/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx +++ b/apps/wr/components/ui/modal/fcltReg/pbnstRegModal/pbnstRegModal.tsx @@ -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); diff --git a/packages/common/business_components/src/ui/form_ui/index.tsx b/packages/common/business_components/src/ui/form_ui/index.tsx index bd9930c3c..ec1854636 100644 --- a/packages/common/business_components/src/ui/form_ui/index.tsx +++ b/packages/common/business_components/src/ui/form_ui/index.tsx @@ -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 & {label:string|undefined} ->(({children, label},ref)=>{ +export const BZNM_TOT_NO = '총사업자등록번호'; +export const CANDIDATE = '공급처 후보지 선택(필수아님)'; + +interface FormUiProps extends React.HTMLAttributes { + label?: string; + onCheckboxChange?: (checked: boolean) => void; + isDisabled?: boolean; +} + +interface FormElementProps extends React.HTMLAttributes { + disabled?: boolean; +} + +const FormUi = React.forwardRef( + ({ children, label, onCheckboxChange, isDisabled }, ref) => { + const [isChecked, setIsChecked] = useState(false); + + const handleCheckboxChange = useCallback((checked: boolean) => { + setIsChecked(checked); + onCheckboxChange?.(checked); + }, [onCheckboxChange]); + console.log(children); return ( - - {label?{label}:<>} - - {children} - - - - ) -}) + + {label && {label}} + {label === BZNM_TOT_NO && ( +
+
+ + +
+
+ )} + {label === CANDIDATE && ( + + {children} + + )} + {label !== BZNM_TOT_NO && label !== CANDIDATE && ( + + {React.isValidElement(children) && isDisabled + ? React.cloneElement(children, { + disabled: true, + ...(children.props as FormElementProps) + }) + : children} + + )} + +
+ ); + } +); + FormUi.displayName = 'FormUi'; -export { FormUi }; +export { FormUi }; \ No newline at end of file