70 lines
2.2 KiB
TypeScript
70 lines
2.2 KiB
TypeScript
"use client";
|
|
|
|
import { useDmStore } from "@/app/store";
|
|
import type { DemandCompType } from "@/app/store/sdmMng";
|
|
import SdmInsertForm from '@common/business_components/ui/sdmInsertForm';
|
|
import { useRouter } from "next/navigation";
|
|
import { useCallback, useEffect, useRef } from "react";
|
|
import { Toaster } from "react-hot-toast";
|
|
|
|
export default function MyForm() {
|
|
const {Common, initializeCommonData, getDemandCompList, insertSdmData, Sdm} = useDmStore((state) => state);
|
|
const { selectSidoData, selectSigunData } = Common;
|
|
const { demandCompList, successNextPage } = Sdm;
|
|
const router = useRouter();
|
|
const formDataRef = useRef<DemandCompType | null>(null);
|
|
|
|
useEffect(() => {
|
|
initializeCommonData();
|
|
}, [initializeCommonData]);
|
|
|
|
useEffect(() => {
|
|
if (successNextPage && formDataRef.current) {
|
|
const data = formDataRef.current;
|
|
const queryParams = new URLSearchParams({
|
|
dmdCoNm: data.dmdCoNm || '',
|
|
ctpvCd: data.ctpvCd || '',
|
|
sggCd: data.sggCd || '',
|
|
dmdInfoId: data.dmdInfoId || '',
|
|
daddr: data.daddr || '',
|
|
telno: data.telno || '',
|
|
});
|
|
router.push(`/pages/sdmMng/sdmInfoInsert?${queryParams.toString()}`);
|
|
}
|
|
}, [successNextPage, router]);
|
|
|
|
const callback = useCallback((searchText: string, pageCnt: number) => {
|
|
searchText = searchText.trim();
|
|
if(searchText.length > 0) {
|
|
getDemandCompList(searchText, pageCnt);
|
|
}
|
|
}, [getDemandCompList]);
|
|
|
|
const handleInsertSdmData = useCallback((data: import('@common/business_components/ui/sdmInsertForm/form').DemandCompType) => {
|
|
const convertedData: DemandCompType = {
|
|
...data,
|
|
dmdInfoSn: '',
|
|
dmdInfoFk: '',
|
|
status: '',
|
|
};
|
|
formDataRef.current = convertedData;
|
|
insertSdmData(convertedData).catch(error => {
|
|
console.error('Error inserting SDM data:', error);
|
|
});
|
|
}, [insertSdmData]);
|
|
|
|
return (
|
|
<div className="min-h-screen bg-gray-50">
|
|
<SdmInsertForm
|
|
selectSidoData={selectSidoData}
|
|
selectSigunData={selectSigunData}
|
|
dataList={demandCompList}
|
|
rtnValue={callback}
|
|
rtnInputData={handleInsertSdmData}
|
|
/>
|
|
<Toaster position="top-center" />
|
|
</div>
|
|
);
|
|
}
|
|
|