물재이용 사례관리 조회기능완료
iipbs_wr / build (push) Waiting to run

This commit is contained in:
YangJinSoo94
2025-06-30 14:21:52 +09:00
parent 1c603efc62
commit 16bcaf8947
3 changed files with 92 additions and 16 deletions
+87 -9
View File
@@ -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<SelectDataType[] | []>([{val: "0", text: "전체"}]);
const [selectSgg, setSelectSgg] = useState<SelectDataType[] | []>([]);
const [objSearch, setObjSearch] = useState<objSearchType>({ sgg: "", city: "" });
const [sidoCd, setSidoCd] = useState<string>("");
@@ -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() {
<Button size={"sm"} onClick={() => { setIsExcelOpen({ isModal: true }); }}>
엑셀등록
</Button>
<Button size={"sm"} onClick={() => {}}>
<Button size={"sm"} onClick={() => { download() }}>
다운로드
</Button>
<Button size={"sm"} onClick={() => { sampleDownLoad() }}>
@@ -110,7 +110,7 @@ export const ruseCaseHeadListExport: TableUpperProps[] = [
title: "보증수질",
visible: true,
row: 0,
colSpan: 14,
colSpan: 13,
},
{
id: "grnteWqUsg",
@@ -205,7 +205,7 @@ export const ruseCaseHeadListExport: TableUpperProps[] = [
},
{
id: "reqBizReuseFcltCst",
title: "토목재이용시설",
title: "토목재이용시설",
visible: true,
row: 1,
},
@@ -6,7 +6,7 @@ import { ToastFormUi } from "@/components/ui/toast/toastFromUi";
export type ruseCaseState = {
ruseCaseMng: {
ruseHeadList:TableUpperProps[];
ruseCaseMngList:TableUpperProps[];
ruseCaseMngList:ruseCaseMngExcelProps[];
};
};
@@ -69,15 +69,13 @@ type ruseCaseActions = {
};
export const fetchSearchRuseCaseMng = async (sidoCd: string, sigunguCd: string, usageCd : string, name: string) => {
const tailUrl = (sidoCd && !sigunguCd ? `/${sigunguCd}` : sigunguCd ? `/${sigunguCd}` : '/0') + (usageCd ? `/${usageCd}` : '') + (name ? `/${name}` : '');
console.log('tailUrl : ', tailUrl);
const tailUrl = ((sigunguCd !== '전체' && sigunguCd !=='') ? `/${sigunguCd}` : (sidoCd != '전체' && sidoCd != '') ? `/${sidoCd}` : `/0`) + (usageCd? `/${usageCd}` : '/0') + (name? `/${name}` : '');
const resp = await getFetch(fetchType.WR,`/reuseFc/pubFcRuseCase${tailUrl}`);
console.log('resp : ', resp);
return resp;
};
export const fetchInsertRuseCaseMng = async (data: any) => {
console.log('data : ', data)
const response = await postFectch('/reuseFc/pubFcRuseCase', data, fetchType.WR);
return response.data;
};