우리동네가뭄 시도, 시군구 조회조건 수정, 테이블에 시도, 시군구 표출 완료
This commit is contained in:
@@ -3,14 +3,13 @@ import { useWrStore } from "@/app/store";
|
||||
import { btnClass } from "@/app/store/common/code";
|
||||
import type { customDrgt } from "@/app/store/matDmd/drgtSttn";
|
||||
import { drgtHeadListExport } from "@/app/store/matDmd/drgtSttn/headList";
|
||||
import { excelDownload, getCity } from "@/components/lib/func/commom";
|
||||
import { getCity } from "@/components/lib/func/commom";
|
||||
import DrgtDetailModal from "@/components/ui/modal/coMat/drgtDetailModal";
|
||||
import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal";
|
||||
import { ContentsDiv, DateMonthPicker, downloadExcel, SearchDiv, SearchFormLeft, SearchFormRight, SelectBox, Title, UiModal, UiTable, type SelectDataType } from "@common/business_components/ui";
|
||||
import { MonthPicker } from "@common/business_components/ui/date_month_picker/mothPicker";
|
||||
import ListDiv from "@common/business_components/ui/list_div";
|
||||
import { Button, DatePicker, Label, ScrollArea } from "@common/components/ui";
|
||||
import { useCallback, useEffect, useState } from "react";
|
||||
import { Button, Label, ScrollArea } from "@common/components/ui";
|
||||
import { useEffect, useState } from "react";
|
||||
import { toast, Toaster } from "react-hot-toast";
|
||||
|
||||
export default function DrgtSttn() {
|
||||
@@ -23,7 +22,6 @@ export default function DrgtSttn() {
|
||||
const [tableData, setTableData] = useState<customDrgt[]>();
|
||||
const [selectedSgg, setSelectedSgg] = useState<string>('');
|
||||
const [excelData, setExcelData] = useState<any[]>();
|
||||
const [num, setNum] = useState<string>();
|
||||
const [drgtModal, setDrgtModal] = useState<{
|
||||
isOpen: boolean;
|
||||
data: customDrgt | undefined;
|
||||
@@ -53,7 +51,23 @@ export default function DrgtSttn() {
|
||||
}, [drgt.isInit, drgtInit]);
|
||||
|
||||
useEffect(() => {
|
||||
const resData = Array.isArray(drgtRes) ? drgtRes : [drgtRes];
|
||||
let resData = Array.isArray(drgtRes) ? drgtRes : [drgtRes];
|
||||
resData = resData.map((item) => {
|
||||
console.log("item", item);
|
||||
if(item.sggNm === '세종시'){
|
||||
return {
|
||||
...item,
|
||||
ctpvCd: '세종특별자치시',
|
||||
sggNm: ''
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
...item,
|
||||
ctpvCd: code.cityCd.find(ct => (ct.text == item.sggNm || (code.sggCd.find(sgg => sgg.text == item.sggNm)?.val.substring(0,2) == ct.val)))?.text,
|
||||
sggNm: code.sggCd.find(sgg => sgg.text == item.sggNm)?.text
|
||||
}
|
||||
})
|
||||
const data = Array.isArray(resData)
|
||||
? resData.map((item: customDrgt) => {
|
||||
return {
|
||||
@@ -67,7 +81,7 @@ export default function DrgtSttn() {
|
||||
}
|
||||
}) : [];
|
||||
setExcelData(data)
|
||||
setTableData(drgtRes)
|
||||
setTableData(resData)
|
||||
}, [drgtRes])
|
||||
|
||||
useEffect(() => {
|
||||
@@ -76,27 +90,14 @@ export default function DrgtSttn() {
|
||||
}
|
||||
}, [drgtMoRes]);
|
||||
|
||||
const getCityVal = (val: string, sggCd: SelectDataType[]) => {
|
||||
const data = sggCd
|
||||
.filter((item) => String(item.val).substring(0, 2) === val)
|
||||
.map((item) => ({
|
||||
val: item.val,
|
||||
text: item.text, // 한국어 텍스트
|
||||
}));
|
||||
return data;
|
||||
};
|
||||
|
||||
const getSelCity = (val: string | number) => {
|
||||
const cityValue = String(val);
|
||||
const data = getCityVal(cityValue, code.sggCd);
|
||||
const cityValue = String(val); // Ensure val is treated as a string
|
||||
const data = getCity(cityValue, code.sggCd);
|
||||
setSelectSgg(data);
|
||||
|
||||
const sggVal = data.length > 0 ? data[0].val : '';
|
||||
setSelectedSgg(sggVal); // 시군구 value 세팅
|
||||
setObjSearch({ city: cityValue, sgg: sggVal });
|
||||
setObjSearch({ city: cityValue, sgg: "" });
|
||||
};
|
||||
|
||||
const getSgg = (val: string | number) => {
|
||||
setSelectedSgg(String(val));
|
||||
setObjSearch({ ...objSearch, sgg: String(val) });
|
||||
};
|
||||
|
||||
@@ -181,19 +182,22 @@ export default function DrgtSttn() {
|
||||
size={"sm"}
|
||||
onClick={(e) => {
|
||||
let sidoText = '';
|
||||
let sggText = '';
|
||||
let sggText = [];
|
||||
|
||||
if (objSearch?.city.toString().length > 0) {
|
||||
sidoText = code.cityCd.find((item) => item.val === objSearch?.city)?.text ?? '';
|
||||
}
|
||||
if (objSearch?.sgg.toString().length > 1) {
|
||||
sggText = code.sggCd.find((item) => item.val === objSearch?.sgg)?.text ?? '';
|
||||
} else {
|
||||
sggText = code.sggCd.filter((item) => item.val.substring(0, 2) === objSearch?.city).map((item) => item.text);
|
||||
|
||||
}
|
||||
if (sidoText === '세종특별자치시') {
|
||||
sidoText = '세종시';
|
||||
sggText = sidoText;
|
||||
}
|
||||
drgtSearch(fromDate ?? "", toDate ?? "", sidoText, sggText)
|
||||
drgtSearch(fromDate ?? "", toDate ?? "", [sidoText, ...sggText])
|
||||
}}
|
||||
>
|
||||
조회
|
||||
@@ -249,7 +253,7 @@ export default function DrgtSttn() {
|
||||
setDrgtModal({ ...drgtModal, isOpen: !drgtModal.isOpen });
|
||||
}}
|
||||
bodyClass={"w-[50vw] max-w-none h-[80vh]"}
|
||||
body={<DrgtDetailModal data={drgtModal.data} /*formObj={drgtModal.data}*/ />}
|
||||
body={<DrgtDetailModal data={drgtModal.data}/>}
|
||||
/>
|
||||
<Toaster position="top-center" />
|
||||
</ContentsDiv>
|
||||
|
||||
@@ -2,8 +2,8 @@ import { z } from "zod";
|
||||
import type { CommonTableProps } from "../../common/type/header";
|
||||
|
||||
export const drgtZod = z.object({
|
||||
ctpvCd: z.string().default(''),
|
||||
sggNm: z.string().default(''),
|
||||
ctpvCd: z.string().default('').nullish(),
|
||||
sggNm: z.string().default('').nullish(),
|
||||
normal: z.string().default(''),
|
||||
attention: z.string().default(''),
|
||||
caution: z.string().default(''),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { fetchType, getFetch } from "@/components/lib/api";
|
||||
import { fetchType, getFetch, postFectch } from "@/components/lib/api";
|
||||
import type { CommonTableProps } from "../../common/type/header";
|
||||
import { drgtHeadListExport, drgtZod } from "./headList";
|
||||
import type { z } from "zod";
|
||||
@@ -20,7 +20,7 @@ export type drgtState = {
|
||||
|
||||
type drgtActions = {
|
||||
drgtInit: () => void
|
||||
drgtSearch: (fromDate: string, toDate: string, sido: string, sgg: string) => void
|
||||
drgtSearch: (fromDate: string, toDate: string, sido: string[]) => void
|
||||
drgtModalSearch: (fromDate: string, toDate: string, sgg: string) => void
|
||||
};
|
||||
|
||||
@@ -35,27 +35,20 @@ export const drgtStateExport: drgtState = {
|
||||
}
|
||||
}
|
||||
|
||||
const initFetch = async (fromDate: string, toDate: string, sido: string, sgg: string) => {
|
||||
|
||||
let searchUrl = "";
|
||||
|
||||
if (sido === "" || sido === "전체") {
|
||||
searchUrl = `/il/getDataCount/${fromDate}/${toDate}`;
|
||||
} else {
|
||||
searchUrl = `/il/getDataCount/${fromDate}/${toDate}/${sido}/${sgg}`;
|
||||
}
|
||||
|
||||
const drgtData = await getFetch(
|
||||
fetchType.WR,
|
||||
searchUrl
|
||||
);
|
||||
const initFetch = async (fromDate: string, toDate: string, sido:string[]) => {
|
||||
console.log("sido",sido)
|
||||
const drgtData = await postFectch(
|
||||
`/il/getDataCount/${fromDate}/${toDate}`,
|
||||
sido,
|
||||
fetchType.WR
|
||||
);
|
||||
|
||||
//주의, 관심, 정상 추출
|
||||
const statusData = Array.from(
|
||||
new Set(drgtData.map((e) => e.lvngMfgUswtrDrgtInfo))
|
||||
new Set(drgtData.data.map((e) => e.lvngMfgUswtrDrgtInfo))
|
||||
);
|
||||
|
||||
const statusMap = drgtData.reduce((acc: any, { sggNm, lvngMfgUswtrDrgtInfo: status, countDrgt }: { sggNm: string; lvngMfgUswtrDrgtInfo: string; countDrgt: number }) => {
|
||||
const statusMap = drgtData.data.reduce((acc: any, { sggNm, lvngMfgUswtrDrgtInfo: status, countDrgt }: { sggNm: string; lvngMfgUswtrDrgtInfo: string; countDrgt: number }) => {
|
||||
if (!acc[sggNm]) {
|
||||
acc[sggNm] = { sggNm, ...Object.fromEntries(statusData.map((e) => [e, 0])) };
|
||||
}
|
||||
@@ -110,7 +103,7 @@ export const drgtActionsExport: (set: any) => drgtActions = (
|
||||
const toDate = formatted;
|
||||
|
||||
//FIXME: 페이지 처음 로딩될때 데이터 보려고 6월로 박아놓음 이거 fromDate로 고치기
|
||||
const drgtRes = await initFetch("202506", toDate, "", "");
|
||||
const drgtRes = await initFetch("202506", toDate, []);
|
||||
set((state: drgtState) => {
|
||||
return {
|
||||
...state,
|
||||
@@ -125,10 +118,9 @@ export const drgtActionsExport: (set: any) => drgtActions = (
|
||||
console.log(e)
|
||||
}
|
||||
},
|
||||
drgtSearch: async (fromDate: string, toDate: string, sido: string, sgg: string) => {
|
||||
drgtSearch: async (fromDate: string, toDate: string, sido: string[]) => {
|
||||
try {
|
||||
|
||||
const drgtRes = await initFetch(fromDate, toDate, sido, sgg);
|
||||
const drgtRes = await initFetch(fromDate, toDate, sido);
|
||||
|
||||
set((state: drgtState) => {
|
||||
return {
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
import { btnClass } from "@/app/store/common/code"
|
||||
import type { customDrgt } from "@/app/store/matDmd/drgtSttn"
|
||||
import { drgtDetailHeadListExport } from "@/app/store/matDmd/drgtSttn/headList"
|
||||
import { excelDownload } from "@/components/lib/func/commom"
|
||||
import { downloadExcel, Title, UiTable } from "@common/business_components/ui"
|
||||
import ListDiv from "@common/business_components/ui/list_div"
|
||||
import { Button, ScrollArea } from "@common/components/ui"
|
||||
import { useCallback, useEffect, useState } from "react"
|
||||
import { useEffect, useState } from "react"
|
||||
|
||||
export default function DrgtDetailModal({
|
||||
data,
|
||||
|
||||
Reference in New Issue
Block a user