refactor: edit current inde of checkup and work

This commit is contained in:
Thanaphon Frappet 2024-11-15 14:38:26 +07:00 committed by Methapon Metanipat
parent 0c8e314c8b
commit a7ada91861

View file

@ -593,9 +593,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
currentEmployeeCode: string;
currentEmployee: Employee | null;
currentIndex: number;
currentIndexPassport: number;
currentIndexVisa: number;
currentIndexCheckup: number;
currentIndexWorkHistory: number;
profileUrl: string;
isEmployeeEdit: boolean;
profileSubmit: boolean;
@ -625,8 +626,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}>({
isImageEdit: false,
currentIndexPassport: -1,
currentIndex: -1,
currentIndexVisa: -1,
currentIndexCheckup: -1,
currentIndexWorkHistory: -1,
statusSavePersonal: false,
drawerModal: false,
imageDialog: false,
@ -649,12 +652,11 @@ export const useEmployeeForm = defineStore('form-employee', () => {
id: '',
code: '',
customerBranchId: '',
nrcNo: undefined,
nrcNo: '',
dateOfBirth: null,
gender: '',
nationality: '',
status: 'CREATED',
namePrefix: '',
firstName: '',
firstNameEN: '',
@ -714,9 +716,47 @@ export const useEmployeeForm = defineStore('form-employee', () => {
},
],
employeeVisa: [],
employeeVisa: [
{
arrivalAt: '',
arrivalTMNo: '',
arrivalTM: '',
mrz: undefined,
entryCount: 0,
issuePlace: '',
issueCountry: '',
issueDate: new Date(),
type: '',
expireDate: new Date(),
remark: undefined,
workerType: '',
number: '',
},
],
employeePassport: [],
employeePassport: [
{
birthCountry: '',
previousPassportRef: '',
issuePlace: '',
issueCountry: '',
issueDate: new Date(),
type: '',
expireDate: new Date(),
birthDate: new Date(),
workerStatus: '',
nationality: '',
gender: '',
lastNameEN: '',
lastName: '',
middleNameEN: '',
middleName: '',
firstNameEN: '',
firstName: '',
namePrefix: '',
number: '',
},
],
employeeOtherInfo: {
citizenId: '',
@ -867,7 +907,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}
await assignFormDataEmployee(currentFromDataEmployee.value.id);
state.value.currentIndexPassport = -1;
state.value.currentIndexVisa = -1;
}
async function submitOther() {
@ -931,6 +971,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
});
if (res) {
state.value.currentIndexWorkHistory = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
}
@ -944,32 +985,38 @@ export const useEmployeeForm = defineStore('form-employee', () => {
});
if (res) {
currentFromDataEmployee.value.employeeCheckup.splice(index, 1);
state.value.currentIndexCheckup = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
async function submitWorkHistory() {
if (!currentFromDataEmployee.value.employeeWork) return;
if (
!currentFromDataEmployee.value.employeeWork[state.value.currentIndex].id
!currentFromDataEmployee.value.employeeWork[
state.value.currentIndexWorkHistory
].id
) {
const res = await employeeStore.createEmployeeWork(
currentFromDataEmployee.value?.id || '',
currentFromDataEmployee.value.employeeWork[state.value.currentIndex],
currentFromDataEmployee.value.employeeWork[
state.value.currentIndexWorkHistory
],
);
if (res) {
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
state.value.currentIndexWorkHistory
].id = res.id;
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
state.value.currentIndexWorkHistory
].statusSave = true;
}
} else {
const data =
currentFromDataEmployee.value?.employeeWork[state.value.currentIndex];
currentFromDataEmployee.value?.employeeWork[
state.value.currentIndexWorkHistory
];
const res = await employeeStore.editByIdEmployeeWork(
currentFromDataEmployee.value?.id || '',
@ -978,10 +1025,12 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (res) {
currentFromDataEmployee.value.employeeWork[
state.value.currentIndex
state.value.currentIndexWorkHistory
].statusSave = true;
}
}
state.value.currentIndexWorkHistory = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
@ -989,26 +1038,31 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (!currentFromDataEmployee.value.employeeCheckup) return;
if (
!currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex]
.id
!currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndexCheckup
].id
) {
const res = await employeeStore.createEmployeeCheckup(
state.value.currentEmployee?.id || '',
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex],
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndexCheckup
],
);
if (res) {
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
state.value.currentIndexCheckup
].id = res.id;
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
state.value.currentIndexCheckup
].statusSave = true;
}
} else {
const data =
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex];
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndexCheckup
];
const res = await employeeStore.editByIdEmployeeCheckup(
state.value.currentEmployee?.id || '',
@ -1017,11 +1071,12 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (res) {
currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex
state.value.currentIndexCheckup
].statusSave = true;
}
}
state.value.currentIndexCheckup = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id);
}
@ -1108,18 +1163,24 @@ export const useEmployeeForm = defineStore('form-employee', () => {
employeePassport: structuredClone(
payload.employeePassport?.length === 0
? defaultFormData.employeePassport
? state.value.dialogModal
? defaultFormData.employeePassport
: []
: payload.employeePassport,
),
employeeVisa: structuredClone(
payload.employeeVisa?.length === 0
? defaultFormData.employeeVisa
? state.value.dialogModal
? defaultFormData.employeeVisa
: []
: payload.employeeVisa,
),
employeeCheckup: structuredClone(
payload.employeeCheckup?.length === 0
? defaultFormData.employeeCheckup
? state.value.dialogModal
? defaultFormData.employeeCheckup
: []
: payload.employeeCheckup?.map((item) => ({
...item,
statusSave: true,
@ -1133,7 +1194,9 @@ export const useEmployeeForm = defineStore('form-employee', () => {
),
employeeWork: structuredClone(
payload.employeeWork?.length === 0
? defaultFormData.employeeWork
? state.value.dialogModal
? defaultFormData.employeeWork
: []
: payload.employeeWork?.map((item) => ({
...item,
statusSave: true,
@ -1146,7 +1209,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
const group = fragment.length === 1 ? 'other' : fragment.at(0);
return {
url: await employeeStore.getAttachment(_data.id, name),
url: await employeeStore.getAttachment({
parentId: _data.id,
name,
}),
name,
group,
};
@ -1198,7 +1264,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (
foundBranch.address === payload.address &&
foundBranch.zipCode === payload.zipCode
foundBranch.subDistrict.id === payload.subDistrictId
) {
state.value.formDataEmployeeSameAddr = true;
} else {
@ -1279,13 +1345,46 @@ export const useEmployeeForm = defineStore('form-employee', () => {
(currentFromDataEmployee.value.employeeVisa?.length || 0) - 1;
}
function addCheckup() {
currentFromDataEmployee.value.employeeCheckup?.push({
coverageExpireDate: null,
coverageStartDate: null,
insuranceCompany: '',
medicalBenefitScheme: '',
remark: '',
hospitalName: '',
provinceId: '',
checkupResult: '',
checkupType: '',
});
state.value.currentIndexCheckup =
(currentFromDataEmployee.value.employeeCheckup?.length || 0) - 1;
}
function addWorkHistory() {
currentFromDataEmployee.value.employeeWork?.push({
workPermitExpireDate: null,
workPermitIssueDate: null,
workPermitNo: '',
workplace: '',
jobType: '',
positionName: '',
ownerName: '',
});
state.value.currentIndexWorkHistory =
(currentFromDataEmployee.value.employeeWork?.length || 0) - 1;
}
return {
state,
currentFromDataEmployee,
resetEmployeeData,
addPassport,
addVisa,
addCheckup,
addWorkHistory,
submitPassport,
submitVisa,