108 lines
2.6 KiB
TypeScript
108 lines
2.6 KiB
TypeScript
import { getFetch } from "@/components/ui/api";
|
|
import { DEV_URL_FO } from "@/components/ui/config";
|
|
import type { FacilityInfo, SubsInfo } from "./type";
|
|
|
|
const checkWrRegList = async () => {
|
|
const wrRegList = await getFetch("wr", `/reuseFc/pubFc`);
|
|
return wrRegList;
|
|
};
|
|
|
|
const getRuseFclt = async (
|
|
page: string,
|
|
sggOrCity: string,
|
|
searchTxt?: string
|
|
) => {
|
|
const checkWrRegListRes = await checkWrRegList();
|
|
|
|
let url = `/prcsFclt/ruseInfo/${page ? page : 1}/5/A/${sggOrCity ? sggOrCity : "0"}/0/1/SW`;
|
|
|
|
const ruseList = checkWrRegListRes.data.filter((item: string) => item !== "");
|
|
|
|
if (searchTxt) {
|
|
url = url + `/${searchTxt}`;
|
|
}
|
|
|
|
const response = await fetch(DEV_URL_FO + url, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify(ruseList),
|
|
});
|
|
|
|
const hasuList = await response.json().then((res: any) => {
|
|
const data = res.data
|
|
.map((item: any) => {
|
|
return {
|
|
...item,
|
|
fctCpc: Number(item.fctCpc) || 0,
|
|
searchNm: item.fctNm,
|
|
searchPk: item.bscFctNm,
|
|
};
|
|
})
|
|
.filter((hasu) => ruseList.find((ruse) => hasu.bscFctCd === ruse));
|
|
return { data: data, count: res.count };
|
|
});
|
|
|
|
return hasuList;
|
|
};
|
|
|
|
export type DmMapActions = {
|
|
findRuseFclt(sggOrCity: string, searchTxt: string): void;
|
|
setSubsInfo(subsInfo: SubsInfo[]): void;
|
|
};
|
|
|
|
export type DmMapType = {
|
|
map: {
|
|
ruseFcltList: FacilityInfo[];
|
|
subsInfo: SubsInfo[];
|
|
};
|
|
};
|
|
|
|
export const dmMapState: DmMapType = {
|
|
map: {
|
|
ruseFcltList: [],
|
|
// subsInfo: [
|
|
// {
|
|
// ruseUtztnFcltNm: "수원제1,2 재이용1", // 재이용시설명
|
|
// ruseUtztnFcltCd: "41110PB001R1",
|
|
// },
|
|
// {
|
|
// ruseUtztnFcltNm: "낙양 재이용1", // 재이용시설명
|
|
// ruseUtztnFcltCd: "41150SW001R1",
|
|
// },
|
|
// {
|
|
// ruseUtztnFcltNm: "서남 재이용1", // 재이용시설명
|
|
// ruseUtztnFcltCd: "11500PB001R1",
|
|
// },
|
|
// ],
|
|
subsInfo:[]
|
|
},
|
|
};
|
|
export type DmMapStore = DmMapType & DmMapActions;
|
|
|
|
export const DmMapReducer = (set: any): DmMapActions => {
|
|
return {
|
|
findRuseFclt: async (sggOrCity: string, searchTxt: string) => {
|
|
const ruseFcltList = await getRuseFclt("1", sggOrCity, searchTxt);
|
|
|
|
set((state: DmMapType) => ({
|
|
...state,
|
|
map: {
|
|
...state.map,
|
|
ruseFcltList: ruseFcltList.data,
|
|
},
|
|
}));
|
|
},
|
|
setSubsInfo: async (subsInfo: SubsInfo[]) => {
|
|
set((state: DmMapType) => ({
|
|
...state,
|
|
map: {
|
|
...state.map,
|
|
subsInfo: subsInfo,
|
|
},
|
|
}));
|
|
},
|
|
};
|
|
};
|