From fc3eb118c0c1064f0560c60c8679feb6e1ae8044 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Fri, 14 Mar 2025 12:34:56 +0800 Subject: [PATCH] update --- src/app/api/staff/actions.ts | 10 ++++- src/components/CreateStaff/CreateStaff.tsx | 43 +++++++++++-------- src/components/CreateStaff/StaffInfo.tsx | 15 ++++--- src/components/EditStaff/EditStaff.tsx | 1 - src/components/EditStaff/StaffInfo.tsx | 4 +- src/components/EditStaff/TeamHistoryModal.tsx | 2 +- 6 files changed, 47 insertions(+), 28 deletions(-) diff --git a/src/app/api/staff/actions.ts b/src/app/api/staff/actions.ts index d105d68..952c101 100644 --- a/src/app/api/staff/actions.ts +++ b/src/app/api/staff/actions.ts @@ -107,9 +107,17 @@ export interface CreateStaffInputs { salaryPoint: number; } + export interface NewStaffResponse { + id?: number | null; + name?: string | null; + staffId?: string | null; + message?: string | null; + errorPosition?: string | null; + } + export const saveStaff = async (data: CreateStaffInputs) => { // try { - const newStaffList = await serverFetchJson(`${BASE_API_URL}/staffs/save`, { + const newStaffList = await serverFetchJson(`${BASE_API_URL}/staffs/save`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json" }, diff --git a/src/components/CreateStaff/CreateStaff.tsx b/src/components/CreateStaff/CreateStaff.tsx index d960cc0..dc33da4 100644 --- a/src/components/CreateStaff/CreateStaff.tsx +++ b/src/components/CreateStaff/CreateStaff.tsx @@ -45,9 +45,12 @@ interface formProps { const CreateStaff: React.FC = ({ combos }) => { const { t } = useTranslation(); - const formProps = useForm(); + const formProps = useForm({ + defaultValues: { + teamHistory: [] + } + }); const [serverError, setServerError] = useState(""); - const [errorMsg, setErrorMsg] = useState("An error has occurred. Please try again later.") const router = useRouter(); // const [tabIndex, setTabIndex] = useState(0); @@ -67,7 +70,7 @@ const CreateStaff: React.FC = ({ combos }) => { const onSubmit = useCallback>( async (data) => { - try { + // try { console.log(data); formProps.clearErrors() let haveError = false; @@ -129,16 +132,18 @@ const CreateStaff: React.FC = ({ combos }) => { haveError = true formProps.setError("currentPositionId", { message: t("Please Enter Current Position"), type: "required" }) } + console.log(data.teamHistory) + console.log(haveError) if (haveError) { return } - const teamHistory = data.teamHistory + const teamHistory = data.teamHistory.length !== 0 ? data.teamHistory .map((item) => ({ id: item.id, team: combos.team.filter(team => team.label === item.team)[0].id, from: dayjs(item.from).format('YYYY-MM-DD'), })) - .sort((a, b) => new Date(a.from).getTime() - new Date(b.from).getTime()) + .sort((a, b) => new Date(a.from).getTime() - new Date(b.from).getTime()) : [] const gradeHistory = data.gradeHistory .map((item) => ({ @@ -166,7 +171,7 @@ const CreateStaff: React.FC = ({ combos }) => { // id: id, ...data, salaryEffectiveInfo: salaryEffectiveInfo, - teamHistory: teamHistory ?? [], + teamHistory: teamHistory, gradeHistory: gradeHistory ?? [], positionHistory: positionHistory ?? [], delTeamHistory: data.delTeamHistory ? data.delTeamHistory : [], @@ -176,19 +181,23 @@ const CreateStaff: React.FC = ({ combos }) => { console.log("passed") console.log(postData) // return - await saveStaff(postData) + const res = await saveStaff(postData) + console.log(res) + if (!res.id) { + setServerError(res.message!!); + // formProps.setError(res.errorPosition as keyof CreateStaffInputs, { + // message: res.message!!, + // type: "required", + // }); + return + } router.replace("/settings/staff") - } catch (e: any) { - console.log(e); - formProps.setError("staffId", { message: t("Please Enter Employ Type."), type: "required" }) - let msg = "" - if (e.message === "Duplicated StaffId Found") { - msg = t("Duplicated StaffId Found") - } - setServerError(`${t(errorMsg)} ${msg} `); - } + // } catch (e: any) { + // console.log(e); + // setServerError(`An error has occurred. Please try again later.`); + // } }, - [errorMsg, router] + [router] ); diff --git a/src/components/CreateStaff/StaffInfo.tsx b/src/components/CreateStaff/StaffInfo.tsx index eae3e65..212295c 100644 --- a/src/components/CreateStaff/StaffInfo.tsx +++ b/src/components/CreateStaff/StaffInfo.tsx @@ -82,6 +82,7 @@ const StaffInfo: React.FC = ({ combos }) => { formState: { errors, defaultValues }, control, reset, + watch, resetField, setValue, getValues, @@ -119,15 +120,15 @@ const StaffInfo: React.FC = ({ combos }) => { setTableKey(key) }, [isOpen]) - const joinDate = getValues("joinDate"); - const departDate = getValues("departDate"); + const joinDate = watch("joinDate"); + const departDate = watch("departDate"); + const staffId = watch("staffId"); useEffect(() => { - if(joinDate) - clearErrors("joinDate") - if(departDate) - clearErrors("departDate") - }, [joinDate, departDate]) + if(joinDate) clearErrors("joinDate") + if(departDate) clearErrors("departDate") + if (staffId) clearErrors("staffId") + }, [staffId, joinDate, departDate]) return ( diff --git a/src/components/EditStaff/EditStaff.tsx b/src/components/EditStaff/EditStaff.tsx index 4a52ea6..c870031 100644 --- a/src/components/EditStaff/EditStaff.tsx +++ b/src/components/EditStaff/EditStaff.tsx @@ -112,7 +112,6 @@ const EditStaff: React.FC = ({ Staff, combos, SalaryEffectiveInfo, In delPositionHistory: [], }}); - const [serverError, setServerError] = useState(""); const router = useRouter(); diff --git a/src/components/EditStaff/StaffInfo.tsx b/src/components/EditStaff/StaffInfo.tsx index 1c3a9f4..8f21a25 100644 --- a/src/components/EditStaff/StaffInfo.tsx +++ b/src/components/EditStaff/StaffInfo.tsx @@ -116,11 +116,13 @@ const StaffInfo: React.FC = ({ combos }) => { const joinDate = watch("joinDate"); const departDate = watch("departDate"); + const staffId = watch("staffId"); useEffect(() => { if (joinDate) clearErrors("joinDate"); if (departDate) clearErrors("departDate"); - }, [joinDate, departDate]); + if (staffId) clearErrors("staffId") + }, [staffId, joinDate, departDate]); return ( diff --git a/src/components/EditStaff/TeamHistoryModal.tsx b/src/components/EditStaff/TeamHistoryModal.tsx index 247efd7..a84159f 100644 --- a/src/components/EditStaff/TeamHistoryModal.tsx +++ b/src/components/EditStaff/TeamHistoryModal.tsx @@ -114,6 +114,7 @@ const TeamHistoryModal: React.FC = ({ const doSave = useCallback(async () => { try { if (isSaved()) { + console.log(_rows) setValue(thisField, _rows) onClose() } @@ -208,7 +209,6 @@ const TeamHistoryModal: React.FC = ({ useEffect(()=> { console.log(_rows) - // setValue(thisField, _rows) setValue('delTeamHistory', _delRows) }, [_rows, _delRows])