From 98f976eaeaf62ef29abe0c5e27f171a9628fb2df Mon Sep 17 00:00:00 2001 From: jyha00 Date: Fri, 20 Jun 2025 17:06:49 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=97=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9?= =?UTF-8?q?=EC=8B=9C=EC=84=A4=ED=98=84=ED=99=A9=20=EC=97=91=EC=85=80=20?= =?UTF-8?q?=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20=EC=88=98=EC=A0=95,=20?= =?UTF-8?q?=EC=98=A8=EB=B0=B0=EC=88=98=EC=8B=9C=EC=84=A4=ED=98=84=ED=99=A9?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ruseFcltMng/fcltSttn/htdflSttn/page.tsx | 11 +- .../ruseFcltMng/fcltSttn/rainSttn/page.tsx | 40 ++--- .../ruseFcltMng/fcltSttn/htdflSttn/index.tsx | 142 +++++++++--------- apps/wr/public/sample_rainSttn.xlsx | Bin 9091 -> 10734 bytes 4 files changed, 95 insertions(+), 98 deletions(-) diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx index e8362edbe..00af0e72d 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/htdflSttn/page.tsx @@ -6,12 +6,14 @@ import type { chgBuilding, customRainBdst, } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { excelHtdflSttnParsing } from "@/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel"; import { excelDownload, getCityOrSgg, tableData, } from "@/components/lib/func/commom"; import HeadChModal from "@/components/ui/modal/sttn/headChModal/headChModal"; +import SttnDetailModal from "@/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal"; import { ContentsDiv, SearchBaseForm, @@ -21,12 +23,9 @@ import { type ReturnType, } from "@common/business_components/ui"; import ListDiv from "@common/business_components/ui/list_div"; -import { makeFcltRegHead } from "@common/business_components/ui/table/makeFcltRegHead"; -import SttnDetailModal from "@/components/ui/modal/sttn/sttnDetailModal/sttnDetailModal"; -import BdstChgModal from "@/components/ui/modal/fcltReg/bdstChgModal/bdstChgModal"; +import { HeadMakeColSpan } from "@common/business_components/ui/table/HeadMakeColSpan"; import { Button } from "@common/components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; -import { excelHtdflSttnParsing } from "@/app/store/ruseFcltMng/fcltSttn/htdflSttn/excel"; export default function HtdflSttn() { const { code, htdflSttn, htdflSttnSearch, initHtdfl } = useWrStore( @@ -139,7 +138,7 @@ export default function HtdflSttn() { } else { con = returnType.sidoValue; } - // rainSttnSearch(1, "20", con); + htdflSttnSearch(pageNation, "20", con); }} excelClick={excelClick} initClick={function (): void {}} @@ -155,7 +154,7 @@ export default function HtdflSttn() { headName={[]} tableData={bdstTable || []} children={ - + } headlist={htdflSttn.htdflSttHeadList} pageSize={20} diff --git a/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx b/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx index ebdd64a4e..52edb193e 100644 --- a/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx +++ b/apps/wr/app/ruseFcltMng/fcltSttn/rainSttn/page.tsx @@ -34,7 +34,7 @@ export default function RainSttn() { const [pageNation, setPageNation] = useState(1); const [isChHead, setIsChHead] = useState(false); const [bdstTable, setBdstTable] = useState(); - const [detailModal, setDetailModal] = useState<{isOpen:boolean,data:customRainBdst|undefined}>({data:undefined,isOpen:false }) + const [detailModal, setDetailModal] = useState<{ isOpen: boolean, data: customRainBdst | undefined }>({ data: undefined, isOpen: false }) const [bdstChgProps, setBdstChgProps] = useState<{ isOpen: boolean; chBuilding: chgBuilding[]; @@ -42,23 +42,22 @@ export default function RainSttn() { const codeData = getCityOrSgg(ref); - const cellClick=(index:number|undefined, headId: string)=>{ + const cellClick = (index: number | undefined, headId: string) => { - if(headId!=='chBuildingYn' && index!==undefined && bdstTable!==undefined){ - setDetailModal({isOpen:true ,data:bdstTable[index] }) - }else if( headId==='chBuildingYn' && index!==undefined && bdstTable!==undefined){ + if (headId !== 'chBuildingYn' && index !== undefined && bdstTable !== undefined) { + setDetailModal({ isOpen: true, data: bdstTable[index] }) + } else if (headId === 'chBuildingYn' && index !== undefined && bdstTable !== undefined) { if ( bdstTable[index] && - bdstTable[index]?.chgBuilding[0]?.bdstChgNm!==null - + bdstTable[index]?.chgBuilding[0]?.bdstChgNm !== null + ) { - setBdstChgProps({ isOpen:true , chBuilding: bdstTable[index].chgBuilding}); + setBdstChgProps({ isOpen: true, chBuilding: bdstTable[index].chgBuilding }); } } } - useEffect(() => { if (!rainSttn.isInit) { rainSttnInit(codeData ?? "0"); @@ -73,7 +72,7 @@ export default function RainSttn() { ...item, ...item.reuseBuilding[0], ...item.reuseBuilding[0].rainyObj, - chBuildingYn:item.chgBuilding[0]?.bdstChgNm!==null?'Y':'N' + chBuildingYn: item.chgBuilding[0]?.bdstChgNm !== null ? 'Y' : 'N' })) .filter((item: any) => item.rainyObj !== undefined); @@ -92,14 +91,15 @@ export default function RainSttn() { excelDownload( rainSttn.excelList, "빗물재이용시설 현황", - "sample_rainSttn.xlsx" + "sample_rainSttn.xlsx", + "A1:W3" ); } }, [rainSttn.excelList]); const excelClick = useCallback(() => { if (codeData) rainSttnSearch(1, "10000", codeData); - }, [rainSttnSearch,codeData]); + }, [rainSttnSearch, codeData]); return ( <> @@ -136,7 +136,7 @@ export default function RainSttn() { rainSttnSearch(1, "20", con); }} excelClick={excelClick} - initClick={function (): void {}} + initClick={function (): void { }} btnClass={btnClass} ref={ref} /> @@ -154,7 +154,7 @@ export default function RainSttn() { headlist={rainSttn.rainSttHeadList} pageSize={20} total={100000} - cellClick={(index: number | undefined,headId:string)=>{cellClick(index ?? undefined,headId)} } + cellClick={(index: number | undefined, headId: string) => { cellClick(index ?? undefined, headId) }} onPageChange={setPageNation} > @@ -177,12 +177,12 @@ export default function RainSttn() { } /> { - setDetailModal({...detailModal, isOpen:!detailModal.isOpen}) - }} - bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"} - body={}/> + open={detailModal.isOpen} + onOpenChange={() => { + setDetailModal({ ...detailModal, isOpen: !detailModal.isOpen }) + }} + bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"} + body={} /> ; htdflSttNodeList: CommonTableProps[]; - htdflSttnRes:customHtdflBdst[] + htdflSttnRes: customHtdflBdst[] excelList: []; }; }; type htdflSttnActions = { - initHtdfl:(con:string) => void; + initHtdfl: (con: string) => void; htdflSttnSearch: (page: number, total: string, con: string) => void; htdflChSttnHead: ( headList: z.infer, @@ -33,16 +33,16 @@ export const htdflSttnStateExport: htdflSttnState = { htdflSttn: { htdflSttHeadList: htdflSttHeadList, htdflSttNodeList: htdflSttNodeList, - htdflSttnRes:[], - excelList:[], + htdflSttnRes: [], + excelList: [], isInit: false, }, }; -const initFetch = async (code:string|number) => { +const initFetch = async (code: string | number) => { const htdflRes = await getFetch( "wr", `/drain/facilityList/1/20/${code}`) - + return htdflRes; }; @@ -50,74 +50,72 @@ export const htdflSttnActionsExport: (set: any) => htdflSttnActions = ( set: any ) => { return { - initHtdfl: async (code: string | number) => { - try { - const htdflSttnRes = await initFetch(code); - set((state: htdflSttnState) => { - return { - ...state, - htdflSttn: { - ...state.htdflSttn, - htdflSttnRes: htdflSttnRes, - isInit: false, - }, - }; - }); - } catch (error) { - console.log(error); - } + initHtdfl: async (code: string | number) => { + try { + const htdflSttnRes = await initFetch(code); + set((state: htdflSttnState) => { + return { + ...state, + htdflSttn: { + ...state.htdflSttn, + htdflSttnRes: htdflSttnRes, + isInit: false, + }, + }; + }); + } catch (error) { + console.log(error); + } + }, + htdflSttnSearch: async (page: number, total: string, con: string) => { + try { + const htdflSttnRes = await getFetch( + fetchType.WR, + `/drain/facilityList/${page}/${total}/${con}` + ); + if (Number(total) > 9000) { + + + set((state: htdflSttnState) => { + + return { + ...state, + htdflSttn: { + ...state.htdflSttn, + excelList: htdflSttnRes, + }, + }; + }); + } else + set((state: htdflSttnState) => { + return { + ...state, + htdflSttn: { + ...state.htdflSttn, + htdflSttnRes: htdflSttnRes, + isInit: false, + }, + }; + }); + } catch (erTxt) { + console.log("error", erTxt); + } + }, + htdflChSttnHead: async ( + headList: z.infer + ): Promise => { + + const changeNodeList = controlHeadView(headList, htdflSttNodeList) + + return set((state: htdflSttnState) => ({ + htdflSttn: { + ...state.htdflSttn, + htdflSttHeadList: headList, + htdflSttNodeList: changeNodeList, }, - htdflSttnSearch: async (page: number, total: string, con: string) => { - try { - console.log(page) - const htdflSttnRes = await getFetch( - fetchType.WR, - `/drain/facilityList/${page}/${total}/${con}` - ); - if (Number(total) > 9000) { - - - set((state: htdflSttnState) => { + })); + }, - return { - ...state, - htdflSttn: { - ...state.htdflSttn, - excelList: htdflSttnRes, - }, - }; - }); - } else - set((state: htdflSttnState) => { - return { - ...state, - htdflSttn: { - ...state.htdflSttn, - htdflSttnRes: htdflSttnRes, - isInit: false, - }, - }; - }); - } catch (erTxt) { - console.log("error", erTxt); - } - }, - htdflChSttnHead: async ( - headList: z.infer - ): Promise => { - - console.log('head ', headList) - const changeNodeList= controlHeadView(headList,htdflSttNodeList) - - return set((state: htdflSttnState) => ({ - htdflSttn: { - ...state.htdflSttn, - htdflSttHeadList: headList, - htdflSttNodeList: changeNodeList, - }, - })); - }, - } } \ No newline at end of file diff --git a/apps/wr/public/sample_rainSttn.xlsx b/apps/wr/public/sample_rainSttn.xlsx index 006e06aba139750794657eec83dcb725105d9c8d..f00a520cf6e2c26951ab8e345e30d95ce40b631f 100644 GIT binary patch literal 10734 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 U!E_J+z=VAmU}{{&@Y~)009H4^c>n+a literal 9091 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 KCztHc+kXMYgj1FP