diff --git a/apps/dm/app/pages/sdmMng/sdmInfoInsert/page.tsx b/apps/dm/app/pages/sdmMng/sdmInfoInsert/page.tsx index a0f905c35..95c5e6822 100644 --- a/apps/dm/app/pages/sdmMng/sdmInfoInsert/page.tsx +++ b/apps/dm/app/pages/sdmMng/sdmInfoInsert/page.tsx @@ -13,7 +13,7 @@ import { Toaster } from "react-hot-toast"; import * as z from "zod"; import SdmLogin from "../sdmLogin/page"; -const createFormSchema = () => z.object({ +const sdmInfoFormSchema = z.object({ sdmNm: z.string() .min(1, "수요처를 선택해주세요"), demandYmd: z.date().optional(), @@ -67,14 +67,14 @@ const createFormSchema = () => z.object({ candidateTitle: z.string().optional(), }); -export type FormData = z.infer>; +export type FormData = z.infer; function SdmInfoInsertContent() { const searchParams = useSearchParams(); const {insertSdmInfoData, Sdm} = useDmStore((state) => state); const {successLogin} = Sdm; const [ismoneyDisabled, setIsmoneyDisabled] = useState(false); - const formSchema = createFormSchema(); + const formSchema = sdmInfoFormSchema; const [isLogin, setIsLogin] = useState(false); const [facilityName, setFacilityName] = useState(''); diff --git a/apps/dm/app/pages/sdmMng/sdmInsert/page.tsx b/apps/dm/app/pages/sdmMng/sdmInsert/page.tsx index 040304347..0a5a5546d 100644 --- a/apps/dm/app/pages/sdmMng/sdmInsert/page.tsx +++ b/apps/dm/app/pages/sdmMng/sdmInsert/page.tsx @@ -21,6 +21,7 @@ export default function MyForm() { useEffect(() => { if (successNextPage && formDataRef.current) { const data = formDataRef.current; + console.log(data); const queryParams = new URLSearchParams({ dmdCoNm: data.dmdCoNm || '', ctpvCd: data.ctpvCd || '', diff --git a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx index 79d53db80..8c2273872 100644 --- a/apps/dm/components/ui/sdmInfoInsertForm/component.tsx +++ b/apps/dm/components/ui/sdmInfoInsertForm/component.tsx @@ -54,6 +54,14 @@ export function SdmInfoRegForm({ form, onCheckboxChange, facilityName }: SdmInfo } }, [facilityName, form]); + useEffect(() => { + if (searchParams.get('dmdCoNm')) { + form.setValue('sdmNm', searchParams.get('dmdCoNm') || ''); + setSdmNmValue(searchParams.get('dmdCoNm') || ''); + setKey(prev => prev + 1); + } + }, [searchParams, form]); + const searchCandidate = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); diff --git a/apps/dm/components/ui/sdmLoginForm/component.tsx b/apps/dm/components/ui/sdmLoginForm/component.tsx index b9cc305a9..cdedecc79 100644 --- a/apps/dm/components/ui/sdmLoginForm/component.tsx +++ b/apps/dm/components/ui/sdmLoginForm/component.tsx @@ -4,14 +4,16 @@ import { BZNM_TOT_NO, FormField, FormUi } from "@common/business_components"; import { Button, Input } from "@common/components"; import { zodResolver } from "@hookform/resolvers/zod"; import { sha512 } from 'js-sha512'; -import { useEffect, useState } from "react"; +import { useEffect, useState, useMemo } from "react"; import { FormProvider, useForm, type ControllerRenderProps } from "react-hook-form"; import * as z from "zod"; export function SdmLoginForm() { - type FormData = z.infer>; - type FieldComponent = (field: ControllerRenderProps) => JSX.Element; - const createFormSchema = () => z.object({ + const { actionLogin, initializeCommonData } = useDmStore((state) => state); + const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(false); + + // 스키마를 useMemo로 최적화 + const sdmLoginFormSchema = useMemo(() => z.object({ dmdInfoId: z.string() .min(1, "사업자등록번호를 입력해주세요") .regex(/^\d{10}$/, "사업자등록번호는 10자리 숫자만 입력 가능합니다"), @@ -24,11 +26,12 @@ export function SdmLoginForm() { .max(16, "비밀번호는 16자 이내로 입력해주세요"), rgtr: z.string().optional(), dmdAplyPswd: z.string().optional(), - }); + }), [isBznmTotNoDisabled]); - const { actionLogin, initializeCommonData } = useDmStore((state) => state); - const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(false); - const formSchema = createFormSchema(); + type FormData = z.infer; + type FieldComponent = (field: ControllerRenderProps) => JSX.Element; + + const formSchema = sdmLoginFormSchema; useEffect(() => { initializeCommonData();