Browse Source

update

pull/11/head
MSI\derek 5 months ago
parent
commit
fc3eb118c0
6 changed files with 47 additions and 28 deletions
  1. +9
    -1
      src/app/api/staff/actions.ts
  2. +26
    -17
      src/components/CreateStaff/CreateStaff.tsx
  3. +8
    -7
      src/components/CreateStaff/StaffInfo.tsx
  4. +0
    -1
      src/components/EditStaff/EditStaff.tsx
  5. +3
    -1
      src/components/EditStaff/StaffInfo.tsx
  6. +1
    -1
      src/components/EditStaff/TeamHistoryModal.tsx

+ 9
- 1
src/app/api/staff/actions.ts View File

@@ -107,9 +107,17 @@ export interface CreateStaffInputs {
salaryPoint: number; 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) => { export const saveStaff = async (data: CreateStaffInputs) => {
// try { // try {
const newStaffList = await serverFetchJson(`${BASE_API_URL}/staffs/save`, {
const newStaffList = await serverFetchJson<NewStaffResponse>(`${BASE_API_URL}/staffs/save`, {
method: "POST", method: "POST",
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },


+ 26
- 17
src/components/CreateStaff/CreateStaff.tsx View File

@@ -45,9 +45,12 @@ interface formProps {


const CreateStaff: React.FC<formProps> = ({ combos }) => { const CreateStaff: React.FC<formProps> = ({ combos }) => {
const { t } = useTranslation(); const { t } = useTranslation();
const formProps = useForm<CreateStaffInputs>();
const formProps = useForm<CreateStaffInputs>({
defaultValues: {
teamHistory: []
}
});
const [serverError, setServerError] = useState(""); const [serverError, setServerError] = useState("");
const [errorMsg, setErrorMsg] = useState("An error has occurred. Please try again later.")
const router = useRouter(); const router = useRouter();
// const [tabIndex, setTabIndex] = useState(0); // const [tabIndex, setTabIndex] = useState(0);


@@ -67,7 +70,7 @@ const CreateStaff: React.FC<formProps> = ({ combos }) => {


const onSubmit = useCallback<SubmitHandler<CreateStaffInputs>>( const onSubmit = useCallback<SubmitHandler<CreateStaffInputs>>(
async (data) => { async (data) => {
try {
// try {
console.log(data); console.log(data);
formProps.clearErrors() formProps.clearErrors()
let haveError = false; let haveError = false;
@@ -129,16 +132,18 @@ const CreateStaff: React.FC<formProps> = ({ combos }) => {
haveError = true haveError = true
formProps.setError("currentPositionId", { message: t("Please Enter Current Position"), type: "required" }) formProps.setError("currentPositionId", { message: t("Please Enter Current Position"), type: "required" })
} }
console.log(data.teamHistory)
console.log(haveError)
if (haveError) { if (haveError) {
return return
} }
const teamHistory = data.teamHistory
const teamHistory = data.teamHistory.length !== 0 ? data.teamHistory
.map((item) => ({ .map((item) => ({
id: item.id, id: item.id,
team: combos.team.filter(team => team.label === item.team)[0].id, team: combos.team.filter(team => team.label === item.team)[0].id,
from: dayjs(item.from).format('YYYY-MM-DD'), 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 const gradeHistory = data.gradeHistory
.map((item) => ({ .map((item) => ({
@@ -166,7 +171,7 @@ const CreateStaff: React.FC<formProps> = ({ combos }) => {
// id: id, // id: id,
...data, ...data,
salaryEffectiveInfo: salaryEffectiveInfo, salaryEffectiveInfo: salaryEffectiveInfo,
teamHistory: teamHistory ?? [],
teamHistory: teamHistory,
gradeHistory: gradeHistory ?? [], gradeHistory: gradeHistory ?? [],
positionHistory: positionHistory ?? [], positionHistory: positionHistory ?? [],
delTeamHistory: data.delTeamHistory ? data.delTeamHistory : [], delTeamHistory: data.delTeamHistory ? data.delTeamHistory : [],
@@ -176,19 +181,23 @@ const CreateStaff: React.FC<formProps> = ({ combos }) => {
console.log("passed") console.log("passed")
console.log(postData) console.log(postData)
// return // 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") 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]
); );


+ 8
- 7
src/components/CreateStaff/StaffInfo.tsx View File

@@ -82,6 +82,7 @@ const StaffInfo: React.FC<Props> = ({ combos }) => {
formState: { errors, defaultValues }, formState: { errors, defaultValues },
control, control,
reset, reset,
watch,
resetField, resetField,
setValue, setValue,
getValues, getValues,
@@ -119,15 +120,15 @@ const StaffInfo: React.FC<Props> = ({ combos }) => {
setTableKey(key) setTableKey(key)
}, [isOpen]) }, [isOpen])


const joinDate = getValues("joinDate");
const departDate = getValues("departDate");
const joinDate = watch("joinDate");
const departDate = watch("departDate");
const staffId = watch("staffId");


useEffect(() => { 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 ( return (
<Card sx={{ display: "block" }}> <Card sx={{ display: "block" }}>


+ 0
- 1
src/components/EditStaff/EditStaff.tsx View File

@@ -112,7 +112,6 @@ const EditStaff: React.FC<formProps> = ({ Staff, combos, SalaryEffectiveInfo, In
delPositionHistory: [], delPositionHistory: [],
}}); }});


const [serverError, setServerError] = useState(""); const [serverError, setServerError] = useState("");
const router = useRouter(); const router = useRouter();


+ 3
- 1
src/components/EditStaff/StaffInfo.tsx View File

@@ -116,11 +116,13 @@ const StaffInfo: React.FC<Props> = ({ combos }) => {


const joinDate = watch("joinDate"); const joinDate = watch("joinDate");
const departDate = watch("departDate"); const departDate = watch("departDate");
const staffId = watch("staffId");
useEffect(() => { useEffect(() => {
if (joinDate) clearErrors("joinDate"); if (joinDate) clearErrors("joinDate");
if (departDate) clearErrors("departDate"); if (departDate) clearErrors("departDate");
}, [joinDate, departDate]);
if (staffId) clearErrors("staffId")
}, [staffId, joinDate, departDate]);


return ( return (
<Card sx={{ display: "block" }}> <Card sx={{ display: "block" }}>


+ 1
- 1
src/components/EditStaff/TeamHistoryModal.tsx View File

@@ -114,6 +114,7 @@ const TeamHistoryModal: React.FC<Props> = ({
const doSave = useCallback(async () => { const doSave = useCallback(async () => {
try { try {
if (isSaved()) { if (isSaved()) {
console.log(_rows)
setValue(thisField, _rows) setValue(thisField, _rows)
onClose() onClose()
} }
@@ -208,7 +209,6 @@ const TeamHistoryModal: React.FC<Props> = ({
useEffect(()=> { useEffect(()=> {
console.log(_rows) console.log(_rows)
// setValue(thisField, _rows)
setValue('delTeamHistory', _delRows) setValue('delTeamHistory', _delRows)
}, [_rows, _delRows]) }, [_rows, _delRows])




Loading…
Cancel
Save