Merge branch 'iipbs_cs' of https://www.onasys.co.kr:3000/ONAANDALL/frontend
This commit is contained in:
@@ -38,6 +38,7 @@ type ManagementLwpoCodeDialogProps = {
|
||||
children?: React.ReactNode;
|
||||
open?: boolean;
|
||||
onOpenChange?: (open: boolean) => void;
|
||||
onAfterSave?: () => void; // 콜백 추가
|
||||
};
|
||||
|
||||
const LwpoCodeManagementDialog = memo(
|
||||
@@ -47,6 +48,7 @@ const LwpoCodeManagementDialog = memo(
|
||||
children,
|
||||
open,
|
||||
onOpenChange,
|
||||
onAfterSave, // 콜백 사용
|
||||
...props
|
||||
}: ManagementLwpoCodeDialogProps) => {
|
||||
const isRegistration = !lwpoCd;
|
||||
@@ -57,7 +59,7 @@ const LwpoCodeManagementDialog = memo(
|
||||
const { data: detailData } = useQuery({
|
||||
queryKey: [ENDPOINT.CMS_SERVICE.LWPO_CODE, upCd, lwpoCd],
|
||||
queryFn: () => LwpoCodeApi.lwpoCodeDetail(upCd!, lwpoCd!),
|
||||
enabled: !!upCd && !isRegistration,
|
||||
enabled: !!upCd && !isRegistration && open,
|
||||
});
|
||||
|
||||
const { data: upCodeData } = useQuery({
|
||||
@@ -69,7 +71,10 @@ const LwpoCodeManagementDialog = memo(
|
||||
const { mutateAsync: createLwpoCode } = useMutationWrapper({
|
||||
mutationFn: (data: LwpoCodeFormData) => LwpoCodeApi.createLwpoCode(data),
|
||||
onSuccess: () => {
|
||||
alert("등록되었습니다.", () => onOpenChange?.(false));
|
||||
alert("등록되었습니다.", () => {
|
||||
onOpenChange?.(false);
|
||||
onAfterSave?.();
|
||||
});
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: [ENDPOINT.CMS_SERVICE.LWPO_CODE, upCd],
|
||||
});
|
||||
@@ -80,7 +85,10 @@ const LwpoCodeManagementDialog = memo(
|
||||
mutationFn: (data: LwpoCodeFormData) =>
|
||||
LwpoCodeApi.updateLwpoCode(upCd!, lwpoCd!, data),
|
||||
onSuccess: () => {
|
||||
alert("수정되었습니다.", () => onOpenChange?.(false));
|
||||
alert("수정되었습니다.", () => {
|
||||
onOpenChange?.(false);
|
||||
onAfterSave?.();
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -99,15 +107,38 @@ const LwpoCodeManagementDialog = memo(
|
||||
},
|
||||
});
|
||||
|
||||
const onSubmit =
|
||||
(callback: (data: LwpoCodeFormData) => void) =>
|
||||
async (data: LwpoCodeFormData) => {
|
||||
const confirmMessage = isRegistration
|
||||
? "등록하시겠습니까?"
|
||||
: "수정하시겠습니까?";
|
||||
|
||||
if (await confirm(confirmMessage)) callback(data);
|
||||
};
|
||||
const handleRegister = async () => {
|
||||
if (!upCd) {
|
||||
alert("상위코드가 없습니다.");
|
||||
return;
|
||||
}
|
||||
const confirmMessage = "등록하시겠습니까?";
|
||||
if (await confirm(confirmMessage)) {
|
||||
const rawValues = form.getValues();
|
||||
const values = {
|
||||
...rawValues,
|
||||
upCd: upCd,
|
||||
sortSeq: Number(rawValues.sortSeq) || 0,
|
||||
};
|
||||
await createLwpoCode(values);
|
||||
}
|
||||
};
|
||||
const handleSave = async () => {
|
||||
if (!upCd) {
|
||||
alert("상위코드가 없습니다.");
|
||||
return;
|
||||
}
|
||||
const confirmMessage = "수정하시겠습니까?";
|
||||
if (await confirm(confirmMessage)) {
|
||||
const rawValues = form.getValues();
|
||||
const values = {
|
||||
...rawValues,
|
||||
upCd: upCd,
|
||||
sortSeq: Number(rawValues.sortSeq) || 0,
|
||||
};
|
||||
await updateLwpoCode(values);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Dialog open={open} onOpenChange={onOpenChange} {...props}>
|
||||
@@ -120,9 +151,14 @@ const LwpoCodeManagementDialog = memo(
|
||||
</DialogHeader>
|
||||
<Form {...form}>
|
||||
<form
|
||||
onSubmit={form.handleSubmit(
|
||||
onSubmit(isRegistration ? createLwpoCode : updateLwpoCode),
|
||||
)}
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
if (isRegistration) {
|
||||
handleRegister();
|
||||
} else {
|
||||
handleSave();
|
||||
}
|
||||
}}
|
||||
className="space-y-4"
|
||||
>
|
||||
<Table variant="secondary">
|
||||
@@ -298,7 +334,11 @@ const LwpoCodeManagementDialog = memo(
|
||||
</TableBody>
|
||||
</Table>
|
||||
<DialogFooter className="!justify-center">
|
||||
<Button size="lg" type="submit">
|
||||
<Button
|
||||
size="lg"
|
||||
type="submit"
|
||||
onClick={isRegistration ? handleRegister : handleSave}
|
||||
>
|
||||
{isRegistration ? "등록" : "저장"}
|
||||
</Button>
|
||||
<DialogClose asChild>
|
||||
|
||||
@@ -5,7 +5,7 @@ import { Button, Input, Label } from "@common/components";
|
||||
import { LwpoCodeApi, type LwpoCodeParams } from "@/entities/code";
|
||||
import { ENDPOINT } from "@/shared/config";
|
||||
import { useAlertStore, useDataTable } from "@/shared/lib";
|
||||
import { columns } from "../model/lwpocode-table-columns";
|
||||
import { getColumns } from "../model/lwpocode-table-columns";
|
||||
import { LwpoCodeManagementDialog } from "./lwpocode-dialog";
|
||||
|
||||
type LwpoCodeSectionProps = {
|
||||
@@ -24,7 +24,7 @@ function LwpoCodeSection({ upCd }: LwpoCodeSectionProps) {
|
||||
pageIndex: 0,
|
||||
pageSize: 10,
|
||||
});
|
||||
|
||||
|
||||
const query = useQuery({
|
||||
queryKey: [ENDPOINT.CMS_SERVICE.LWPO_CODE, upCd, searchParams, pagination],
|
||||
queryFn: () =>
|
||||
@@ -34,10 +34,17 @@ function LwpoCodeSection({ upCd }: LwpoCodeSectionProps) {
|
||||
page: pagination.pageIndex,
|
||||
size: pagination.pageSize,
|
||||
}),
|
||||
enabled: !!upCd,
|
||||
enabled: !!upCd ,
|
||||
placeholderData: keepPreviousData,
|
||||
});
|
||||
});
|
||||
|
||||
// 등록/수정 후 목록 재조회 콜백
|
||||
const handleAfterSave = () => {
|
||||
query.refetch();
|
||||
};
|
||||
const columns = getColumns(handleAfterSave);
|
||||
|
||||
|
||||
const { mutateAsync: codeRefreshAll } = useMutation({
|
||||
mutationFn: LwpoCodeApi.codeRefreshAll,
|
||||
onSuccess: () => {
|
||||
@@ -118,7 +125,9 @@ function LwpoCodeSection({ upCd }: LwpoCodeSectionProps) {
|
||||
<LwpoCodeManagementDialog
|
||||
upCd={upCd}
|
||||
open={dialogOpen}
|
||||
onOpenChange={setDialogOpen}
|
||||
upCd={upCd}
|
||||
onOpenChange={setDialogOpen}
|
||||
onAfterSave={handleAfterSave}
|
||||
>
|
||||
<Button>등록</Button>
|
||||
</LwpoCodeManagementDialog>
|
||||
|
||||
Reference in New Issue
Block a user