refactor: add submitWorkHistory and submitHealthCheck

This commit is contained in:
Net 2024-08-07 18:34:50 +07:00
parent 5e525e43da
commit 7a81991c79
4 changed files with 170 additions and 15 deletions

View file

@ -238,6 +238,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
drawerModal: boolean;
currentEmployeeCode: string;
currentEmployee: Employee | null;
currentIndex: number;
profileUrl: string;
isEmployeeEdit: boolean;
profileSubmit: boolean;
@ -265,6 +266,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}
| undefined;
}>({
currentIndex: 0,
statusSavePersonal: false,
drawerModal: false,
imageDialog: false,
@ -385,6 +387,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
function resetFormDataEmployee(clean = false) {
if (clean) {
state.value.currentTab = 'personalInfo';
state.value.formDataEmployeeOwner = undefined;
resetEmployeeData = structuredClone(defaultFormData);
state.value.statusSavePersonal = false;
@ -393,6 +396,77 @@ export const useEmployeeForm = defineStore('form-employee', () => {
currentFromDataEmployee.value = structuredClone(resetEmployeeData);
}
async function submitWorkHistory() {
if (!currentFromDataEmployee.value.employeeWork) return;
if (
!currentFromDataEmployee.value.employeeWork[state.value.currentIndex].id
) {
const res = await employeeStore.createEmployeeWork(
currentFromDataEmployee.value?.id || '',
currentFromDataEmployee.value.employeeWork[state.value.currentIndex],
);
if (res) {
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
].id = res.id;
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
].statusSave = true;
}
} else {
const res = await employeeStore.editByIdEmployeeWork(
currentFromDataEmployee.value?.id || '',
currentFromDataEmployee.value.employeeWork[state.value.currentIndex],
);
if (res) {
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
].statusSave = true;
}
}
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
async function submitHealthCheck() {
if (!currentFromDataEmployee.value.employeeCheckup) return;
if (
!currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex]
.id
) {
const res = await employeeStore.createEmployeeCheckup(
state.value.currentEmployee?.id || '',
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex],
);
if (res) {
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
].id = res.id;
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
].statusSave = true;
}
} else {
const res = await employeeStore.editByIdEmployeeCheckup(
state.value.currentEmployee?.id || '',
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex],
);
if (res) {
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
].statusSave = true;
}
}
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
async function submitPersonal() {
if (state.value.dialogType === 'create') {
const res = await employeeStore.create({
@ -403,8 +477,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
employeeCheckup: [],
employeeOtherInfo: undefined,
});
if (res) {
await assignFormDataEmployee(res.id);
currentFromDataEmployee.value.id = res.id;
state.value.statusSavePersonal = true;
}
}
@ -462,9 +538,20 @@ export const useEmployeeForm = defineStore('form-employee', () => {
provinceId: province?.id,
districtId: district?.id,
subDistrictId: subDistrict?.id,
employeeCheckup: structuredClone(playlond.employeeCheckup),
employeeOtherInfo: structuredClone(playlond.employeeOtherInfo),
employeeWork: structuredClone(playlond.employeeWork),
employeeCheckup: structuredClone(
playlond.employeeCheckup?.length === 0
? defaultFormData.employeeCheckup
: playlond.employeeCheckup?.map((item) => ({
...item,
statusSave: true,
})),
),
employeeOtherInfo: structuredClone(playlond.employeeOtherInfo || {}),
employeeWork: structuredClone(
playlond.employeeWork?.length === 0
? defaultFormData.employeeWork
: playlond.employeeWork,
),
image: null,
};
@ -518,7 +605,9 @@ export const useEmployeeForm = defineStore('form-employee', () => {
currentFromDataEmployee,
resetEmployeeData,
submitWorkHistory,
submitPersonal,
submitHealthCheck,
resetFormDataEmployee,
assignFormDataEmployee,