Merge commit 'c1d1c2e27e502cd898d5244b5ebe11a234514800' into iipbs/wr/dev
iipbs_wr / build (push) Waiting to run
iipbs_wr / build (push) Waiting to run
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { useWrStore } from "@/app/store";
|
||||
import { btnClass } from "@/app/store/common/code";
|
||||
import { excelCoSttnParsing } from "@/app/store/matDmd/coSttn/excel";
|
||||
import { fetchType, getFetch } from "@/components/lib/api";
|
||||
import {
|
||||
excelDownload,
|
||||
@@ -42,7 +43,6 @@ export default function CoSttn() {
|
||||
updateDemandCompany,
|
||||
coSttnTxtSearch,
|
||||
demandCompList,
|
||||
dmdIsSucees
|
||||
} = useWrStore((state) => state);
|
||||
|
||||
const [bdstTable, setBdstTable] = useState<DemandCompType[]>();
|
||||
@@ -116,31 +116,36 @@ export default function CoSttn() {
|
||||
coSttn.excelList,
|
||||
"수요처 관리",
|
||||
"sample_coSttn.xlsx",
|
||||
"A1:F1",
|
||||
"A1:G1",
|
||||
2
|
||||
);
|
||||
}
|
||||
}, [coSttn.excelList]);
|
||||
|
||||
useEffect(() => {
|
||||
const con = (objSearch.sgg && objSearch.sgg !== "0") ? objSearch.sgg : objSearch.city ? objSearch.city : "0";
|
||||
if(con){
|
||||
coSttnSearch(String(pageNation), "13", String(con));
|
||||
}
|
||||
}, [coSttnSearch, objSearch.city, objSearch.sgg, pageNation]);
|
||||
|
||||
|
||||
const excelClick = useCallback(() => {
|
||||
const con = objSearch.sgg ? objSearch.sgg : objSearch.city;
|
||||
if (con) coSttnSearch("1", "10000", String(con));
|
||||
}, [coSttnSearch, objSearch.city, objSearch.sgg]);
|
||||
// const con = objSearch.sgg ? objSearch.sgg : objSearch.city;
|
||||
// if (con) coSttnSearch("1", "10000", String(con));
|
||||
if(bdstTable){
|
||||
const excelData = excelCoSttnParsing(bdstTable);
|
||||
excelDownload(
|
||||
excelData as [],
|
||||
"수요처 관리",
|
||||
"sample_coSttn.xlsx",
|
||||
"A1:F1",
|
||||
2
|
||||
);
|
||||
}
|
||||
|
||||
// }, [coSttnSearch, objSearch.city, objSearch.sgg]);
|
||||
}, [excelDownload, bdstTable]);
|
||||
const searchClick = () => {
|
||||
const con = (objSearch.sgg && objSearch.sgg !== "0") ? objSearch.sgg : objSearch.city;
|
||||
|
||||
if (con) {
|
||||
if (seartchTxt && seartchTxt?.length > 0) {
|
||||
|
||||
console.log(' seartchTxt ', seartchTxt)
|
||||
coSttnTxtSearch("1", "13", String(con), seartchTxt ?? "");
|
||||
} else {
|
||||
coSttnSearch("1", "13", String(con));
|
||||
@@ -233,7 +238,7 @@ export default function CoSttn() {
|
||||
headName={[]}
|
||||
tableData={bdstTable || []}
|
||||
headlist={coSttn.coSttHeadList}
|
||||
pageSize={bdstTable?.length ? Math.ceil(bdstTable.length / 13) : 0}
|
||||
pageSize={20}
|
||||
total={ coSttnResCount || 0 }
|
||||
cellClick={(index: number | undefined, headId: string) => {
|
||||
setUpdateData(coSttnRes[index as number]);
|
||||
@@ -258,22 +263,24 @@ export default function CoSttn() {
|
||||
getDemandCompList(searchText, pageCnt);
|
||||
}}
|
||||
rtnInputData={ async(data) => {
|
||||
const con = (objSearch.sgg && objSearch.sgg !== "0") ? objSearch.sgg : objSearch.city;
|
||||
|
||||
if(upadateData?.dmdInfoPk){
|
||||
updateDemandCompany(data as DemandCompType)
|
||||
|
||||
await updateDemandCompany(data as DemandCompType)
|
||||
coSttnInit("1", "13", String(con));
|
||||
setIsDmdModal({ isMoal: false, data: data as DemandCompType });
|
||||
}else{
|
||||
const dmd= await getFetch(fetchType.WR,`/reuseFc/request/${data.dmdInfoPk}`)
|
||||
if(dmd) {
|
||||
toast.error(`사업자번호 ${dmd.dmdInfoPk}는 이미 등록되었습니다. 다시등록해주세요`)
|
||||
return
|
||||
}
|
||||
regDemandCompany(data as DemandCompType);
|
||||
}
|
||||
if(dmdIsSucees ==='success'){
|
||||
toast.success(`수요처 등록 및 수정 완료되었습니다..`)
|
||||
setIsDmdModal({ isMoal: false, data: data as DemandCompType });
|
||||
}else{
|
||||
toast.error(`수요처 등록 및 수정 에러입니다.`)
|
||||
await regDemandCompany(data as DemandCompType);
|
||||
coSttnInit("1", "13", String(con));
|
||||
setIsDmdModal({ isMoal: false, data: data as DemandCompType });
|
||||
}
|
||||
|
||||
|
||||
}}
|
||||
bodyClassNm={"w-full mx-auto bg-white rounded-lg shadow-md p-6"}
|
||||
|
||||
@@ -24,9 +24,8 @@ import { BdstReg } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal
|
||||
import { Toaster } from "react-hot-toast";
|
||||
|
||||
export default function Home() {
|
||||
const { code, htdfl, initHtdflReg, getHtdflBdstData ,htdflNmSearch} = useWrStore(
|
||||
(state) => state
|
||||
);
|
||||
const { code, htdfl, initHtdflReg, getHtdflBdstData, htdflNmSearch } =
|
||||
useWrStore((state) => state);
|
||||
const [searchTxt, setSearchTxt] = useState("");
|
||||
const [pageNation, setPageNation] = useState(1);
|
||||
|
||||
@@ -43,26 +42,26 @@ export default function Home() {
|
||||
|
||||
useEffect(() => {
|
||||
if (!htdfl.isInit) {
|
||||
initHtdflReg('0')
|
||||
initHtdflReg("0");
|
||||
}
|
||||
}, [htdfl.isInit, initHtdflReg]);
|
||||
useEffect(() => {
|
||||
if (htdflRes&&htdflRes.length>0) {
|
||||
|
||||
console.log('htdflRes ', htdflRes)
|
||||
if (htdflRes && htdflRes.length > 0) {
|
||||
const htdflData = tableData(htdflRes, { code }).map(
|
||||
(item: customHtdflBdst) => {
|
||||
let archArea = item?.archArea.split('.')[0]!=='-1'?item?.archArea.split('.')[0]:'확인불가'
|
||||
let archArea =
|
||||
item?.archArea.split(".")[0] !== "-1"
|
||||
? item?.archArea.split(".")[0]
|
||||
: "확인불가";
|
||||
|
||||
return {
|
||||
...item,
|
||||
archArea:archArea
|
||||
|
||||
archArea: archArea,
|
||||
};
|
||||
}
|
||||
);
|
||||
setbdstTable(htdflData);
|
||||
}else{
|
||||
} else {
|
||||
setbdstTable([]);
|
||||
}
|
||||
}, [code, htdflRes]);
|
||||
@@ -114,11 +113,10 @@ export default function Home() {
|
||||
<Button
|
||||
size={"sm"}
|
||||
onClick={() => {
|
||||
if(searchTxt&&searchTxt.length>0){
|
||||
htdflNmSearch(String(0),searchTxt)
|
||||
}else{
|
||||
initHtdflReg(String(0) );
|
||||
|
||||
if (searchTxt && searchTxt.length > 0) {
|
||||
htdflNmSearch(String(0), searchTxt);
|
||||
} else {
|
||||
initHtdflReg(String(0));
|
||||
}
|
||||
}}
|
||||
>
|
||||
@@ -175,17 +173,7 @@ export default function Home() {
|
||||
}}
|
||||
/>
|
||||
|
||||
<Toaster position="top-center" />
|
||||
{/* <UiModal
|
||||
bodyClass={""}
|
||||
open={bdstChgProps.isOpen}
|
||||
body={
|
||||
<BdstChgModal chgBuilding={bdstChgProps.chgBuilding}></BdstChgModal>
|
||||
}
|
||||
onOpenChange={(open) => {
|
||||
setBdstChgProps({ ...bdstChgProps, isOpen: open });
|
||||
}}
|
||||
/> */}
|
||||
<Toaster position="top-center" />
|
||||
</ContentsDiv>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -357,7 +357,7 @@ export default function PublicReuseFaciltyInsert() {
|
||||
headlist={pubFacHeadList}
|
||||
pageSize={10}
|
||||
total={100000}
|
||||
headName={"공공 하수처리시설 등록"}
|
||||
headName={"공공 하수처리시설 목록"}
|
||||
cellClick={cellClick}
|
||||
onPageChange={setPageNation}
|
||||
children={undefined}
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function Home() {
|
||||
return state;
|
||||
}
|
||||
);
|
||||
const { rainRes } = rain;
|
||||
const { rainRes,rainResCount } = rain;
|
||||
const [rainForm, setRainForm] = useState<customRainBdst>();
|
||||
const [issNewReg, setIsNewReg] = useState<boolean>(false);
|
||||
const [pageNation, setPageNation] = useState(1);
|
||||
@@ -48,7 +48,10 @@ export default function Home() {
|
||||
}, [rain.isInit, initRain]);
|
||||
|
||||
useEffect(() => {
|
||||
if (code.sggCd.length > 0) {
|
||||
if (code.sggCd.length > 0) {
|
||||
|
||||
if(rainRes&& rainRes.length>0){
|
||||
|
||||
const rainData = tableData(rainRes, { code }).map(
|
||||
(item: customRainBdst) => {
|
||||
let archArea = item?.archArea.split('.')[0]!=='-1'?item?.archArea.split('.')[0]:'확인불가'
|
||||
@@ -62,6 +65,9 @@ export default function Home() {
|
||||
);
|
||||
|
||||
setbdstTable(rainData);
|
||||
}else{
|
||||
setbdstTable([]);
|
||||
}
|
||||
}
|
||||
}, [code, rainRes]);
|
||||
const cellClick: (val: number | undefined, headId: string) => void = (
|
||||
@@ -139,7 +145,7 @@ export default function Home() {
|
||||
tableData={bdstTable || []}
|
||||
headlist={rain.upHeadList}
|
||||
pageSize={20}
|
||||
total={10000}
|
||||
total={rainResCount}
|
||||
headName={"건축물 목록"}
|
||||
cellClick={(val, headId) => {
|
||||
cellClick(val, headId);
|
||||
|
||||
@@ -36,30 +36,36 @@ export default function Home() {
|
||||
isOpen: boolean;
|
||||
chgBuilding: chgBuilding[];
|
||||
}>({ isOpen: false, chgBuilding: [] });
|
||||
const { rswtRes } = rswt;
|
||||
const { rswtRes, rswtResCount } = rswt;
|
||||
useEffect(() => {
|
||||
if (!rswt.isInit) {
|
||||
initRswt("41");
|
||||
}
|
||||
}, [rswt.isInit, initRswt]);
|
||||
useEffect(() => {
|
||||
if (code.sggCd.length > 0 && rswtRes?.length > 0) {
|
||||
const rswtData = tableData(rswtRes, { code })?.map(
|
||||
(item: customRswtBdst) => {
|
||||
let archArea =
|
||||
item?.archArea.split(".")[0] !== "-1"
|
||||
? item?.archArea.split(".")[0]
|
||||
: "확인불가";
|
||||
return {
|
||||
...item,
|
||||
archArea: archArea,
|
||||
bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N",
|
||||
bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd,
|
||||
};
|
||||
}
|
||||
);
|
||||
setbdstTable(rswtData);
|
||||
setRswtForm(rswtRes[selectVal ?? 0]);
|
||||
if (code.sggCd.length > 0) {
|
||||
|
||||
if( rswtRes?.length > 0){
|
||||
const rswtData = tableData(rswtRes, { code })?.map(
|
||||
(item: customRswtBdst) => {
|
||||
let archArea =
|
||||
item?.archArea.split(".")[0] !== "-1"
|
||||
? item?.archArea.split(".")[0]
|
||||
: "확인불가";
|
||||
return {
|
||||
...item,
|
||||
archArea: archArea,
|
||||
bdstChgYn: item.chgBuilding[0]?.bdstChgNm != null ? "Y" : "N",
|
||||
bdstUsgCd: item.reuseBuilding[0]?.bdstUsgCd,
|
||||
};
|
||||
}
|
||||
);
|
||||
setbdstTable(rswtData);
|
||||
setRswtForm(rswtRes[selectVal ?? 0]);
|
||||
}else{
|
||||
setbdstTable([]);
|
||||
setRswtForm({} as customRswtBdst);
|
||||
}
|
||||
}
|
||||
}, [code, rswtRes, selectVal]);
|
||||
const cellClick: (val: number | undefined, headId: string) => void = (
|
||||
@@ -137,7 +143,7 @@ export default function Home() {
|
||||
tableData={bdstTable || []}
|
||||
headlist={rswt.upHeadList}
|
||||
pageSize={20}
|
||||
total={10000}
|
||||
total={rswtResCount}
|
||||
headName={"건축물 목록"}
|
||||
cellClick={cellClick}
|
||||
onPageChange={setPageNation}
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
import type { customCoSttnBdst } from ".";
|
||||
import moment from "moment";
|
||||
|
||||
export const excelCoSttnParsing = (data: customCoSttnBdst[]): string[][] => {
|
||||
export const excelCoSttnParsing = (data: any[]): string[][] => {
|
||||
const excelExportData: string[][] = [];
|
||||
|
||||
data.forEach((item) => {
|
||||
excelExportData.push([
|
||||
String(item.ctpvCd),
|
||||
String(item.sggCd),
|
||||
String(item.cityText)??'',
|
||||
String(item.sggText)??'',
|
||||
item.dmdCoNm ?? "",
|
||||
item.daddr ?? "",
|
||||
String(item.dmdInfoPk ?? ""),
|
||||
item.telno ?? ""
|
||||
item.telno ?? "",
|
||||
moment(item.regDt).format("YYYY-MM-DD") ?? ""
|
||||
]);
|
||||
});
|
||||
return excelExportData;
|
||||
|
||||
@@ -53,6 +53,8 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
|
||||
`/reuseFc/request/${pageNo}/${pageCnt}/${con}`
|
||||
);
|
||||
|
||||
console.log('coSttnRes ', coSttnRes)
|
||||
|
||||
set((state: coSttnState) => {
|
||||
return {
|
||||
...state,
|
||||
@@ -104,7 +106,7 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
|
||||
},
|
||||
coSttnTxtSearch: async (pageNo:string, pageCnt:string, con: string, txt: string) => {
|
||||
try {
|
||||
const coSttnRes = await getFetch(
|
||||
const coSttnRes = await getFetchWithCount(
|
||||
fetchType.WR,
|
||||
`/reuseFc/request/${pageNo}/${pageCnt}/${con}/${txt}`)
|
||||
set((state: coSttnState) => {
|
||||
@@ -112,7 +114,8 @@ export const coSttnActionsExport: (set: any) => coSttnActions = (
|
||||
...state,
|
||||
coSttn: {
|
||||
...state.coSttn,
|
||||
coSttnRes: coSttnRes,
|
||||
coSttnRes: coSttnRes.data,
|
||||
coSttnResCount: coSttnRes.count,
|
||||
isInit: false,
|
||||
}}})
|
||||
} catch (erTxt) {
|
||||
|
||||
@@ -85,7 +85,11 @@ export const buildingToExcelType = (
|
||||
};
|
||||
|
||||
export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
const errors: string[] = [];
|
||||
const rainChkgdData: rainChkZodType[] = excelData.map((item: any) => {
|
||||
|
||||
|
||||
console.log('item ', item)
|
||||
if (item["점검일"] !== undefined) {
|
||||
const checkYmd = item["점검일"].replace(/\./g, "")
|
||||
let vltnDt = item["과태료 부과일(위반일)"]
|
||||
@@ -108,7 +112,7 @@ export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
bdstNm:item["시설명"] ?? "",
|
||||
bdstRuseFcltFk: Number(item["NO"]),
|
||||
chckYmd: checkYmd,
|
||||
spwtPositn: item["유량측정방법"] ?? "",
|
||||
@@ -133,5 +137,66 @@ export const excelToRainChkData = (excelData: any, year: string) => {
|
||||
};
|
||||
}
|
||||
}).filter((el: any) => el !== undefined);
|
||||
return rainChkgdData;
|
||||
|
||||
// ✨ 오류 검사 - 가공된 데이터 기준
|
||||
const isInvalidNumber = (val: any) =>
|
||||
val !== undefined && val !== null && val !== "" && isNaN(Number(val));
|
||||
|
||||
const isInvalidDate = (val: any) =>
|
||||
typeof val === "string" && !/^\d{4}\.\d{2}\.\d{2}$/.test(val.trim());
|
||||
|
||||
const buildErrorMessage = (item: any, issues: string[]): string => {
|
||||
const 시설명 = item.bdstNm ?? "";
|
||||
const 점검일 = item.chckYmd ?? "";
|
||||
const 이용용도 = item.utztnUsgCd ?? "";
|
||||
return `시설명: ${시설명}, 점검일: ${점검일}, 이용용도: ${이용용도} (=> ${issues.join(", ")})`;
|
||||
};
|
||||
|
||||
if (rainChkgdData.length > 0) {
|
||||
rainChkgdData.forEach((rain: any) => {
|
||||
const item = rain.__origin; // 원본 item
|
||||
const issues: string[] = [];
|
||||
|
||||
if (rain.chckYmd && isInvalidDate(rain.chckYmd)) {
|
||||
issues.push(`점검일: 날짜 형식 아님 (${rain.chckYmd})`);
|
||||
}
|
||||
|
||||
if (rain.vltnDt && isInvalidDate(rain.vltnDt)) {
|
||||
issues.push(`과태료 부과일(위반일): 날짜 형식 아님 (${rain.vltnDt})`);
|
||||
}
|
||||
|
||||
// [
|
||||
// "연간운영비(원/년)", "PH", "탁도", "총대장균군수", "과태료부과금액(천원)"
|
||||
// ].forEach((key) => {
|
||||
// if (isInvalidNumber(item[key])) {
|
||||
// issues.push(`${key}: 숫자 형식 아님 (${item[key]})`);
|
||||
// }
|
||||
// }
|
||||
|
||||
// );
|
||||
|
||||
for (let i = 1; i <= 12; i++) {
|
||||
const month = `${i}월`;
|
||||
if (isInvalidNumber(item[`대체_${month}`])) {
|
||||
issues.push(`대체_${month}: 숫자 형식 아님 (${item[`대체_${month}`]})`);
|
||||
}
|
||||
if (isInvalidNumber(item[`빗물_${month}`])) {
|
||||
issues.push(`빗물_${month}: 숫자 형식 아님 (${item[`빗물_${month}`]})`);
|
||||
}
|
||||
}
|
||||
|
||||
if (issues.length > 0) {
|
||||
errors.push(buildErrorMessage(item, issues));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (errors.length > 0) {
|
||||
return { rainChkgdData: [], errors };
|
||||
}
|
||||
|
||||
return { rainChkgdData, errors: [] };
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getFetch, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { getFetch, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { upHeadList, type chgBuilding } from "../rainReg";
|
||||
|
||||
import { z } from "zod";
|
||||
@@ -96,6 +96,7 @@ export type htdflFacState = {
|
||||
isInit: boolean;
|
||||
upHeadList: TableUpperProps[];
|
||||
htdflRes: customHtdflBdst[];
|
||||
htdflResCount:number
|
||||
};
|
||||
};
|
||||
type htdflFacSActions = {
|
||||
@@ -114,19 +115,18 @@ export const htdflFacStateExport: htdflFacState = {
|
||||
isInit: false,
|
||||
upHeadList: htdTableHeadList,
|
||||
htdflRes: htdflRes,
|
||||
htdflResCount:1,
|
||||
},
|
||||
};
|
||||
|
||||
const initFetch = async (code: string) => {
|
||||
|
||||
|
||||
console.log(' initFetch code ', code)
|
||||
let url = `/drain/facilityList/1/20`
|
||||
let url = `/drain/facilityList/1/10`
|
||||
|
||||
url+=`/${code}`
|
||||
|
||||
|
||||
const rswtRes = await getFetch("wr", url);
|
||||
const rswtRes = await getFetchWithCount("wr", url);
|
||||
return rswtRes;
|
||||
};
|
||||
export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
@@ -135,15 +135,16 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
return {
|
||||
getHtdflBdstData: async (pageNation: number, code: string | number) => {
|
||||
try {
|
||||
const rswtRes = await getFetch(
|
||||
const htdflRes = await getFetchWithCount(
|
||||
"wr",
|
||||
`/drain/facilityList/${pageNation}/20/${code}`
|
||||
`/drain/facilityList/${pageNation}/10/${code}`
|
||||
);
|
||||
return set((state: htdflFacState) => ({
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: rswtRes,
|
||||
htdflRes: htdflRes.data,
|
||||
htdflResCount:htdflRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -159,7 +160,8 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: htdflRes,
|
||||
htdflRes: htdflRes.data,
|
||||
htdflResCount:htdflRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
@@ -170,24 +172,21 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
},
|
||||
htdflBdstUpdate: async (data: customHtdflBdst, code: string | number) => {
|
||||
try {
|
||||
|
||||
|
||||
const chData = await makeMdfr(data);
|
||||
const res = await putFectch("/drain/facility", chData);
|
||||
|
||||
if (res.status) {
|
||||
toast.success("온배수 건축물 수정이 완료되었습니다.");
|
||||
}
|
||||
|
||||
const htdflRes = await getFetch(
|
||||
"wr",
|
||||
`/drain/facilityList/1/20/${code}`
|
||||
`/drain/facilityList/1/10/${code}`
|
||||
);
|
||||
set((state: htdflFacState) => ({
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: htdflRes,
|
||||
htdflRes: htdflRes.data,
|
||||
htdflResCount:htdflRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -210,7 +209,8 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: htdflRes,
|
||||
htdflRes: htdflRes.data,
|
||||
htdflResCount:htdflRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -220,14 +220,14 @@ export const htdflFacActionsExport: (set: any) => htdflFacSActions = (
|
||||
}
|
||||
},htdflNmSearch :async(code:string | number, fcltNm:string) =>{
|
||||
try {
|
||||
|
||||
const htdflRes = await getFetch("wr", `/drain/facilityList/1/20/${code}/${fcltNm}`);
|
||||
const htdflRes = await getFetchWithCount("wr", `/drain/facilityList/1/10/${code}/${fcltNm}`);
|
||||
set((state: htdflFacState) => {
|
||||
return {
|
||||
...state,
|
||||
htdfl: {
|
||||
...state.htdfl,
|
||||
htdflRes: htdflRes,
|
||||
htdflRes: htdflRes.data,
|
||||
htdflResCount:htdflRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { TableUpperProps } from "@/app/store/common/type/header";
|
||||
import { getFetch, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { z } from "zod";
|
||||
import { number, z } from "zod";
|
||||
import { makeMdfr, makeRstr } from "../bdstReg";
|
||||
import toast from "react-hot-toast";
|
||||
import { baseReuseBuildingSchema, chgBuildingSchema, validationMessages } from "./type";
|
||||
@@ -74,6 +74,7 @@ export type rainFacState = {
|
||||
isInit: boolean;
|
||||
upHeadList: TableUpperProps[];
|
||||
rainRes: customRainBdst[];
|
||||
rainResCount:number;
|
||||
};
|
||||
};
|
||||
type rainFacSActions = {
|
||||
@@ -90,6 +91,7 @@ export const rainFacStateExport: rainFacState = {
|
||||
rain: {
|
||||
isInit: false,
|
||||
rainRes: rainRes,
|
||||
rainResCount:1,
|
||||
upHeadList: upHeadList,
|
||||
},
|
||||
};
|
||||
@@ -97,7 +99,6 @@ export const rainFacStateExport: rainFacState = {
|
||||
const initFetch = async (code:string|number) => {
|
||||
// const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/1/10/${code}`);
|
||||
const rainRes =await getFetchWithCount("wr", `/reuseFc/rainyInfoList/1/10/${code}`);
|
||||
console.log("데이터", rainRes)
|
||||
return rainRes;
|
||||
};
|
||||
export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
@@ -106,15 +107,15 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
return {
|
||||
getRainData: async(pageNation:number, code:string|number) =>{
|
||||
try{
|
||||
const rainRes =await getFetch("wr", `/reuseFc/rainyInfoList/${pageNation}/10/${code}`);
|
||||
|
||||
|
||||
const rainRes =await getFetchWithCount("wr", `/reuseFc/rainyInfoList/${pageNation}/10/${code}`);
|
||||
|
||||
// 여기서 상태 업데이트
|
||||
return set((state: rainFacState) => ({
|
||||
...state,
|
||||
rain: {
|
||||
...state.rain,
|
||||
rainRes: rainRes,
|
||||
rainRes: rainRes.data,
|
||||
rainResCount:rainRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -135,6 +136,7 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
rain: {
|
||||
...state.rain,
|
||||
rainRes: rainRes.data,
|
||||
rainResCount:rainRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -152,7 +154,8 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
return {
|
||||
rain: {
|
||||
...state.rain,
|
||||
rainRes: rainRes,
|
||||
rainRes: rainRes.data,
|
||||
rainResCount:rainRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
@@ -194,7 +197,8 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
...state,
|
||||
rain: {
|
||||
...state.rain,
|
||||
rainRes: rainRes,
|
||||
rainRes: rainRes.data,
|
||||
rainResCount:rainRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -217,7 +221,8 @@ export const rainFacActionsExport: (set: any) => rainFacSActions = (
|
||||
...state,
|
||||
rain: {
|
||||
...state.rain,
|
||||
rainRes: rainRes,
|
||||
rainRes: rainRes.data,
|
||||
rainResCount:rainRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { getFetch, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { getFetch, getFetchWithCount, postFectch, putFectch } from "@/components/lib/api";
|
||||
import { upHeadList, type chgBuilding } from "../rainReg";
|
||||
|
||||
import type { TableUpperProps } from "@/app/store/common/type/header";
|
||||
@@ -57,6 +57,7 @@ export type rswtFacState = {
|
||||
isInit: boolean;
|
||||
upHeadList: TableUpperProps[];
|
||||
rswtRes: customRswtBdst[];
|
||||
rswtResCount:number;
|
||||
};
|
||||
};
|
||||
type rswtFacSActions = {
|
||||
@@ -78,11 +79,12 @@ export const rswtFacStateExport: rswtFacState = {
|
||||
isInit: false,
|
||||
upHeadList: upHeadList,
|
||||
rswtRes: rswtRes,
|
||||
rswtResCount:1,
|
||||
},
|
||||
};
|
||||
|
||||
const initFetch = async (code: string | number) => {
|
||||
const rswtRes = await getFetch("wr", `/reuseFc/waterreuseFc/1/10/${code}`);
|
||||
const rswtRes = await getFetchWithCount("wr", `/reuseFc/waterreuseFc/1/10/${code}`);
|
||||
return rswtRes;
|
||||
};
|
||||
export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
@@ -95,9 +97,9 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
code: string | number
|
||||
) => {
|
||||
try {
|
||||
const rswtRes = await getFetch(
|
||||
const rswtRes = await getFetchWithCount(
|
||||
"wr",
|
||||
`/reuseFc/waterreuseFc/${pageNation}/20/${code}` +
|
||||
`/reuseFc/waterreuseFc/${pageNation}/10/${code}` +
|
||||
(txt ? `/${txt}` : "")
|
||||
);
|
||||
set((state: rswtFacState) => {
|
||||
@@ -105,7 +107,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
...state,
|
||||
rswt: {
|
||||
...state.rswt,
|
||||
rswtRes: rswtRes,
|
||||
rswtRes: rswtRes.data,
|
||||
rswtResCount:rswtRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
};
|
||||
@@ -116,7 +119,7 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
},
|
||||
getRswtBdstData: async (pageNation: number, code: string | number) => {
|
||||
try {
|
||||
const rswtRes = await getFetch(
|
||||
const rswtRes = await getFetchWithCount(
|
||||
"wr",
|
||||
`/reuseFc/waterreuseFc/${pageNation}/10/${code}`
|
||||
);
|
||||
@@ -126,7 +129,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
...state,
|
||||
rswt: {
|
||||
...state.rswt,
|
||||
rswtRes: rswtRes,
|
||||
rswtRes: rswtRes.data,
|
||||
rswtResCount:rswtRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -141,7 +145,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
...state,
|
||||
rswt: {
|
||||
...state.rswt,
|
||||
rswtRes: rswtRes,
|
||||
rswtRes: rswtRes.data,
|
||||
rswtResCount:rswtRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -160,7 +165,8 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
...state,
|
||||
rswt: {
|
||||
...state.rswt,
|
||||
rswtRes: rswtRes,
|
||||
rswtRes: rswtRes.data,
|
||||
rswtResCount:rswtRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
@@ -198,12 +204,13 @@ export const rswtFacActionsExport: (set: any) => rswtFacSActions = (
|
||||
}else{
|
||||
toast.error("건축물 등록이 완료되었습니다.");
|
||||
}
|
||||
const rainRes = await initFetch(code);
|
||||
const rswtRes = await initFetch(code);
|
||||
set((state: rswtFacState) => ({
|
||||
...state,
|
||||
rain: {
|
||||
...state.rswt,
|
||||
rswtRes: rswtRes,
|
||||
rswtRes: rswtRes.data,
|
||||
rswtResCount:rswtRes.count,
|
||||
isInit: false,
|
||||
},
|
||||
}));
|
||||
|
||||
@@ -125,7 +125,7 @@ export const htdflSttNodeListExport: CommonTableProps[] = [
|
||||
visible: true,
|
||||
row: 1,
|
||||
rowSpan: 1,
|
||||
colSpan: 11,
|
||||
colSpan: 10,
|
||||
},
|
||||
|
||||
{
|
||||
@@ -255,7 +255,7 @@ export const htdflSttNodeListExport: CommonTableProps[] = [
|
||||
{
|
||||
id: "prcsProcsYn",
|
||||
title: "처리공정여부",
|
||||
upName: "prcsProcs",
|
||||
upName: "htdflMngInfo",
|
||||
visible: true,
|
||||
row: 2,
|
||||
rowSpan: 2,
|
||||
|
||||
@@ -343,7 +343,7 @@ export const rainSttNodeListExport: CommonTableProps[] = [
|
||||
id: "filtrTrtmfct",
|
||||
title: "여과등 처리시설",
|
||||
visible: true,
|
||||
upName: "insenInfo",
|
||||
upName: "rainFcltInfo",
|
||||
row: 2,
|
||||
rowSpan: 1,
|
||||
colSpan: 3,
|
||||
|
||||
@@ -66,11 +66,14 @@ export const getFetchWithCount = async (type: string, url: string) => {
|
||||
if (!response.ok) {
|
||||
console.log(`오류 발생: ${response.status}`);
|
||||
}
|
||||
|
||||
const contentType = response.headers.get("content-type") ?? "";
|
||||
|
||||
if (contentType.includes("application/json")) {
|
||||
// JSON 응답 처리
|
||||
const res = await response.json();
|
||||
|
||||
|
||||
return res;
|
||||
} else {
|
||||
// 파일 응답 처리 (ex. PDF, Excel 등)
|
||||
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
SelectBox,
|
||||
Title,
|
||||
} from "@common/business_components/ui";
|
||||
import { Card } from "@common/business_components/ui/chart/lib/card";
|
||||
import { Button, Input } from "@common/components/ui";
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useEffect, useState } from "react";
|
||||
@@ -72,13 +71,25 @@ export default function ChkgdExcel({ type,setIsRegExcel }: { type: string, setI
|
||||
if (file)
|
||||
if (type === "RNB") {
|
||||
filePicked(file, 0).then((res) => {
|
||||
if (res !== undefined)
|
||||
setExcelData(excelToRainChkData(res, form.getValues("chckYr")));
|
||||
if (res !== undefined){
|
||||
|
||||
const excelData = excelToRainChkData(res, form.getValues("chckYr"))
|
||||
|
||||
if( excelData&&excelData.errors.length>0){
|
||||
|
||||
excelData.errors.forEach((err) =>{
|
||||
toast.error(err)
|
||||
})
|
||||
}else{
|
||||
|
||||
setExcelData(excelData.rainChkgdData)
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
} else if (type === "RST") {
|
||||
filePickedArray(file, 0).then((res) => {
|
||||
if (res && res?.length > 1) {
|
||||
const excelArray = [];
|
||||
const guideData = excelToRswtGuideData(
|
||||
res[0],
|
||||
form.getValues("chckYr")
|
||||
@@ -154,6 +165,7 @@ export default function ChkgdExcel({ type,setIsRegExcel }: { type: string, setI
|
||||
|
||||
return;
|
||||
} else {
|
||||
|
||||
rainChkExcelDataUPload(excelData as rainChkZodType[]);
|
||||
setIsRegExcel(false)
|
||||
}
|
||||
|
||||
@@ -13,19 +13,6 @@ export default function HeadChModal({ headList, type }: { headList: z.infer<type
|
||||
|
||||
let items = headList.map(item => ({ id: item.id, title: item.title, val: item.visible }));
|
||||
|
||||
|
||||
/*const form = useForm<z.infer<typeof sttnHeadListType>>({
|
||||
resolver: zodResolver(sttnHeadListType),
|
||||
defaultValues: [],
|
||||
})
|
||||
|
||||
|
||||
useEffect(() =>{
|
||||
form.reset(headList)
|
||||
|
||||
|
||||
},[headList])*/
|
||||
|
||||
const form = useForm<z.infer<typeof sttnHeadListType>>({
|
||||
resolver: zodResolver(sttnHeadListType),
|
||||
defaultValues: headList,
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user