// import ModalSimilarPage from "@/app/(base-layout)/pages/sdmMng/sdmInfoInsert/modalSimilar/page"; // import { useDmStore } from "@/app/store"; // import { // CANDIDATE, // // DatePicker, // FormField, // FormLabel, // FormUi, // SelectBox, // UiModal, // } from "@common/business_components"; // import { Input } from "@common/components"; // import { Button, Label } from "@common/components/ui"; // import { useSearchParams } from "next/navigation"; // import { useCallback, useEffect, useState } from "react"; // import { AccessibleFormField } from "./AccessibleFormField"; // import { // type ControllerRenderProps, // type UseFormReturn, // type FieldError, // useWatch, // } from "react-hook-form"; // import SearchInputText from "../common/searhDemandInput/component"; // import React from "react"; // import { formatDateToYMD, sanitizeInput } from "../common/utils/utils"; // import type { DemandCompType } from "@common/business_components/ui/sdmInsertForm/form"; // import type { SdmInfoFormData } from "@/app/store/sdmMng"; // export interface SdmInfoRegFormProps { // form: UseFormReturn; // onCheckboxChange?: (checked: boolean) => void; // facilityName?: string; // } // type FieldComponent = ( // field: ControllerRenderProps // ) => React.ReactElement<{ disabled?: boolean }>; // export function SdmInfoRegForm({ // form, // onCheckboxChange, // facilityName, // }: SdmInfoRegFormProps) { // const { initializeCommonData, Sdm } = useDmStore((state) => state); // const { useTypesData, defaultRules, disableRules } = Sdm; // const searchParams = useSearchParams(); // const [sdmNmValue, setSdmNmValue] = useState( // searchParams.get("dmdCoNm") || "" // ); // const [frontPHdata, setFrontPHdata] = useState("0"); // const [backPHdata, setBackPHdata] = useState("0"); // const [isBznmTotNoDisabled, setIsBznmTotNoDisabled] = useState(false); // const [isSimilarCase, setIsSimilarCase] = useState(false); // const [key, setKey] = useState(0); // // 후보지 팝업 오픈 상태 // //모달 조회에 필요한 데이터 // const [sply, setSply] = useState(0); // const [usageCd, setUsageCd] = useState("청소"); // const [money, setMoney] = useState(0); // useEffect(() => { // initializeCommonData(); // }, [initializeCommonData]); // useEffect(() => { // console.log("candidateTitle ", form.getValues("candidateTitle")); // }, [form.getValues]); // useEffect(() => { // if (useTypesData && useTypesData.length > 0) { // setTimeout(() => { // form.setValue("usePurpose", useTypesData[0]?.val?.toString() || ""); // }, 500); // } // }, [useTypesData, form.setValue, form]); // useEffect(() => { // if (facilityName) { // setSdmNmValue(facilityName); // form.setValue("sdmNm", facilityName); // setKey((prev) => prev + 1); // } // }, [facilityName, form.setValue, form]); // useEffect(() => { // if (searchParams.get("dmdCoNm")) { // form.setValue("sdmNm", searchParams.get("dmdCoNm") || ""); // setSdmNmValue(searchParams.get("dmdCoNm") || ""); // setKey((prev) => prev + 1); // } // }, [searchParams, form.setValue, form]); // const searchCandidate = (e: React.MouseEvent) => { // e.preventDefault(); // e.stopPropagation(); // const dmdInfoId = JSON.parse( // sessionStorage.getItem("user") || "{}" // )?.dmdInfoId?.toString(); // const url = `/map/popup?dmdInfoId=${encodeURIComponent(dmdInfoId)}`; // const width = window.screen.availWidth; // const height = window.screen.availHeight; // const left = 0; // const top = 0; // const popupOptions = `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`; // window.open(url, "candidatePopup", popupOptions); // }; // const searchSimilarCase = (e: React.MouseEvent) => { // e.preventDefault(); // e.stopPropagation(); // setIsSimilarCase(true); // }; // const handleCheckboxChange = (checked: boolean) => { // setIsBznmTotNoDisabled(checked); // onCheckboxChange?.(checked); // }; // useEffect(() => { // const watchPH = form.getValues(`ph`); // if (watchPH && watchPH !== undefined) { // const [frontPH, backPH] = watchPH.split("~"); // if (frontPH) { // setFrontPHdata(frontPH); // } // if (backPH) { // setBackPHdata(backPH); // } // } else { // setFrontPHdata("0"); // setBackPHdata("0"); // } // }, [form.getValues(`ph`)]); // const isSetPh = useCallback( // (typePHdata: string, index: number) => { // const PHdata = form.getValues("ph"); // const isPH = PHdata?.split("~")[index] || ""; // if (index == 0) { // form.setValue("ph", `${isPH}~${typePHdata}`); // setBackPHdata(typePHdata); // } else if (index == 1) { // form.setValue("ph", `${typePHdata}~${isPH}`); // setFrontPHdata(typePHdata); // } // }, // [form] // ); // const usePurpose = useWatch({ control: form.control, name: "usePurpose" }); // useEffect(() => { // if (!usePurpose) return; // // Apply default values // const defaults = defaultRules[usePurpose]; // if (defaults) { // Object.entries(defaults).forEach(([field, value]) => { // form.setValue(field as keyof SdmInfoFormData, value, { // shouldDirty: true, // }); // }); // } // }, [form.getValues("usePurpose")]); // // 시설 선택시 이벤트 // const selectComp = useCallback( // (rtnData: DemandCompType[]) => { // const rtnCompData = rtnData?.[0]; // form.setValue("sdmNm", rtnCompData?.dmdCoNm || ""); // }, // [form] // ); // const formFields: Array<{ // name: keyof SdmInfoFormData; // label: string; // component: FieldComponent | undefined; // formIndex: number; // required?: boolean; // }> = [ // { // name: "sdmNm", // label: "수요처선택", // formIndex: 0, // required: true, // component: (field) => ( //
// { // setSdmNmValue(val || ""); // field.onChange(val || ""); // }} // setRtnData={selectComp} // initValue={facilityName || sdmNmValue} // {...field} // /> //
// ), // }, // { // name: "demandYmd", // label: "요구시기", // formIndex: 0, // required: true, // component: (field) => ( //
// {/* { // field.onChange(date as Date); // }} // className="" // //defaultMonth={field.value as Date} // field={{ // value: field.value as Date, // onChange: (date: Date | undefined) => { // field.onChange(date as Date); // }, // }} // showOutsideDays={true} // selectClass={undefined} // /> */} // {/* 네이티브 input */} // { // const selectedDate = e.target.value ? new Date(e.target.value) : null; // field.onChange(selectedDate); // }} // value={ formatDateToYMD(field.value as Date) } // /> //
// ), // }, // { // name: "demandQnty", // label: "요구수량(㎥/d)", // formIndex: 0, // required: true, // component: (field) => ( // { // field.onChange(e); // setSply(Number(e.target.value)); // }} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // ), // }, // { // name: "usePurpose", // label: "사용용도", // formIndex: 0, // required: true, // component: (field) => ( // { // field.onChange(val.toString()); // setUsageCd(val.toString()); // }} // className="" // value={field.value as string} // /> // ), // }, // { // name: "money", // label: "희망단가(원)", // formIndex: 0, // required: true, // component: (field) => ( // // { // field.onChange(e); // setMoney(Number(e.target.value)); // }} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // ), // }, // { // name: "reqWaterQlty", // label: "요구수질", // formIndex: 0, // required: true, // component: undefined, // }, // { // name: "candidateTitle", // label: CANDIDATE || "공급처 후보지 선택(필수아님)", // formIndex: 2, // component: () => ( //
//
// // //
//
// {(form.getValues("candidateTitle") || []).map( // (candidate: any, index: number) => ( // // ) // )} //
//
// ), // }, // ]; // const normalFields = formFields.filter( // (f) => f.formIndex === 0 && f.component // ); // const candidateFields = formFields.filter( // (f) => f.formIndex === 2 && f.component // ); // return ( // <> // {normalFields.map(({ name, label, component, required }) => // component ? ( // // name === "money" ? ( //
// // {component(field)} //
// ) : ( // // {component(field)} // // ) // } // /> // ) : null // )} //
// 요구수질 //
// { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "불검출" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // {/* TODO: 총대장균군수 확인 필요*/} // {field.value !== null ? ( // // 이하 // // ) : ( // <> // )} //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const cleanValue = sanitizeInput( // e.target.value, // true // ); // field.onChange( // cleanValue === "" ? null : Number(cleanValue) // ); // }} // value={field.value ?? ""} // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이상 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const cleanValue = sanitizeInput( // e.target.value, // true // ); // field.onChange( // cleanValue === "" ? null : Number(cleanValue) // ); // }} // value={field.value ?? ""} // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> //
// //
// { // const cleanValue = sanitizeInput(e.target.value, true); // isSetPh(cleanValue, 1); // }} // value={frontPHdata ?? ""} // maxLength={5} // /> // ~ // { // const cleanValue = sanitizeInput(e.target.value, true); // isSetPh(cleanValue, 0); // }} // value={backPHdata ?? ""} // maxLength={5} // /> //
//
// { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // // { // field.onChange(val.toString()); // }} // value={field.value} // readOnly={isDisabled} // onBlur={field.onBlur} // ref={field.ref} // /> // // ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // const disabledFields = usePurpose ? disableRules[usePurpose] : []; // const isDisabled = disabledFields // ? disabledFields.includes(field.name) // : true; // return ( // //
//
// { // const inputValue = e.target.value.replace( // /[^0-9]/g, // "" // ); // 정수만 // field.onChange( // inputValue === "" ? null : Number(inputValue) // ); // }} // value={ // field.value !== undefined && field.value !== null // ? `${field.value}` // : "" // } // maxLength={6} // disabled={isDisabled} // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> // // 이하 // //
//
//
// ); // }} // /> // { // return ( // //
//
// { // field.onChange(e.target.value); // }} // value={ // field.value !== undefined && field.value !== "" // ? `${field.value}` // : "" // } // onBlur={field.onBlur} // name={field.name} // ref={field.ref} // /> //
//
//
// ); // }} // /> //
//
// {candidateFields.map(({ name, label, component, required }, index) => // component ? ( // ( // // // // {component(field)} // // // // )} // /> // ) : null // )} // {isSimilarCase && ( // // } // bodyClass="sm:max-w-[100vw] w-[1400px] h-[100dvh] max-h-[900px] overflow-y-auto overflow-x-hidden" // open={isSimilarCase} // onOpenChange={(open) => !open && setIsSimilarCase(false)} // noHeaderYn="Y" // noFooterYn="Y" // /> // )} // // ); // }