Merge commit 'c1d1c2e27e502cd898d5244b5ebe11a234514800' into iipbs/wr/dev
iipbs_wr / build (push) Waiting to run

This commit is contained in:
leedj312
2025-07-08 14:44:11 +09:00
17 changed files with 229 additions and 139 deletions
+28 -21
View File
@@ -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}
+6 -5
View File
@@ -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;
+5 -2
View File
@@ -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,
+3
View File
@@ -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.