From efae3210e489549d6452ef09fc38f9d332742d9f Mon Sep 17 00:00:00 2001 From: leedj312 Date: Wed, 18 Jun 2025 09:45:11 +0900 Subject: [PATCH] =?UTF-8?q?=EC=88=98=EC=9A=94=EB=A7=A4=EC=B9=AD=20?= =?UTF-8?q?=EA=B2=80=ED=86=A0=20put=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/matMng/coMat/coMatRvw/page.tsx | 1423 +++++++++-------- .../wr/app/store/matDmd/coMatRvw/headList.tsx | 12 + apps/wr/app/store/matDmd/coMatRvw/index.tsx | 74 +- apps/wr/app/store/matDmd/coMatRvw/type.tsx | 128 +- apps/wr/components/lib/func/commom.tsx | 26 +- .../bizTotalMoneyPop/bizTotalMoneyPop.tsx | 28 + .../ui/popover/usagePorcPop/usageProcPop.tsx | 30 + 7 files changed, 958 insertions(+), 763 deletions(-) create mode 100644 apps/wr/components/ui/popover/bizTotalMoneyPop/bizTotalMoneyPop.tsx create mode 100644 apps/wr/components/ui/popover/usagePorcPop/usageProcPop.tsx diff --git a/apps/wr/app/matMng/coMat/coMatRvw/page.tsx b/apps/wr/app/matMng/coMat/coMatRvw/page.tsx index d661e60d6..5f4a3943b 100644 --- a/apps/wr/app/matMng/coMat/coMatRvw/page.tsx +++ b/apps/wr/app/matMng/coMat/coMatRvw/page.tsx @@ -1,9 +1,19 @@ "use client"; import { useWrStore } from "@/app/store"; -import {DmdCoReqSchema, type DmdCoReqType, type DmdMatTableType} from "@/app/store/matDmd/coMatRvw/type"; +import { + DmdCoReqSchema, + type DedMatUpdateType, + type DmdCoReqType, + type DmdMatTableType, +} from "@/app/store/matDmd/coMatRvw/type"; import { formH1Class, formTableName } from "@/components/lib/class/comClass"; -import { getCity, tableData, yearOptions } from "@/components/lib/func/commom"; +import { + getCity, + getdmdMatFlag, + tableData, + yearOptions, +} from "@/components/lib/func/commom"; import { CmpttnModal } from "@/components/ui/modal/coMat/cmpttnModal"; import { CoMatModal } from "@/components/ui/modal/coMat/coMatModal"; import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; @@ -24,24 +34,23 @@ import { type SelectDataType, } from "@common/business_components/ui"; import ListDiv from "@common/business_components/ui/list_div"; -import { Button, DatePicker, Input, Label } from "@common/components/ui"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@common/components/ui/tooltip"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { Button, Input, Label } from "@common/components/ui"; import { useEffect, useRef, useState } from "react"; -import { useFieldArray, useForm } from "react-hook-form"; +import { useForm } from "react-hook-form"; import toast, { Toaster } from "react-hot-toast"; import { z } from "zod"; import moment from "moment"; +import { usageProcData } from "@/app/store/matDmd/coMatRvw/headList"; +import UsageProcData from "@/components/ui/popover/usagePorcPop/usageProcPop"; +import BizTotalMoneyPop from "@/components/ui/popover/bizTotalMoneyPop/BizTotalMoneyPop"; +import { TEST_UUID } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { zodResolver } from "@hookform/resolvers/zod"; + export default function CoMatRvw() { - const { code, coRvw ,coMatRvwInit} = useWrStore((state) => state); -const {coMatRvwRes} = coRvw - + const { code, coRvw, coMatRvwInit ,coMatRvwUpdate} = useWrStore((state) => state); + const { coMatRvwRes } = coRvw; + //init, sub, match const initRef = useRef(false); const { coRvwHeadList } = coRvw; const [dmdMatData, setDmdMtaData] = useState([]); @@ -65,34 +74,70 @@ const {coMatRvwRes} = coRvw const [toDate, setToDate] = useState( String(new Date().getFullYear()) ); - const [selectData, setSelectData] = useState({} as DmdCoReqType) + const [selectData, setSelectData] = useState( + {} as DmdCoReqType + ); const form = useForm>({ resolver: zodResolver(DmdCoReqSchema), - }) + }); - const TableCellClick = (index:number) =>{ - console.log(coMatRvwRes ) - if(coMatRvwRes && coMatRvwRes[index]){ + const TableCellClick = (index: number) => { + console.log(coMatRvwRes); + if (coMatRvwRes && coMatRvwRes[index]) { + console.log(dmdMatData[index]); - console.log(dmdMatData[index]) - - - setSelectData(coMatRvwRes[index] ) + setSelectData(coMatRvwRes[index]); } + }; + const onSubmit = () => { + const data:DedMatUpdateType = { + dmdInfoSn: form.getValues("dmdInfoSn"), + usgPrcsProcs: form.getValues("demandCst.usgPrcsProcs"), + cstrnCst:form.getValues("demandCst.cstrnCst"), + fcltSbsdEpsTrf:form.getValues("demandCst.fcltSbsdEpsTrf"), + prcsFcltCpctCstrnCst:form.getValues("demandCst.prcsFcltCpctCstrnCst"), + rgtr:TEST_UUID + + }; - } - useEffect(()=>{ - if(coMatRvwRes){ - const data =coMatRvwRes.map((item)=>{ - return ({ - ...item, - regDt: moment(item.regDt).format('YYYY-MM-DD') , - state:'' - })}) - setDmdMtaData(tableData(data,{code}) ) + + coMatRvwUpdate( '11000SW001R1', form.getValues('dmdInfoFk'), data ) + }; + + useEffect(() => { + if (form?.getValues("useUsgCd")) { + form.setValue( + "demandCst.usgPrcsProcs", + usageProcData?.find( + (item) => item.usage === (form?.getValues("useUsgCd") as string) + )?.process ?? "" + ); } - },[coMatRvwRes]) + }, [form.watch("useUsgCd")]); + + useEffect(() => { + + + console.log('coMatRvwRes ', coMatRvwRes) + if (coMatRvwRes) { + const data = coMatRvwRes?.map((item, index) => { + console.log(" item ", item); + return { + ...item, + ctpvCd: item.demandCo.ctpvCd, + sggCd: item.demandCo.sggCd, + dmdCoNm: item.demandCo.dmdCoNm, + daddr: item.demandCo.daddr, + telno: item.demandCo.telno, + splyFcltFlg: getdmdMatFlag(item.demandMatching?.splyFcltFlg), + regDt: moment(item?.demandCo?.regDt).format("YYYY-MM-DD"), + state: "", + }; + }); + setDmdMtaData(tableData(data, { code })); + } + }, [coMatRvwRes]); const getSelCity = (val: string | number) => { const cityValue = String(val); // Ensure val is treated as a string @@ -105,23 +150,19 @@ const {coMatRvwRes} = coRvw setObjSearch({ ...objSearch, sgg: String(val) }); }; - -useEffect(() =>{ - if(!initRef.current){ - coMatRvwInit(1,13,'11',fromDate,toDate) - initRef.current = true; + useEffect(() => { + if (!initRef.current) { + coMatRvwInit(1, 13, fromDate, toDate, "47"); + initRef.current = true; } + }, [coMatRvwInit, initRef, fromDate, toDate]); -},[coMatRvwInit,initRef,fromDate,toDate]) - - -useEffect(() =>{ - if(selectData){ - console.log(selectData) - form.reset(selectData) - } - -},[selectData,form ] ) + useEffect(() => { + if (selectData) { + console.log(selectData); + form.reset(selectData); + } + }, [selectData, form]); return ( <> @@ -215,627 +256,536 @@ useEffect(() =>{ { - if(index !==undefined&& index>=0){ - - TableCellClick(index) + cellClick={(index: number | undefined, headId: string) => { + if (index !== undefined && index >= 0) { + TableCellClick(index); } - } } + }} onPageChange={() => {}} >
- -

- 수요신청 상세현황 -

-
-
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={ moment(field.value).format('YYYY-MM-DD') ?? ""} - readOnly - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(e.target.value); - }} - value={field.value ?? ''} - readOnly - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
-

요구수질

-
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- ( - - { - field.onChange(e.target.value); - }} - value={field.value ?? ""} - /> - - )} - /> -
-
-

공급처 후보지

-
-
- ( - - { - field.onChange(String(e.target.value)); - }} - value={field.value ?? ""} - /> - - )} - /> -
-
- ( - - { - field.onChange(e.target.value); - }} - value={field.value ?? ""} - /> - - )} - /> -
-
- ( - - { - field.onChange(e.target.value); - }} - value={field.value ?? ""} - /> - - )} - /> -
-
-
-
-
+

- 표준공사비 산정 + 수요신청 상세현황

-
-

처리시설 표준공사비 산정

- - - -
-
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? ""} - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
- - - ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value || ""} - className="mt-2" - /> - - )} - /> -
-
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
-
- - -
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
-
- - -
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
- -
- - ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? 0} - /> - - )} - /> -
-
-
- - -
- ( - - { - field.onChange(Number(e.target.value)); - }} - value={field.value ?? ""} - /> - - )} - /> -
- -
-
+ +
+
( - + { + field.onChange(String(e.target.value)); + }} + value={ + moment(field.value).format("YYYY-MM-DD") ?? "" + } + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(e.target.value); + }} + value={field.value ?? ""} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+

요구수질

+
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(e.target.value); + }} + value={field.value ?? ""} + readOnly + /> + + )} + /> +
+
+

공급처 후보지

+
+
+ ( + + { + field.onChange(String(e.target.value)); + }} + value={field.value ?? ""} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(e.target.value); + }} + value={field.value ?? ""} + readOnly + /> + + )} + /> +
+
+ ( + + { + field.onChange(e.target.value); + }} + value={field.value ?? ""} + readOnly + /> + + )} + /> +
+
+ +
+
+

+ 표준공사비 산정 +

+
+

처리시설 표준공사비 산정

+ + + +
+
+

기본사항

+
+
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? ""} + /> + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + /> + + )} + /> +
+
+ + + + } + > + ( + + + + )} + /> +
+
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={Number(field.value) * 365} + /> + + )} + /> +
+
+

공사비 입력사항

+
+
+
+ + +
+ ( + + { field.onChange(Number(e.target.value)); @@ -846,24 +796,88 @@ useEffect(() =>{ )} />
-
- - +
+
+ + +
+ ( + + { + field.onChange(Number(e.target.value)); + }} + value={field.value ?? 0} + /> + + )} + />
-
+
+ + + + {}} + value={ + form.getValues("demandCst.prcsFcltCpctCstrnCst") + + form.getValues("demandCst.fcltSbsdEpsTrf") || 0 + } + /> +
+
+
+ + +
( -
+ +
+
+ ( + { onChange={(e) => { field.onChange(Number(e.target.value)); }} - readOnly={true} value={field.value ?? 0} /> - - )} - /> + )} + /> +
+
+ + +
+
+ ( + + )} + /> +
-
- +
- - {}} - onPageChange={() => {}} - /> - - } - bodyClass="w-[25vw] max-w-none h-[60vh]" - open={isPrcsMo.isModal} - onOpenChange={(open) => { - setIsPrcsMo({ isModal: open }); - }} - /> + } bodyClass="w-[40vw] max-w-none h-[70vh]" diff --git a/apps/wr/app/store/matDmd/coMatRvw/headList.tsx b/apps/wr/app/store/matDmd/coMatRvw/headList.tsx index 571deb001..1848a36c5 100644 --- a/apps/wr/app/store/matDmd/coMatRvw/headList.tsx +++ b/apps/wr/app/store/matDmd/coMatRvw/headList.tsx @@ -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" }, ] \ No newline at end of file diff --git a/apps/wr/app/store/matDmd/coMatRvw/index.tsx b/apps/wr/app/store/matDmd/coMatRvw/index.tsx index 31d818ba5..9362ead28 100644 --- a/apps/wr/app/store/matDmd/coMatRvw/index.tsx +++ b/apps/wr/app/store/matDmd/coMatRvw/index.tsx @@ -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("매칭 검토 저장 오류입니다."); + } + }, }; }; diff --git a/apps/wr/app/store/matDmd/coMatRvw/type.tsx b/apps/wr/app/store/matDmd/coMatRvw/type.tsx index eeaaaf8f5..93e214643 100644 --- a/apps/wr/app/store/matDmd/coMatRvw/type.tsx +++ b/apps/wr/app/store/matDmd/coMatRvw/type.tsx @@ -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; @@ -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; } \ No newline at end of file diff --git a/apps/wr/components/lib/func/commom.tsx b/apps/wr/components/lib/func/commom.tsx index 7d4eff124..72f2943ce 100644 --- a/apps/wr/components/lib/func/commom.tsx +++ b/apps/wr/components/lib/func/commom.tsx @@ -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, @@ -126,7 +124,6 @@ export const getCityOrSgg = (ref: RefObject) => { 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}년`, }) -); \ No newline at end of file +); + +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; +}; diff --git a/apps/wr/components/ui/popover/bizTotalMoneyPop/bizTotalMoneyPop.tsx b/apps/wr/components/ui/popover/bizTotalMoneyPop/bizTotalMoneyPop.tsx new file mode 100644 index 000000000..84fbd83a5 --- /dev/null +++ b/apps/wr/components/ui/popover/bizTotalMoneyPop/bizTotalMoneyPop.tsx @@ -0,0 +1,28 @@ +import { + Label, + Popover, + PopoverContent, + PopoverTrigger, +} from "@common/components"; + +export default function BizTotalMoneyPop({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + {children} + +
+
총사업비 계산방법
+
+ 하수처리수 재이용시설 총 사업비 = 공사비+시설부대경비{" "} +
+
+
+
+ + ); +} diff --git a/apps/wr/components/ui/popover/usagePorcPop/usageProcPop.tsx b/apps/wr/components/ui/popover/usagePorcPop/usageProcPop.tsx new file mode 100644 index 000000000..c1483847a --- /dev/null +++ b/apps/wr/components/ui/popover/usagePorcPop/usageProcPop.tsx @@ -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 ( + <> + + {children} + + + {}} + onPageChange={() => {}} + /> + + + + ); +}