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; currentEmployeeCode: string;
currentEmployee: Employee | null; currentEmployee: Employee | null;
currentIndex: number;
currentIndexPassport: number; currentIndexPassport: number;
currentIndexVisa: number; currentIndexVisa: number;
currentIndexCheckup: number;
currentIndexWorkHistory: number;
profileUrl: string; profileUrl: string;
isEmployeeEdit: boolean; isEmployeeEdit: boolean;
profileSubmit: boolean; profileSubmit: boolean;
@ -625,8 +626,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}>({ }>({
isImageEdit: false, isImageEdit: false,
currentIndexPassport: -1, currentIndexPassport: -1,
currentIndex: -1,
currentIndexVisa: -1, currentIndexVisa: -1,
currentIndexCheckup: -1,
currentIndexWorkHistory: -1,
statusSavePersonal: false, statusSavePersonal: false,
drawerModal: false, drawerModal: false,
imageDialog: false, imageDialog: false,
@ -649,12 +652,11 @@ export const useEmployeeForm = defineStore('form-employee', () => {
id: '', id: '',
code: '', code: '',
customerBranchId: '', customerBranchId: '',
nrcNo: undefined, nrcNo: '',
dateOfBirth: null, dateOfBirth: null,
gender: '', gender: '',
nationality: '', nationality: '',
status: 'CREATED', status: 'CREATED',
namePrefix: '', namePrefix: '',
firstName: '', firstName: '',
firstNameEN: '', 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: { employeeOtherInfo: {
citizenId: '', citizenId: '',
@ -867,7 +907,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
} }
await assignFormDataEmployee(currentFromDataEmployee.value.id); await assignFormDataEmployee(currentFromDataEmployee.value.id);
state.value.currentIndexPassport = -1; state.value.currentIndexVisa = -1;
} }
async function submitOther() { async function submitOther() {
@ -931,6 +971,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}); });
if (res) { if (res) {
state.value.currentIndexWorkHistory = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id); await assignFormDataEmployee(currentFromDataEmployee.value.id);
} }
} }
@ -944,32 +985,38 @@ export const useEmployeeForm = defineStore('form-employee', () => {
}); });
if (res) { 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() { async function submitWorkHistory() {
if (!currentFromDataEmployee.value.employeeWork) return; if (!currentFromDataEmployee.value.employeeWork) return;
if ( if (
!currentFromDataEmployee.value.employeeWork[state.value.currentIndex].id !currentFromDataEmployee.value.employeeWork[
state.value.currentIndexWorkHistory
].id
) { ) {
const res = await employeeStore.createEmployeeWork( const res = await employeeStore.createEmployeeWork(
currentFromDataEmployee.value?.id || '', currentFromDataEmployee.value?.id || '',
currentFromDataEmployee.value.employeeWork[state.value.currentIndex], currentFromDataEmployee.value.employeeWork[
state.value.currentIndexWorkHistory
],
); );
if (res) { if (res) {
currentFromDataEmployee.value.employeeWork[ currentFromDataEmployee.value.employeeWork[
state.value.currentIndex state.value.currentIndexWorkHistory
].id = res.id; ].id = res.id;
currentFromDataEmployee.value.employeeWork[ currentFromDataEmployee.value.employeeWork[
state.value.currentIndex state.value.currentIndexWorkHistory
].statusSave = true; ].statusSave = true;
} }
} else { } else {
const data = const data =
currentFromDataEmployee.value?.employeeWork[state.value.currentIndex]; currentFromDataEmployee.value?.employeeWork[
state.value.currentIndexWorkHistory
];
const res = await employeeStore.editByIdEmployeeWork( const res = await employeeStore.editByIdEmployeeWork(
currentFromDataEmployee.value?.id || '', currentFromDataEmployee.value?.id || '',
@ -978,10 +1025,12 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (res) { if (res) {
currentFromDataEmployee.value.employeeWork[ currentFromDataEmployee.value.employeeWork[
state.value.currentIndex state.value.currentIndexWorkHistory
].statusSave = true; ].statusSave = true;
} }
} }
state.value.currentIndexWorkHistory = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id); await assignFormDataEmployee(currentFromDataEmployee.value.id);
} }
@ -989,26 +1038,31 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (!currentFromDataEmployee.value.employeeCheckup) return; if (!currentFromDataEmployee.value.employeeCheckup) return;
if ( if (
!currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex] !currentFromDataEmployee.value.employeeCheckup[
.id state.value.currentIndexCheckup
].id
) { ) {
const res = await employeeStore.createEmployeeCheckup( const res = await employeeStore.createEmployeeCheckup(
state.value.currentEmployee?.id || '', state.value.currentEmployee?.id || '',
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex], currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndexCheckup
],
); );
if (res) { if (res) {
currentFromDataEmployee.value.employeeCheckup[ currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex state.value.currentIndexCheckup
].id = res.id; ].id = res.id;
currentFromDataEmployee.value.employeeCheckup[ currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex state.value.currentIndexCheckup
].statusSave = true; ].statusSave = true;
} }
} else { } else {
const data = const data =
currentFromDataEmployee.value.employeeCheckup[state.value.currentIndex]; currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndexCheckup
];
const res = await employeeStore.editByIdEmployeeCheckup( const res = await employeeStore.editByIdEmployeeCheckup(
state.value.currentEmployee?.id || '', state.value.currentEmployee?.id || '',
@ -1017,11 +1071,12 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if (res) { if (res) {
currentFromDataEmployee.value.employeeCheckup[ currentFromDataEmployee.value.employeeCheckup[
state.value.currentIndex state.value.currentIndexCheckup
].statusSave = true; ].statusSave = true;
} }
} }
state.value.currentIndexCheckup = -1;
await assignFormDataEmployee(currentFromDataEmployee.value.id); await assignFormDataEmployee(currentFromDataEmployee.value.id);
} }
@ -1108,18 +1163,24 @@ export const useEmployeeForm = defineStore('form-employee', () => {
employeePassport: structuredClone( employeePassport: structuredClone(
payload.employeePassport?.length === 0 payload.employeePassport?.length === 0
? defaultFormData.employeePassport ? state.value.dialogModal
? defaultFormData.employeePassport
: []
: payload.employeePassport, : payload.employeePassport,
), ),
employeeVisa: structuredClone( employeeVisa: structuredClone(
payload.employeeVisa?.length === 0 payload.employeeVisa?.length === 0
? defaultFormData.employeeVisa ? state.value.dialogModal
? defaultFormData.employeeVisa
: []
: payload.employeeVisa, : payload.employeeVisa,
), ),
employeeCheckup: structuredClone( employeeCheckup: structuredClone(
payload.employeeCheckup?.length === 0 payload.employeeCheckup?.length === 0
? defaultFormData.employeeCheckup ? state.value.dialogModal
? defaultFormData.employeeCheckup
: []
: payload.employeeCheckup?.map((item) => ({ : payload.employeeCheckup?.map((item) => ({
...item, ...item,
statusSave: true, statusSave: true,
@ -1133,7 +1194,9 @@ export const useEmployeeForm = defineStore('form-employee', () => {
), ),
employeeWork: structuredClone( employeeWork: structuredClone(
payload.employeeWork?.length === 0 payload.employeeWork?.length === 0
? defaultFormData.employeeWork ? state.value.dialogModal
? defaultFormData.employeeWork
: []
: payload.employeeWork?.map((item) => ({ : payload.employeeWork?.map((item) => ({
...item, ...item,
statusSave: true, statusSave: true,
@ -1146,7 +1209,10 @@ export const useEmployeeForm = defineStore('form-employee', () => {
const group = fragment.length === 1 ? 'other' : fragment.at(0); const group = fragment.length === 1 ? 'other' : fragment.at(0);
return { return {
url: await employeeStore.getAttachment(_data.id, name), url: await employeeStore.getAttachment({
parentId: _data.id,
name,
}),
name, name,
group, group,
}; };
@ -1198,7 +1264,7 @@ export const useEmployeeForm = defineStore('form-employee', () => {
if ( if (
foundBranch.address === payload.address && foundBranch.address === payload.address &&
foundBranch.zipCode === payload.zipCode foundBranch.subDistrict.id === payload.subDistrictId
) { ) {
state.value.formDataEmployeeSameAddr = true; state.value.formDataEmployeeSameAddr = true;
} else { } else {
@ -1279,13 +1345,46 @@ export const useEmployeeForm = defineStore('form-employee', () => {
(currentFromDataEmployee.value.employeeVisa?.length || 0) - 1; (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 { return {
state, state,
currentFromDataEmployee, currentFromDataEmployee,
resetEmployeeData, resetEmployeeData,
addPassport, addPassport,
addVisa, addVisa,
addCheckup,
addWorkHistory,
submitPassport, submitPassport,
submitVisa, submitVisa,