From 16bcaf89473364fb4859f6947d2f46874f19093c Mon Sep 17 00:00:00 2001 From: YangJinSoo94 Date: Mon, 30 Jun 2025 14:21:52 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AC=BC=EC=9E=AC=EC=9D=B4=EC=9A=A9=20?= =?UTF-8?q?=EC=82=AC=EB=A1=80=EA=B4=80=EB=A6=AC=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/matMng/coMat/ruseCaseMng/page.tsx | 96 +++++++++++++++++-- .../app/store/matDmd/ruseCaseMng/headList.tsx | 4 +- .../wr/app/store/matDmd/ruseCaseMng/index.tsx | 8 +- 3 files changed, 92 insertions(+), 16 deletions(-) diff --git a/apps/wr/app/matMng/coMat/ruseCaseMng/page.tsx b/apps/wr/app/matMng/coMat/ruseCaseMng/page.tsx index 63d0f662e..436b77736 100644 --- a/apps/wr/app/matMng/coMat/ruseCaseMng/page.tsx +++ b/apps/wr/app/matMng/coMat/ruseCaseMng/page.tsx @@ -7,6 +7,7 @@ import RuseCaseMngExcel from "@/components/ui/modal/coMat/ruseCaseMng/ruseCaseMn import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; import { ContentsDiv, + filePickedBlobArray, SearchDiv, SearchFormLeft, SearchFormRight, @@ -24,7 +25,7 @@ import { useState } from "react"; export default function RuseCaseMng() { const { code, ruseCaseMng, selectRuseCaseMng } = useWrStore((state) => state); const { ruseCaseMngList } = ruseCaseMng; - const [selectSgg, setSelectSgg] = useState([{val: "0", text: "전체"}]); + const [selectSgg, setSelectSgg] = useState([]); const [objSearch, setObjSearch] = useState({ sgg: "", city: "" }); const [sidoCd, setSidoCd] = useState(""); @@ -34,17 +35,19 @@ export default function RuseCaseMng() { // 물재이용사례 조회 const searchRuseCaseMng = async () => { - console.log(selectUtz); - const res = await selectRuseCaseMng(sidoCd, sigunguCd, selectUtz, name); - console.log('res : ', res); + const res = await selectRuseCaseMng( + sidoCd ?? "", + sigunguCd ?? "", + selectUtz[0] ?? "", + name ?? "" + ); } // 시도 선택 const getSelCity = (val: string | number) => { const cityValue = String(val); - const cityText = code.cityCd.find((item: any) => item.cityCd === cityValue)?.text; + const cityText = code.cityCd.find((item: { val: string; text: string }) => item.val === cityValue)?.text; setSidoCd(cityText || ""); - const data = getCity(cityValue, code.sggCd); setSelectSgg(data); setObjSearch({ city: cityValue, sgg: "" }); @@ -53,7 +56,7 @@ export default function RuseCaseMng() { // 시군구 선택 const getSgg = (val: string | number) => { const sggValue = String(val); - const sggText = selectSgg?.find((item: any) => item.sggCd === sggValue)?.sggNm; + const sggText = selectSgg?.find((item: { val: string; text: string }) => item.val === sggValue)?.text; setSigunguCd(sggText || ""); setObjSearch({ ...objSearch, sgg: String(val) }); }; @@ -65,7 +68,82 @@ export default function RuseCaseMng() { // 다운로드 const download = () => { - console.log("다운로드"); + searchRuseCaseMng(); + + fetch(`/sample_ruseCaseMng.xlsx`, {}).then(async (response) => { + if (!response.ok) { + throw Error(response.statusText); + } + // 받은 파일 바인너리 처리 + const blobRet = await response.arrayBuffer(); + + const excelData1 = ruseCaseMngList.map((item) => { + return [ + item.ruseBizNm, + item.bizBgngDate, + item.bizEndDate, + item.splyFcltKnd, + item.splyFcltNm, + item.splyFcltCpct, + item.dmdFcltNm, + item.dmdFcltAddr, + item.ruseFcltCpct, + item.ruseFcltPplLen, + item.ruseFcltUsg, + item.ruseFcltSplyCpct, + item.ruseFcltPrcsMsrc, + item.grnteWqUsg, + item.grnteWqGrssClfg, + item.grnteWqCombResdch, + item.grnteWqTrbt, + item.grnteWqBod, + item.grnteWqSmll, + item.grnteWqCrmty, + item.grnteWqTn, + item.grnteWqTp, + item.grnteWqPh, + item.grnteWqClIonQnt, + item.grnteWqCndctStat, + item.grnteWqRmrk, + item.reqBizGrssCst, + item.reqBizReuseFcltCst, + item.reqBizPplCst, + item.reqBizArchCst, + item.reqBizMchnCst, + item.reqBizMtrngCst, + item.reqBizGisCst, + item.reqBizCctvCst, + item.reqBizCmcnCst, + item.reqBizWstCst, + item.reqBizDesignCst, + item.reqBizSpvsCst, + item.reqBizSbsdCst, + item.reqBizEtc, + item.prcmPlanGrssCst, + item.prcmPlanNlep, + item.prcmPlanLcep, + item.prcmPlanBrdnCst, + item.prcmPlanEcqrRt, + item.clclnGrssCst, + item.clclnNlep, + item.clclnLcep, + item.clclnBrdnCst, + item.clclnEcqrRt, + ]; + }); + + const sheetParameter = [ + { + data: excelData1, + headerNum: 2, + headerRange: 'A1:AX1', + sheetName: '물재이용사례', + startCol: 'A' + } + ]; + // 버퍼에 있는 엑셀데이터 전달 후 json으로 변환 + await filePickedBlobArray(blobRet, '시설정보및운영현황황', sheetParameter); + }); } // 양식받기 @@ -130,7 +208,7 @@ export default function RuseCaseMng() { -