잠재수요처 상세정보 수정 시 토스트 띄우도록 수정

This commit is contained in:
jyha00
2025-07-09 18:01:04 +09:00
parent 38461d8a40
commit 351adea87f
3 changed files with 29 additions and 34 deletions
+15 -10
View File
@@ -31,7 +31,7 @@ import { useCallback, useEffect, useState } from "react";
import { Toaster } from "react-hot-toast";
export default function LdrmntCoSttn() {
const { code, ldrmnt, ldrmntInit, ldrmntSearch, } = useWrStore(
const { code, ldrmnt, ldrmntInit, ldrmntSearch, ldrmntUpdate} = useWrStore(
(state) => state
);
const { ldrmntRes, excelList, ldrmntResCount } = ldrmnt;
@@ -42,6 +42,7 @@ export default function LdrmntCoSttn() {
const [bdstTable, setBdstTable] = useState<customLdrmnt[]>();
const [searchTxt, setSearchTxt] = useState<string>();
const [excelData, setExcelData] = useState<any[]>();
const [resetPage, isResetPage] = useState(false);
// const [isExcelDownload, setIsExcelDownload] = useState(false);
const excelClick = useCallback(() => {
@@ -76,9 +77,9 @@ export default function LdrmntCoSttn() {
const excelDownloadClick = useCallback(() => {
const cityNm = computeCityNm();
ldrmntSearch(true, pageNation, String(ldrmntResCount), cityNm, searchTxt || "");
ldrmntSearch(true, 1, String(ldrmntResCount), cityNm, searchTxt || "");
// setIsExcelDownload(true);
}, [objSearch, pageNation, searchTxt, code, ldrmntSearch, computeCityNm, ldrmntResCount]);
}, [objSearch, searchTxt, code, ldrmntSearch, computeCityNm, ldrmntResCount]);
useEffect(() => {
if (/*isExcelDownload &&*/ excelData && excelData.length > 0) {
@@ -111,7 +112,6 @@ export default function LdrmntCoSttn() {
} else {
const data = getCity(cityValue, code.sggCd);
setSelectSgg(data);
const firstSggVal = data.find(item => item.val === "0")?.val || (data[0]?.val ?? "");
setObjSearch({ city: cityValue, sgg: firstSggVal });
}
@@ -141,7 +141,7 @@ export default function LdrmntCoSttn() {
setBdstTable(tbData);
}, [ldrmntRes, code]);
useEffect(() => {
const transData = Array.isArray(excelList) ? excelList : [excelList];
const exData = tableData(transData, { code });
@@ -160,8 +160,8 @@ export default function LdrmntCoSttn() {
}, [excelList])
useEffect(() => {
const cityNm = computeCityNm();
ldrmntSearch(false, pageNation, '20', cityNm, searchTxt || "");
ldrmntSearch(false, pageNation, '20', computeCityNm(), searchTxt || "");
isResetPage(false)
}, [pageNation]);
return (
@@ -204,8 +204,8 @@ export default function LdrmntCoSttn() {
<Button
size={"sm"}
onClick={(e) => {
const cityNm = computeCityNm();
ldrmntSearch(false, pageNation, '20', cityNm, searchTxt || "");
ldrmntSearch(false, pageNation, '20', computeCityNm(), searchTxt || "");
isResetPage(true)
}}
>
조회
@@ -250,6 +250,7 @@ export default function LdrmntCoSttn() {
total={ldrmntResCount || 0}
cellClick={(index: number | undefined, headId: string) => { cellClick(index ?? undefined, headId) }}
onPageChange={setPageNation}
resetPageNo={resetPage}
/>
</ListDiv>
</div>
@@ -260,7 +261,11 @@ export default function LdrmntCoSttn() {
setDetailModal({ ...detailModal, isOpen: !detailModal.isOpen })
}}
bodyClass={"w-[40vw] max-w-none max-h-[calc(100%-70px)]"}
body={<CoDetailModal formObj={detailModal.data} />}
body={<CoDetailModal formObj={detailModal.data} onFormSubmit={async (value)=>{
await ldrmntUpdate(value)
setDetailModal({ ...detailModal, isOpen: false })
ldrmntSearch(false, pageNation, '20', computeCityNm(), searchTxt || "");
}} />}
/>
<UiModal
+10 -12
View File
@@ -4,6 +4,7 @@ import { ToastFormUi } from "@/components/ui/toast/toastFromUi";
import { z } from "zod";
import { TEST_UUID } from "../../ruseFcltMng/fcltReg/rainReg";
import { ldrmntHeadListExport, ldrmntNodeListExport, ldrmntZod } from "./headList";
import toast from "react-hot-toast";
// 테이블 헤드 리스트
const ldrmntHeadList = ldrmntHeadListExport;
@@ -34,7 +35,7 @@ const excelDownList: ExcelType[] = [];
type ldrmntActions = {
ldrmntRegData: (data: any[]) => void,
ldrmntInit: (con: string) => void
ldrmntSearch: (isExcel:boolean, page: number, sggCd: string, total: string, coNm: string) => void;
ldrmntSearch: (isExcel: boolean, page: number, sggCd: string, total: string, coNm: string) => void;
ldrmntUpdate: (ldrmntRes: customLdrmnt) => void;
ldrmntDelete: () => void;
loadingOpen: (isOpen: boolean) => void
@@ -106,7 +107,7 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
console.log('response ', response)
},
ldrmntSearch: async (isExcel:boolean, page: number, total: string, sggCd: string, coNm: string) => {
ldrmntSearch: async (isExcel: boolean, page: number, total: string, sggCd: string, coNm: string) => {
let searchUrl = "";
if (sggCd !== "") {
@@ -121,7 +122,7 @@ export const ldrmntActionsExport: (set: any) => ldrmntActions = (
fetchType.WR,
searchUrl
);
console.log("알이에스", ldrmntRes)
console.log("알이에스", ldrmntRes)
if (isExcel) {
let excelDownList: ExcelType[] = [];
ldrmntRes.data.forEach((item: customLdrmnt) => {
@@ -163,23 +164,20 @@ console.log("알이에스", ldrmntRes)
}
},
ldrmntUpdate: async (ldrmntRes: customLdrmnt) => {
if(ldrmntRes)
try {
ldrmntRes.rgtr = TEST_UUID;
const response = await putFectch(
const res = await putFectch(
`/reuseFc/request/temp`,
ldrmntRes
);
return set((state: ldrmntState) => ({
...state,
ldrmnt: {
...state.ldrmnt,
ldrmntRes: ldrmntRes,
},
}));
if (res.ok) {
toast.success("잠재수요처 상세정보가 수정되었습니다.",)
}
} catch (error) {
console.error("Error ldrmntUpdate:", error);
toast.error("잠재수요처 상세정보 수정에 실패하였습니다.")
}
},
ldrmntDelete: async () => {
@@ -11,26 +11,18 @@ import { useEffect, useState } from "react";
import { useForm } from "react-hook-form";
import type { z } from "zod";
export default function SttnDetailModal({
formObj,
export default function CoDetailModal({
formObj,onFormSubmit
}: {
formObj: any;
onFormSubmit:(values:customLdrmnt)=>void;
}) {
const { ldrmntUpdate } = useWrStore(
(state) => state
);
const defaultValues: z.infer<typeof ldrmntZod> = ldrmntZod.parse({});
const form = useForm<z.infer<typeof ldrmntZod>>({
resolver: zodResolver(ldrmntZod),
defaultValues: defaultValues,
});
const onSubmit = (values: customLdrmnt) => {
console.log("values", values)
if (values)
ldrmntUpdate(values)
};
useEffect(() => {
if (ldrmntZod) form.reset(formObj);
}, [formObj]);
@@ -55,7 +47,7 @@ export default function SttnDetailModal({
<div>
<ScrollArea className="h-[85vh]">
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)}>
<form onSubmit={form.handleSubmit(onFormSubmit)}>
<div className="grid grid-cols-12 flex items-center card-header">
<h1 className="text-2xl font-medium text-label col-span-10">
잠재수요처 상세정보