46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { useRouter } from "next/navigation";
|
|
import { useForm } from "react-hook-form";
|
|
import { zodResolver } from "@hookform/resolvers/zod";
|
|
import { useMutationWrapper, useAlertStore } from "@/shared/lib";
|
|
import { UserApi, userSaveSchema, type UserSaveData } from "@/entities/user";
|
|
import { UsersForm } from "./users-form";
|
|
|
|
function CreatePage() {
|
|
const router = useRouter();
|
|
const alert = useAlertStore((state) => state.setMessage);
|
|
|
|
const form = useForm<UserSaveData>({
|
|
resolver: zodResolver(userSaveSchema),
|
|
defaultValues: {
|
|
userId: "",
|
|
userName: "",
|
|
password: "",
|
|
pswdHnt: "",
|
|
laeSeCd: "",
|
|
ogdpSeCd: "",
|
|
expryYmd: "",
|
|
},
|
|
});
|
|
|
|
// 사용자 등록 mutation
|
|
const { mutateAsync: saveUser } = useMutationWrapper({
|
|
mutationFn: (data: UserSaveData) => UserApi.saveUser(data),
|
|
onSuccess: () => {
|
|
alert("회원이 등록되었습니다.", router.back);
|
|
},
|
|
});
|
|
|
|
return (
|
|
<div className="card card-border !mt-6">
|
|
<div className="card-header">
|
|
<h3 className="text-2xl font-medium text-label">회원 등록</h3>
|
|
</div>
|
|
<UsersForm form={form} handleSave={saveUser} />
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export { CreatePage };
|