수요매칭 검토 put 테스트 완료

This commit is contained in:
leedj312
2025-06-18 09:45:11 +09:00
parent a3e2d2b43c
commit efae3210e4
7 changed files with 958 additions and 763 deletions
File diff suppressed because it is too large Load Diff
@@ -249,4 +249,16 @@ export const coModalHeadListExport: CommonTableProps[] = [
rowSpan: 1,
colSpan: 1,
},
]
export const usageProcData =[
{ usage: "청소", process: "총인처리시설 + 염소소독" },
{ usage: "화장실용수", process: "총인처리시설 + 염소소독" },
{ usage: "세척", process: "총인처리시설 + UV소독" },
{ usage: "살수", process: "총인처리시설 + UV소독" },
{ usage: "조경", process: "총인처리시설 + UV소독" },
{ usage: "농업", process: "총인처리시설 + UV소독" },
{ usage: "하천", process: "총인처리시설 + UV소독" },
{ usage: "지하수", process: "전처리시설 + RO" },
{ usage: "공업", process: "전처리시설 + RO" },
]
+61 -13
View File
@@ -2,8 +2,9 @@ import type { z } from "zod";
import type { sttnHeadListType } from "../coSttn/headList";
import { coRvwHeadListExport, coRvwNodeListExport } from "./headList";
import type { CommonTableProps } from "../../common/type/header";
import type { DmdCoReqType } from "./type";
import { fetchType, getFetch } from "@/components/lib/api";
import type { DedMatUpdateType, DmdCoReqType } from "./type";
import { fetchType, getFetch, putFectch } from "@/components/lib/api";
import toast from "react-hot-toast/headless";
const coRvwHeadList = coRvwHeadListExport;
const coRvwNodeList = coRvwNodeListExport;
@@ -30,35 +31,82 @@ export type coRvwType = coRvwState & coRvwActions;
type coRvwActions = {
coMatRvwInit: (
pageCnt: number,
pageNo: number,
sggCd: string,
pageCnt: number,
startYear: string,
endYear: string
) => void;
endYear: string,
sggCd: string
) => void,
coMatRvwUpdate: (
splyCd: string,
dmdCd: string,
data: DedMatUpdateType
)=>void
};
const coMatInit = async (
pageNo: number,
pageCnt: number,
startYear: string,
endYear: string,
sggCd: string
) => {
const url = `/reuseFc/request/infoList/${pageNo}/${pageCnt}/${startYear}/${endYear}/${sggCd}`;
const coMatRvwRes = await getFetch(fetchType.WR, url);
return coMatRvwRes;
};
export const coRvwActionsExport: (set: any) => coRvwActions = (set: any) => {
return {
coMatRvwInit: async (
pageCnt: number,
pageNo: number,
sggCd: string,
pageCnt: number,
startYear: string,
endYear: string
endYear: string,
sggCd: string
) => {
const tempData = `/reuseFc/request/10000000000000`;
const url = `/reuseFc/request/${pageNo}/${pageCnt}/${sggCd}/${startYear}/${endYear}}`;
const coMatRvwRes = await getFetch(fetchType.WR, tempData);
const url = `/reuseFc/request/infoList/${pageNo}/${pageCnt}/${startYear}/${endYear}/${sggCd}`;
const coMatRvwRes = await getFetch(fetchType.WR, url);
return set((state: coRvwState) => ({
...state,
coRvw: {
...state.coRvw,
init: false,
coMatRvwRes: [coMatRvwRes],
coMatRvwRes: coMatRvwRes,
},
}));
},
coMatRvwUpdate: async (
splyCd: string,
dmdCd: string,
data: DedMatUpdateType
) => {
try {
const isUpdate = await putFectch(
`/reuseFc/request/cst/${splyCd}/${dmdCd}`,
data
);
const coMatRvwRes = coMatInit(
1,
10,
new Date().getFullYear().toString(),
new Date().getFullYear().toString(),
"11"
);
return set((state: coRvwState) => ({
...state,
coRvw: {
...state.coRvw,
init: false,
coMatRvwRes: coMatRvwRes,
},
}));
} catch (e) {
toast.error("매칭 검토 저장 오류입니다.");
}
},
};
};
+88 -40
View File
@@ -1,40 +1,43 @@
import { z } from "zod";
const DmdInfoSchema = z.object({
dmdInfoSn: z.number(),
dmdInfoFk: z.string(),
dmndTmng: z.coerce.date(),
dmndQty: z.number(),
wntUntprc: z.number(),
grssClfg: z.number(),
combResdch: z.number(),
trbt: z.number(),
blgcOxygDmndQnt: z.number(),
smll: z.number(),
crmty: z.number(),
tn: z.number(),
tph: z.number(),
ph: z.number(),
clIonQnt: z.number(),
cdtnv: z.number(),
rmrk: z.string(),
useUsgCd: z.string(),
});
const DmdMatSchema = z.object({
dmdInfoFk: z.string(),
splyFcltFk: z.string(),
splyFcltFlg: z.string(),
pbnstRuseFcltBizFk: z.number(),
splyBgngDay: z.coerce.date(),
splyEndDay: z.coerce.date(),
splyCpct: z.number(),
splyFmYn: z.string(),
useUsgCd: z.string(),
});
export const DmdCoReqSchema =
z.object({
cityText:z.string().nullish(),
sggText:z.string().nullish(),
const DemandInfoSchema = z.object({
dmdInfoSn: z.number(),
dmdInfoFk: z.string(),
dmndTmng: z.coerce.date(),
dmndQty: z.number(),
wntUntprc: z.number(),
grssClfg: z.number(),
combResdch: z.number(),
trbt: z.number(),
blgcOxygDmndQnt: z.number(),
smll: z.number(),
crmty: z.number(),
tn: z.number(),
tph: z.number(),
ph: z.number(),
clIonQnt: z.number(),
cdtnv: z.number(),
rmrk: z.string(),
useUsgCd: z.string(),
mtchnCmptnYmd: z.string(),
rvwCmptnYmd: z.string()
});
const DemandMatchingSchema = z.object({
dmdInfoFk: z.string(),
splyFcltFk: z.string(),
splyFcltFlg: z.string(),
pbnstRuseFcltBizFk: z.number(),
splyBgngDay: z.coerce.date(),
splyEndDay: z.coerce.date(),
splyCpct: z.number(),
splyFmYn: z.string(),
useUsgCd: z.string(),
dmdInfoSn: z.number(),
splyCndtList:z.array(z.string())
});
const DemandCoSchema = z.object({
dmdInfoPk: z.string(),
dmdCoNm: z.string(),
ctpvCd: z.string(),
@@ -51,11 +54,45 @@ export const DmdCoReqSchema =
mdfcnDt: z.coerce.date(),
mdfr: z.string(),
dmdAplyPswd: z.string(),
demandInfo: z.array(DmdInfoSchema),
demandMatchings: z.array(DmdMatSchema),
})
demandInfo: z.array(DemandInfoSchema).nullish(), // 안쓰는 거임
demandMatchings: z.array(DemandMatchingSchema).nullish()// 안쓰는 거임
});
const DemandCstSchema = z.object({
dmdInfoSn: z.number(),
usgPrcsProcs: z.string(),
cstrnCst: z.number(),
fcltSbsdEpsTrf: z.number(),
prcsFcltCpctCstrnCst: z.number()
});
export const DmdCoReqSchema = z.object({
cityText:z.string().nullish(),
sggText:z.string().nullish(),
dmdInfoSn: z.number(),
dmdInfoFk: z.string(),
dmndTmng: z.coerce.date(),
dmndQty: z.number(),
wntUntprc: z.number(),
grssClfg: z.number(),
combResdch: z.number(),
trbt: z.number(),
blgcOxygDmndQnt: z.number(),
smll: z.number(),
crmty: z.number(),
tn: z.number(),
tph: z.number(),
ph: z.number(),
clIonQnt: z.number(),
cdtnv: z.number(),
rmrk: z.string(),
useUsgCd: z.string(),
mtchnCmptnYmd: z.string(),
rvwCmptnYmd: z.string(),
demandCo: DemandCoSchema,
demandMatching: DemandMatchingSchema,
demandCst: DemandCstSchema
});
export type DmdCoReqType = z.infer<typeof DmdCoReqSchema>;
@@ -67,4 +104,15 @@ export type DmdMatTableType = {
telno:string,
regDt:string,
state:string
}
export type DedMatUpdateType =
{
dmdInfoSn: number;
usgPrcsProcs: string;
cstrnCst: number;
fcltSbsdEpsTrf: number;
prcsFcltCpctCstrnCst: number;
rgtr: string;
}
+21 -5
View File
@@ -14,7 +14,7 @@ export const getCity = (val: string, sggCd: SelectDataType[]) => {
val: item.val,
text: item.text, // 한국어 텍스트
}));
data.unshift({val:'0',text:'전체'})
data.unshift({ val: "0", text: "전체" });
return data;
};
@@ -95,8 +95,6 @@ export const excelArrayDownload = (
});
};
// onchange 텍스트를 숫자로 and ,제거
export const handleCommaNumberChange = (
e: React.ChangeEvent<HTMLInputElement>,
@@ -126,7 +124,6 @@ export const getCityOrSgg = (ref: RefObject<ReturnType>) => {
return con;
};
export const safeDate = (value: any): Date | undefined => {
const date = new Date(value);
return isNaN(date.getTime()) ? undefined : date;
@@ -139,4 +136,23 @@ export const yearOptions: { val: string; text: string }[] = Array.from(
val: String(1970 + i),
text: `${1970 + i}년`,
})
);
);
export const getdmdMatFlag = (flag: string) => {
let flagMat = "";
switch (flag) {
case "Init":
flagMat = "신청";
break;
case "Sub":
flagMat = "검토";
break;
case "Matched":
flagMat = "완료";
break;
default :
flagMat = "";
break;
}
return flagMat;
};
@@ -0,0 +1,28 @@
import {
Label,
Popover,
PopoverContent,
PopoverTrigger,
} from "@common/components";
export default function BizTotalMoneyPop({
children,
}: {
children: React.ReactNode;
}) {
return (
<>
<Popover>
<PopoverTrigger>{children}</PopoverTrigger>
<PopoverContent className="w-[22vw]">
<div className="!w-full justify-center flex items-center">
<div className=" items-center font-bold mb-1 !text-3xl">총사업비 계산방법</div>
<div className=" items-center !text-2xl">
하수처리수 재이용시설 총 사업비 = 공사비+시설부대경비{" "}
</div>
</div>
</PopoverContent>
</Popover>
</>
);
}
@@ -0,0 +1,30 @@
import { usageProcData } from "@/app/store/matDmd/coMatRvw/headList";
import { UiTable } from "@common/business_components/ui";
import { Popover, PopoverContent, PopoverTrigger } from "@common/components";
import { Children } from "react";
export default function UsageProcData({ children }: { children: React.ReactNode }) {
return (
<>
<Popover>
<PopoverTrigger>{children}</PopoverTrigger>
<PopoverContent className="w-[25vw] max-w-none h-[54vh]">
<UiTable
className=""
headName={"용도에 따른 처리공정"}
tableData={usageProcData}
headlist={[
{ id: "usage", title: "용도" },
{ id: "process", title: "단위공정" },
]}
pageSize={0}
total={0}
cellClick={() => {}}
onPageChange={() => {}}
/>
</PopoverContent>
</Popover>
</>
);
}