From 41979c945a21877a233a8b25f8d013eb7649bdd3 Mon Sep 17 00:00:00 2001 From: jyha00 Date: Fri, 20 Jun 2025 14:23:33 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=A0=EC=9E=AC=EC=88=98=EC=9A=94=EC=B2=98?= =?UTF-8?q?=20=EC=97=91=EC=85=80=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wr/app/matMng/coMng/ldrmntCoSttn/page.tsx | 86 +++++++++++++++---- .../app/store/matDmd/ldrmntCoSttn/index.tsx | 37 +++++--- 2 files changed, 94 insertions(+), 29 deletions(-) diff --git a/apps/wr/app/matMng/coMng/ldrmntCoSttn/page.tsx b/apps/wr/app/matMng/coMng/ldrmntCoSttn/page.tsx index bd48782aa..f5dffbf8b 100644 --- a/apps/wr/app/matMng/coMng/ldrmntCoSttn/page.tsx +++ b/apps/wr/app/matMng/coMng/ldrmntCoSttn/page.tsx @@ -15,6 +15,7 @@ import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/b import CoDetailModal from "@/components/ui/modal/sttn/sttnDetailModal/coDatailModal"; import { ContentsDiv, + downloadExcel, SearchDiv, SearchFormLeft, SearchFormRight, @@ -34,7 +35,7 @@ export default function LdrmntCoSttn() { const { code, ldrmnt, ldrmntInit, ldrmntSearch, } = useWrStore( (state) => state ); - const { ldrmntRes } = ldrmnt; + const { ldrmntRes, excelList } = ldrmnt; const [detailModal, setDetailModal] = useState<{ isOpen: boolean, data: customLdrmnt | undefined }>({ data: undefined, isOpen: false }) const [pageNation, setPageNation] = useState(1); const [selectSgg, setSelectSgg] = useState() @@ -42,7 +43,8 @@ export default function LdrmntCoSttn() { const [bdstTable, setBdstTable] = useState(); const [searchTxt, setSearchTxt] = useState(); const ref = useRef({} as ReturnType); - const codeData = getCityOrSgg(ref); + const [excelData, setExcelData] = useState(); + const excelClick = useCallback(() => { excelDownload( @@ -54,6 +56,15 @@ export default function LdrmntCoSttn() { ); }, []); + const excelDownloadClick = () => { + downloadExcel({ + data: excelData ?? [], + fileName: "잠재수요처 관리", + sheetNameArray: ["Sheet1"], + headerRange: "A1:F1" + }) + } + const [isExcelOpen, setIsExcelOpen] = useState<{ isModal: boolean; }>({ isModal: false }); @@ -78,7 +89,7 @@ export default function LdrmntCoSttn() { useEffect(() => { if (!ldrmnt.isInit) { - ldrmntInit(codeData ?? "0"); + ldrmntInit("0"); } }, [ldrmnt.isInit, ldrmntInit]); @@ -88,15 +99,61 @@ export default function LdrmntCoSttn() { const tbData = Array.isArray(data) ? data.map((item: customLdrmnt) => ({ ...item, - ctpvCd: item.fctryAddr.split(" ")[0] || "", + ctpvCd: item.fctryAddr.split(" ")[0] || "", sggCd: item.fctryAddr.split(" ")[1] || "" - + })) : []; - + setBdstTable(tbData); }, [ldrmntRes, code]); + useEffect(() => { + const transData = Array.isArray(excelList) ? excelList : [excelList]; + const exData = tableData(transData, { code }); + const data = Array.isArray(exData) + ? exData.map((item: customLdrmnt) => { + return { + "시도": item.fctryAddr.split(" ")[0] || "", + "시군구": item.fctryAddr.split(" ")[1] || "", + "회사명": item.dmdCoNm, + "공장주소": item.fctryAddr, + "공장관리번호": item.fctryMngNo, + "전화번호": item.telno + } + }) : []; + setExcelData(data) + }, [excelList]) + + + useEffect(() => { + let cityTxt = ''; + let sggTxt = ''; + + if (objSearch?.city.toString().length > 0) { + cityTxt = code.cityCd.find((item) => item.val === objSearch?.city)?.text ?? ''; + } + + if (objSearch?.sgg.toString().length > 1) { + sggTxt = code.sggCd.find((item) => item.val === objSearch?.sgg)?.text ?? ''; + } + + let cityNm = ""; + + if (sggTxt !== "0") { + cityNm = cityTxt + " " + sggTxt; + } else { + cityNm = cityTxt; + } + + if (cityNm) { + if (cityTxt === '') cityNm = "0"; + ldrmntSearch(pageNation, cityNm, searchTxt || ""); + } else { + ldrmntSearch(pageNation, "", searchTxt || ""); + } + }, [pageNation, objSearch, code, searchTxt, ldrmntSearch]) + return ( <> @@ -148,18 +205,17 @@ export default function LdrmntCoSttn() { sggTxt = code.sggCd.find((item) => item.val === objSearch?.sgg)?.text ?? ''; } - let url = "" + let cityNm = "" if (sggTxt !== "0") { - url = cityTxt + " " + sggTxt + cityNm = cityTxt + " " + sggTxt } else { - url = cityTxt + cityNm = cityTxt } - - if (url) { - if(cityTxt === '') url = "0"; - ldrmntSearch(url, searchTxt || ""); + if (cityNm) { + if (cityTxt === '') cityNm = "0"; + ldrmntSearch(pageNation, cityNm, searchTxt || ""); } }} > @@ -177,9 +233,7 @@ export default function LdrmntCoSttn() { diff --git a/apps/wr/app/store/matDmd/ldrmntCoSttn/index.tsx b/apps/wr/app/store/matDmd/ldrmntCoSttn/index.tsx index f5005654d..d1176528a 100644 --- a/apps/wr/app/store/matDmd/ldrmntCoSttn/index.tsx +++ b/apps/wr/app/store/matDmd/ldrmntCoSttn/index.tsx @@ -19,16 +19,22 @@ export type ldrmntState = { ldrmnt: { ldrmntHeadList: CommonTableProps[]; ldrmntNodeList: CommonTableProps[]; - excelList: []; + excelList: ExcelType[]; isInit: boolean; ldrmntRes: customLdrmnt[]; }; }; +type ExcelType = { + [key: string]: string | number | undefined; +}; + +const excelDownList: ExcelType[] = []; + type ldrmntActions = { ldrmntRegData: (data: any[]) => void, ldrmntInit: (con: string) => void - ldrmntSearch: (sggCd: string, coNm: string) => void; + ldrmntSearch: (page: number, sggCd: string, coNm: string) => void; ldrmntUpdate: (ldrmntRes: customLdrmnt) => void; ldrmntDelete: () => void; }; @@ -51,12 +57,10 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = ( return { ldrmntInit: async (con: string) => { try { - console.log("con", con) const ldrmntRes = await getFetch( fetchType.WR, `/reuseFc/request/temp/1/20/${con}` ); - console.log("initres", ldrmntRes) set((state: ldrmntState) => { return { ...state, @@ -73,7 +77,6 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = ( }, ldrmntRegData: async (data) => { try { - const response = await postFectch( "/reuseFc/request/temp", data, @@ -98,32 +101,41 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = ( } }, - ldrmntSearch: async (sggCd: string, coNm: string) => { + ldrmntSearch: async (page: number, sggCd: string, coNm: string) => { let searchUrl = ""; - console.log("인덱스", sggCd) if (sggCd !== "") { if (coNm !== "") { - searchUrl = `/reuseFc/request/temp/1/20/${sggCd}/${coNm}`; + searchUrl = `/reuseFc/request/temp/${page}/20/${sggCd}/${coNm}`; } else { - searchUrl = `/reuseFc/request/temp/1/20/${sggCd}`; + searchUrl = `/reuseFc/request/temp/${page}/20/${sggCd}`; } } - console.log("searchUrl", searchUrl) - try { const ldrmntRes = await getFetch( fetchType.WR, searchUrl ); - console.log("search", ldrmntRes) + + ldrmntRes.forEach((item: customLdrmnt) => { + excelDownList.push({ + ctpvCd: item.ctpvCd, + sggCd: item.sggCd, + dmdCoNm: item.dmdCoNm, + fctryAddr: item.fctryAddr, + fctryMngNo: item.fctryMngNo, + telno: item.telno, + }) + }) + set((state: ldrmntState) => { return { ...state, ldrmnt: { ...state.ldrmnt, ldrmntRes: ldrmntRes, + excelList: excelDownList, }, } }) @@ -134,7 +146,6 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = ( ldrmntUpdate: async (ldrmntRes: customLdrmnt) => { try { ldrmntRes.rgtr = TEST_UUID; - console.log("ldrmntRes", ldrmntRes); const response = await putFectch( `/reuseFc/request/temp`, ldrmntRes