From 46f5346338b02c64d5ed3de788e17d0556fdcb8c Mon Sep 17 00:00:00 2001 From: YangJinSoo94 Date: Thu, 5 Jun 2025 09:44:28 +0900 Subject: [PATCH 01/40] =?UTF-8?q?console.log=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/business_components/src/ui/sdmInsertForm/form.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/common/business_components/src/ui/sdmInsertForm/form.tsx b/packages/common/business_components/src/ui/sdmInsertForm/form.tsx index d59108c5b..c5c0ee0db 100644 --- a/packages/common/business_components/src/ui/sdmInsertForm/form.tsx +++ b/packages/common/business_components/src/ui/sdmInsertForm/form.tsx @@ -126,8 +126,6 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun const bznNoChange = useCallback((e: React.ChangeEvent, noType: string) => { const value = e.target.value; - console.log('form value : '+form.getValues('dmdInfoPk')); - console.log('org value : '+orgBznmNo); if(noType === 'dmdInfoPk') { if(orgBznmNo.substring(0,10) === value) { From a38a1315f2f4284d2618ea7f83d70412a30b233c Mon Sep 17 00:00:00 2001 From: leedj312 Date: Thu, 5 Jun 2025 10:14:05 +0900 Subject: [PATCH 02/40] =?UTF-8?q?=EC=88=98=EC=9A=94=EC=B2=98=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EB=93=B1=EB=A1=9D=20=ED=8C=9D=EC=97=85=20=EC=82=BD?= =?UTF-8?q?=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wr/app/matMng/matDmd/coSttn/page.tsx | 32 ++++++++++++++++--- .../fcltReg/pbnstReg/buseReg/bugRegForm.tsx | 12 +++---- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/apps/wr/app/matMng/matDmd/coSttn/page.tsx b/apps/wr/app/matMng/matDmd/coSttn/page.tsx index 06f624a65..388a76fb2 100644 --- a/apps/wr/app/matMng/matDmd/coSttn/page.tsx +++ b/apps/wr/app/matMng/matDmd/coSttn/page.tsx @@ -15,14 +15,16 @@ import { type ReturnType, } from "@common/business_components/ui"; import { useCallback, useEffect, useRef, useState } from "react"; +import SdmInsertForm, { type DemandCompType } from "@common/business_components/ui/sdmInsertForm"; export default function coSttn() { - const [bdstTable, setBdstTable] = useState(); + const [bdstTable, setBdstTabl] = useState(); const [pageNation, setPageNation] = useState(1); - const { code, coSttn } = useWrStore( + const { code, coSttn ,getDemandCompList,regDemandCompany,demandCompList} = useWrStore( (state) => state ); + const [isDmdModal, setIsDmdModal] = useState<{isMoal: boolean, data: DemandCompType}>({isMoal: false, data: {} as DemandCompType}) const ref = useRef({} as ReturnType); @@ -47,7 +49,7 @@ export default function coSttn() { + +
+ ( + + { + if (files) setFiles(files); + }} + fileTypes="xlsx" + > + + )} + /> +
+ + + + + ) + +} \ No newline at end of file diff --git a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx index bc50c3554..255ff0fc7 100644 --- a/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx +++ b/apps/wr/components/ui/modal/sttn/sttnDetailModal/coDatailModal.tsx @@ -1,30 +1,824 @@ "use client"; import { useWrStore } from "@/app/store"; import type { CommonTableProps } from "@/app/store/common/type/header"; -import { Title } from "@common/business_components/ui"; +import { ldrmntZod, type customLdrmntBdst } from "@/app/store/matDmd/ldrmntCoSttn"; +import { rainZod, selectClass } from "@/app/store/ruseFcltMng/fcltReg/rainReg"; +import { handleCommaNumberChange, formatCommaNumber } from "@/components/lib/func/commom"; +import { DatePicker, Form, FormField, FormUi, ScrollArea, Title, UiTable } from "@common/business_components/ui"; +import { Button, Input } from "@common/components/ui"; +import { zodResolver } from "@hookform/resolvers/zod"; import { useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import type { z } from "zod"; -export default function SttnDetailModal( - {formObj,}: {formObj: any;}) { - const { code, rainSttn, rswtSttn, rainSttnChkSearch } = useWrStore( - (state) => state - ); - const [detailData, setDetailData] = useState({ - head: [] as CommonTableProps[], - node:[] as CommonTableProps[], - data: {} as any, +export default function SttnDetailModal({ + formObj, +}: { + formObj: any; +}) { + const defaultValues: z.infer = ldrmntZod.parse({}); + const form = useForm>({ + resolver: zodResolver(ldrmntZod), + defaultValues: defaultValues, }); - useEffect(() =>{ - setDetailData({data:[] , head:[], node:[]}) + const onSubmit = (values: z.infer) => { - },[]) + }; + + useEffect(() => { + if (ldrmntZod) form.reset(formObj); + + console.log("이거", formObj) + }, [formObj]); return ( -
- - + +
+ +
+

+ 잠재수요처 상세정보 +

+ +
+ +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+
+
+ ( + + field.onChange(date), + }} + selectClass={"w-full"} + /> + + )} + /> +
+ +
+ ( + + field.onChange(date), + }} + selectClass={"w-full"} + /> + + )} + /> +
+
+
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + field.onChange(date), + }} + selectClass={"w-full"} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ + +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ + +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ + +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ ( + + { + handleCommaNumberChange(e, field.onChange); + }} + value={field.value} + /> + + )} + /> +
+
+ + + +
+ +
); } diff --git a/apps/wr/public/sample_drgtSttn.xlsx b/apps/wr/public/sample_drgtSttn.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..7a0c868cdc1f35cb25274f2a8197cf9ca8f21de4 GIT binary patch literal 9903 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 Date: Thu, 12 Jun 2025 13:40:47 +0900 Subject: [PATCH 35/40] =?UTF-8?q?=EB=B9=8C=EB=93=9C=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20?= =?UTF-8?q?=ED=83=80=EC=9E=85=20=EC=88=98=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ui/sdmInsertForm/index.tsx | 51 +------------------ 1 file changed, 1 insertion(+), 50 deletions(-) diff --git a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx index f66aadadf..451997cd2 100644 --- a/packages/common/business_components/src/ui/sdmInsertForm/index.tsx +++ b/packages/common/business_components/src/ui/sdmInsertForm/index.tsx @@ -11,46 +11,7 @@ import { toast, Toaster } from "sonner"; /* import { Toaster, toast } from "react-hot-toast"; */ import * as z from "zod"; import type { SelectDataType } from "../search_input_select"; - - -export type DemandCompType = { - dmdInfoPk: string; - bzmnNo: string; - dmdCoNm: string; - daddr: string; - telno: string; - rgtr: string; - useUsgCd: string; - ctpvCd: string; - sggCd: string; - dmdAplyPswd: string; - dmdInfoFk: string; - wntUntprc: number | ""; - dmndTmng: "" | Date; - dmndQty: number | ""; - bznmTotNo: string; - grssClfg: number | ""; - tn: number | ""; - combResdch: number | ""; - tph: number | ""; - useYn: string; - delYn: string; - regDt: string; - updtDt: string; - updtr: string; - trbt: number | ""; - ph: number | ""; - blgcOxygDmndQnt: number | ""; - clIonQnt: number | ""; - dmndQnt: number | ""; - dmndUntprc: number | ""; - dmndAmt: number | ""; - smll: number | ""; - cdtnv: number | ""; - crmty: number | ""; - rmrk: string; -} - +import type { DemandCompType } from "../../../../../../apps/dm/app/store/sdmMng"; type thisProps = { selectSidoData: SelectDataType[]; @@ -188,16 +149,6 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList console.log(formData); rtnInputData(formData as DemandCompType); - const queryParams = new URLSearchParams({ - dmdCoNm: data.dmdCoNm, - ctpvCd: data.ctpvCd, - sggCd: data.sggCd, - dmdInfoPk, - bznmTotNo: data.bznmTotNo || '', - daddr: data.daddr, - telno: data.telno, - }); - } catch (error) { console.error('Error submitting form:', error); toast.error('수요처 등록에 실패했습니다.'); From 8a1c4641ab11fecc8e350a192662a35c497e8575 Mon Sep 17 00:00:00 2001 From: leedj312 Date: Thu, 12 Jun 2025 13:49:36 +0900 Subject: [PATCH 36/40] =?UTF-8?q?=EC=88=98=EC=9A=94=EC=B2=98=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=9E=91=EC=97=85=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx | 1 - apps/wr/components/lib/func/commom.tsx | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx index 86bf5bc82..b985cd944 100644 --- a/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx +++ b/apps/wr/app/store/prfmncSttn/chkgdnSttn/rswtChkgdnSttn/index.tsx @@ -2,7 +2,6 @@ import { rswtHeadNmExport } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn/he import { rswtChkSttnHeadListExport, rswtDetailSttnHeadListExport } from "./headList"; import type { TableUpperProps } from "@/app/store/common/type/header"; import type { chHeadType } from "@/app/store/prfmncReg/chkgdnReg/rainChkgdn/headList"; -import type { sheetParameter } from "@common/business_components/ui"; import type { rswtChkZodType } from "@/app/store/prfmncReg/chkgdnReg/rswrtChkgdn"; import { getFetch } from "@/components/lib/api"; import { buildingExcelRswtSttn } from "./excel"; diff --git a/apps/wr/components/lib/func/commom.tsx b/apps/wr/components/lib/func/commom.tsx index 806ab11db..1d43f9aa0 100644 --- a/apps/wr/components/lib/func/commom.tsx +++ b/apps/wr/components/lib/func/commom.tsx @@ -4,7 +4,6 @@ import { type SelectDataType, type ReturnType, filePickedBlobArray, - sheetParameter, } from "@common/business_components/ui"; import type { RefObject } from "react"; @@ -81,7 +80,7 @@ export const excelDownload = ( export const excelArrayDownload = ( fileNm: string, sampleFile: string, - sheetArray: [typeof sheetParameter] + sheetArray: [] ) => { if (!sheetArray) return; fetch(`/${sampleFile}`, {}).then(async (response) => { From b1f108c48596e523362e310b167991592b34293c Mon Sep 17 00:00:00 2001 From: leedj312 Date: Thu, 12 Jun 2025 20:00:58 +0900 Subject: [PATCH 37/40] =?UTF-8?q?=EC=88=98=EC=9A=94=EC=B2=98=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EC=88=98=EC=9A=94=EC=B2=98=20=EB=93=B1=EB=A1=9D?= =?UTF-8?q?=EB=B0=8F=20=EC=88=98=EC=A0=95=20=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/matDmd/coSttn/page.tsx | 25 +++++- apps/wr/app/store/common/searchCode/index.ts | 81 +++++++++++++++----- apps/wr/app/store/matDmd/coSttn/index.tsx | 3 +- 3 files changed, 85 insertions(+), 24 deletions(-) diff --git a/apps/wr/app/matMng/matDmd/coSttn/page.tsx b/apps/wr/app/matMng/matDmd/coSttn/page.tsx index 20f34ebac..b0e9a4931 100644 --- a/apps/wr/app/matMng/matDmd/coSttn/page.tsx +++ b/apps/wr/app/matMng/matDmd/coSttn/page.tsx @@ -29,6 +29,7 @@ import SdmInsertForm, { import type { objSearchType } from "@/components/ui/modal/fcltReg/bdstRegModal/bdstRegModal"; import { Toaster } from "react-hot-toast"; import { ToastFormUi } from "@/components/ui/toast/toastFromUi"; +import { fetchType, getFetch } from "@/components/lib/api"; export default function CoSttn() { const { @@ -38,8 +39,11 @@ export default function CoSttn() { coSttnSearch, getDemandCompList, regDemandCompany, + updateDemandCompany, coSttnTxtSearch, + checkDemand, demandCompList, + dmdIsSucees } = useWrStore((state) => state); const [bdstTable, setBdstTable] = useState(); @@ -215,7 +219,7 @@ export default function CoSttn() { bodyClass={"w-[40vw] max-w-none h-[90vh]"} open={isDmdModal.isMoal} onOpenChange={() => { - setIsDmdModal({ isMoal: false, data: {} as DemandCompType }); + setIsDmdModal({ isMoal: false, data: {} as DemandCompType }); }} body={ { getDemandCompList(searchText, pageCnt); }} - rtnInputData={(data) => { - regDemandCompany(data as DemandCompType); + rtnInputData={ async(data) => { + if(upadateData?.dmdInfoPk){ + updateDemandCompany(data as DemandCompType) + }else{ + const dmd= await getFetch(fetchType.WR,`/reuseFc/request/${data.dmdInfoPk}`) + if(dmd) { + ToastFormUi({body: `사업자번호 ${dmd.dmdInfoPk}는 이미 등록되었습니다. 다시등록해주세요`, title:"수요처 관리"}) + return + } + regDemandCompany(data as DemandCompType); + } + if(dmdIsSucees ==='success'){ + ToastFormUi({body: `수요처 등록 및 수정이 완료되었습니다.`, title:"수요처 관리"}) setIsDmdModal({ isMoal: false, data: data as DemandCompType }); + }else{ + ToastFormUi({body: `수요처 등록 및 수정 에러입니다.`, title:"수요처 관리"}) + } + }} bodyClassNm={"w-full mx-auto bg-white rounded-lg shadow-md p-6"} updateList={upadateData} diff --git a/apps/wr/app/store/common/searchCode/index.ts b/apps/wr/app/store/common/searchCode/index.ts index 96bac028a..83234c2e1 100644 --- a/apps/wr/app/store/common/searchCode/index.ts +++ b/apps/wr/app/store/common/searchCode/index.ts @@ -1,16 +1,22 @@ -import { fetchType, getFetch, postFectch } from "@/components/lib/api"; +import { + fetchType, + getFetch, + postFectch, + putFectch, +} from "@/components/lib/api"; import type { pubHasuType } from "../../ruseFcltMng/fcltReg/pbnstReg/type"; import type { DemandCompType } from "@common/business_components/ui"; export type comFcltState = { - - searchFclts: pubHasuType; demandCompList: DemandCompType[]; + dmdIsSucees: string; + checkDemand: DemandCompType; }; export type comFcltActions = { getSwtrmtFcltNm: (searchNm: string) => void; - getDemandCompList :(searchNm: string,cnt:number) => void - regDemandCompany:(data:DemandCompType ) => void + getDemandCompList: (searchNm: string, cnt: number) => void; + regDemandCompany: (data: DemandCompType) => void; + updateDemandCompany: (data: DemandCompType) => void; }; export const searchActions: (set: any) => comFcltActions = (set: any) => { @@ -28,27 +34,64 @@ export const searchActions: (set: any) => comFcltActions = (set: any) => { addr: item.addr, fctCpc: item.fctCpc, })); - return set((state: comFcltState) => ({ + set((state: comFcltState) => ({ ...state, searchFclts: fcltNmCd, })); }, - getDemandCompList: async (searchNm: string ,cnt:number) => { + getDemandCompList: async (searchNm: string, cnt: number) => { const coList = await getFetch( fetchType.WR, - `/reuseFc/request/${searchNm}/${cnt}` + `/reuseFc/request/${searchNm}/${cnt}` ); - return set((state: comFcltState) => { - state.demandCompList= coList - return state + set((state: comFcltState) => { + state.demandCompList = coList; + return state; }); - },regDemandCompany: async (data:DemandCompType)=>{ - - try{ - const response = await postFectch('/reuseFc/request',data,fetchType.WR ) - }catch(err){ - console.log(err) - } + }, + regDemandCompany: async (data: DemandCompType) => { + try { + const response = await postFectch( + "/reuseFc/request", + data, + fetchType.WR + ); + let message = ""; + if (response.status === 200) { + message = "success"; + } else { + message = "fail"; + } + set((state: comFcltState) => { + state.dmdIsSucees = message; + return state; + + }); + } catch (err) { + console.log(err); + } + }, + updateDemandCompany: async (data: DemandCompType) => { + try { + const response = await putFectch("/reuseFc/request", data); + + let message = ""; + if (response.status === 200) { + message = "success"; + } else { + message = "fail"; + } + + set((state: comFcltState) => { + state.dmdIsSucees = message; + return state; + + }); + + + } catch (err) { + console.log(err); + } } - }; + } }; diff --git a/apps/wr/app/store/matDmd/coSttn/index.tsx b/apps/wr/app/store/matDmd/coSttn/index.tsx index 77782116b..4b8c60436 100644 --- a/apps/wr/app/store/matDmd/coSttn/index.tsx +++ b/apps/wr/app/store/matDmd/coSttn/index.tsx @@ -1,6 +1,5 @@ import type { CommonTableProps } from "@/app/store/common/type/header"; import { fetchType, getFetch } from "@/components/lib/api"; -import { z } from "zod"; import { coSttHeadListExport, coSttNodeListExport } from "./headList"; import { excelCoSttnParsing } from "./excel"; import type { DemandCompType } from "@common/business_components/ui"; @@ -116,6 +115,6 @@ export const coSttnActionsExport: (set: any) => coSttnActions = ( } catch (erTxt) { console.log("error", erTxt); } - }, + } } } \ No newline at end of file From c80c9203d87967b71bc2868d7ee3dcd71a140f8f Mon Sep 17 00:00:00 2001 From: leedj312 Date: Thu, 12 Jun 2025 20:15:36 +0900 Subject: [PATCH 38/40] =?UTF-8?q?=EC=88=98=EC=9A=94=EC=B2=98=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/ui/sdmInsertForm/form.tsx | 119 ++++++++++++++++-- .../src/ui/sdmInsertForm/index.tsx | 34 ++--- .../src/ui/sdmInsertForm/sdmNameBox.tsx | 8 +- 3 files changed, 132 insertions(+), 29 deletions(-) diff --git a/packages/common/business_components/src/ui/sdmInsertForm/form.tsx b/packages/common/business_components/src/ui/sdmInsertForm/form.tsx index f5ff20e1d..6ccaac946 100644 --- a/packages/common/business_components/src/ui/sdmInsertForm/form.tsx +++ b/packages/common/business_components/src/ui/sdmInsertForm/form.tsx @@ -2,10 +2,43 @@ import { SelectBox } from "../select"; import { Input } from "@common/components"; import { FormUi } from "../form_ui"; -import { useCallback, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import type { ControllerRenderProps, UseFormReturn } from "react-hook-form"; import { SdmSearchForm } from "./sdmNameBox"; -import type { DemandCompType } from "../../../../../../apps/dm/app/store/sdmMng"; +import { set } from "date-fns"; + +// 수요처 정보 +export type DemandCompType = { + index : number | ''; + dmdInfoPk : string | ''; + dmdInfoFk : string | ''; + bzmnNo : string | ''; + dmdCoNm : string | ''; + daddr : string | ''; + telno : string | ''; + rgtr : string | ''; + useUsgCd : string | ''; + ctpvCd : string | ''; + sggCd : string | ''; + dmdAplyPswd : string | ''; + wntUntprc : number | ''; + dmndTmng : Date | ''; + dmndQty : number | ''; + grssClfg : number | ''; + tn : number | ''; + combResdch : number | ''; + tph : number | ''; + trbt : number | ''; + ph : number | ''; + blgcOxygDmndQnt : number | ''; + clIonQnt : number | ''; + smll : number | ''; + cdtnv : number | ''; + crmty : number | ''; + rmrk : string | ''; + reqDt : string | ''; +} + type SelectDataType = { text: string; @@ -32,16 +65,19 @@ interface SdmRegFormProps { dataList: DemandCompType[]; rtnValue: (searchText: string, pageCnt: number) => void; setIsDuplicate: (value: boolean) => void; + updateList?:DemandCompType } type FieldComponent = (field: ControllerRenderProps) => JSX.Element; -export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigunData, dataList, rtnValue, setIsDuplicate }: SdmRegFormProps) { +export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigunData, dataList, rtnValue, setIsDuplicate ,updateList}: SdmRegFormProps) { const [sidoValue, setSidoValue] = useState(''); const [sigunValue, setSigunValue] = useState(''); const [filteredSigunData, setFilteredSigunData] = useState([{ text: "전체", val: '0' }]); const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(true); const [orgBznmNo, setOrgBznmNo] = useState(''); + const [updateCoNm, setUpdateNm] = useState('') + const initializeSigunData = useCallback((sidoCd: string) => { if (sidoCd === '0') { @@ -62,6 +98,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun type: string, field: ControllerRenderProps | undefined ) => { + if(!updateList?.dmdInfoPk) switch (type) { case "ctpvCd": initializeSigunData(val); @@ -77,7 +114,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun form.setValue('bznmTotNo', ''); break; } - }, [initializeSigunData, form]); + }, [initializeSigunData, form,updateList]); const handleCheckboxChange = useCallback((checked: boolean) => { setIsBznmTotNoDisabled(checked); @@ -90,6 +127,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun const setRtnData = useCallback((item: DemandCompType) => { const rtnCompData = item; + form.setValue('dmdCoNm', rtnCompData?.dmdCoNm || ''); form.setValue('dmdInfoPk', rtnCompData?.dmdInfoPk.substring(0,10) || ''); form.setValue('bznmTotNo', rtnCompData?.dmdInfoPk.substring(10,14)==='0000' ? '' : rtnCompData?.dmdInfoPk.substring(10,14)); @@ -126,7 +164,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun const bznNoChange = useCallback((e: React.ChangeEvent, noType: string, field?: ControllerRenderProps) => { const value = e.target.value; - + if(noType === 'dmdInfoPk') { if(orgBznmNo.substring(0,10) === value) { setIsDuplicate(true); @@ -144,6 +182,27 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun } }, [orgBznmNo, setIsDuplicate]); + + useEffect(() => { + if(updateList?.dmdInfoPk){ + form.reset(updateList) + if(updateList?.dmdInfoPk.slice(10,14) !== '0000') { + handleCheckboxChange( false); + form.setValue('bznmTotNo', updateList?.dmdInfoPk.slice(10,14)); + } else { + handleCheckboxChange( true); + } + form.setValue('dmdInfoPk', updateList?.dmdInfoPk.slice(0,10)); + setUpdateNm(updateList?.dmdCoNm) + // setSigunValue(updateList?.sggCd) + }else{ + handleCheckboxChange( true); + } + }, [updateList,form]); + + useEffect(() => { + },[form.formState.errors]) + const formFields: Array<{ name: keyof FormSchema; label: string; @@ -153,28 +212,51 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun name: "ctpvCd", label: "시도", component: (field) => ( - {field.onChange(e.target.value)} } + value={ selectSidoData.find(item => item.val === field.value?.trim() )?.text??''} + readOnly={!!updateList?.dmdInfoPk} + /> + ) : ( + onSelectValue(val.toString(), 'ctpvCd', field)} + onSelectValue={(val) => onSelectValue(val.toString(), 'ctpvCd', field??'')} className="" value={sidoValue} /> + ) ) }, { name: "sggCd", label: "시군구", component: (field) => ( + updateList?.dmdInfoPk ? ( + {field.onChange(e.target.value)} } + value={selectSigunData.find(item => item.val === field.value?.trim() )?.text??''} + readOnly={!!updateList?.dmdInfoPk} + /> + ) : ( onSelectValue(val.toString(), 'sggCd', field)} className="" value={sigunValue} /> + + ) ) }, { @@ -184,7 +266,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun bznNoChange(e, 'dmdInfoPk', field)} + value={field.value} + readOnly={!!updateList?.dmdInfoPk} /> ) }, @@ -219,8 +302,10 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun type="text" className="!mt-5 !text-xl text-gray-600" disabled={isBznmTotNoDisabled} - {...field} onChange={(e) => bznNoChange(e, 'bznmTotNo', field)} + // {...field} + value={ field.value} + readOnly={!!updateList?.dmdInfoPk} /> ) @@ -249,6 +334,7 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun /> ) }, + { name: "dmdAplyPswd", label: "패스워드", @@ -261,11 +347,18 @@ export function SdmRegForm({ form, onCheckboxChange, selectSidoData, selectSigun /> ) } - ]; + ] return ( <> - {formFields.map(({ name, label, component }) => ( + {formFields.filter((item)=> + {if(updateList?.dmdInfoPk){ + return item.name !== 'dmdAplyPswd' + }else{ + return item + } + }) + .map(({ name, label, component }) => ( void; rtnInputData: (data: DemandCompType) => void; bodyClassNm?: string; + updateList?:DemandCompType } -const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean) => z.object({ +const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean ,updateList?:DemandCompType) => z.object({ ctpvCd: z.string().min(1, "시/도를 선택해주세요"), sggCd: z.string().min(1, "시/군/구를 선택해주세요"), dmdCoNm: z.string() @@ -43,11 +40,14 @@ const createFormSchema = (isBznmTotNoDisabled: boolean, isDuplicate: boolean) => .max(40, "주소는 40자 이내로 입력해주세요"), telno: z.string() .min(8, "전화번호는 8자 이상 입력해주세요") - .max(12, "전화번호는 12자 이내로 입력해주세요") + .max(11, "전화번호는 11자 이내로 입력해주세요") .regex(/^[0-9-]+$/, "전화번호는 숫자와 하이픈(-)만 입력 가능합니다"), rgtr: z.string().optional(), - dmdAplyPswd: z.string().optional() + dmdAplyPswd : updateList?.dmdInfoPk // 업데이트일경우 + ? z.string().optional() // 패스워드는 선택 사항이며 길이 제한 없음 + : z.string().optional() .refine((val) => !val || (val.length >= 8 && val.length <= 16), "패스워드는 8자 이상 16자 이내로 입력해주세요"), + }); type FormSchema = z.infer>; @@ -100,13 +100,13 @@ const defaultValues: FormSchema = { }, [insertSdmData]); */ -export default function SdmInsertForm({selectSidoData, selectSigunData, dataList, rtnValue, rtnInputData,bodyClassNm}: thisProps) { +export default function SdmInsertForm({selectSidoData, selectSigunData, dataList, rtnValue, rtnInputData,bodyClassNm, updateList}: thisProps) { /* const { insertSdmData } = useDmStore((state) => state); const router = useRouter(); */ - const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(true); + const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(false); const [isDuplicate, setIsDuplicate] = useState(false); - const formSchema = createFormSchema(isBznmTotNoDisabled, isDuplicate); + const formSchema = createFormSchema(isBznmTotNoDisabled, isDuplicate, updateList ); const form = useForm({ resolver: zodResolver(formSchema), @@ -119,7 +119,7 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList // 체크박스 상태가 변경될 때마다 bznmTotNo 필드의 에러를 초기화 useEffect(() => { - if (isBznmTotNoDisabled) { + if (isBznmTotNoDisabled===true) { form.clearErrors('bznmTotNo'); form.setValue('bznmTotNo', ''); } @@ -145,13 +145,16 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList dmdInfoPk, bzmnNo: data.dmdInfoPk, }; + + console.log(' formData ', formData) - console.log(formData); + /* await insertSdmData(formData); */ rtnInputData(formData as DemandCompType); + + //router.push(`/pages/sdmMng/sdmInfoInsert?${queryParams.toString()}`); } catch (error) { console.error('Error submitting form:', error); - toast.error('수요처 등록에 실패했습니다.'); } }; @@ -174,6 +177,7 @@ export default function SdmInsertForm({selectSidoData, selectSigunData, dataList dataList={dataList} rtnValue={setRtnValue} setIsDuplicate={setIsDuplicate} + updateList={updateList} />
-
+