diff --git a/apps/wr/app/matMng/coMng/drgtSttn/page.tsx b/apps/wr/app/matMng/coMng/drgtSttn/page.tsx index 2f07dd6de..af49f02b1 100644 --- a/apps/wr/app/matMng/coMng/drgtSttn/page.tsx +++ b/apps/wr/app/matMng/coMng/drgtSttn/page.tsx @@ -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(); const [selectedSgg, setSelectedSgg] = useState(''); const [excelData, setExcelData] = useState(); - const [num, setNum] = useState(); 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={} + body={} /> diff --git a/apps/wr/app/store/matDmd/drgtSttn/headList.tsx b/apps/wr/app/store/matDmd/drgtSttn/headList.tsx index 1741b7456..dcdc655b5 100644 --- a/apps/wr/app/store/matDmd/drgtSttn/headList.tsx +++ b/apps/wr/app/store/matDmd/drgtSttn/headList.tsx @@ -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(''), diff --git a/apps/wr/app/store/matDmd/drgtSttn/index.tsx b/apps/wr/app/store/matDmd/drgtSttn/index.tsx index 053bb12fc..4211d2d08 100644 --- a/apps/wr/app/store/matDmd/drgtSttn/index.tsx +++ b/apps/wr/app/store/matDmd/drgtSttn/index.tsx @@ -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 { diff --git a/apps/wr/components/ui/modal/coMat/drgtDetailModal.tsx b/apps/wr/components/ui/modal/coMat/drgtDetailModal.tsx index 102292ccf..880c789c3 100644 --- a/apps/wr/components/ui/modal/coMat/drgtDetailModal.tsx +++ b/apps/wr/components/ui/modal/coMat/drgtDetailModal.tsx @@ -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,