From d21506f4d6a3f7cff8a17902439e46234c499c33 Mon Sep 17 00:00:00 2001 From: Net Date: Tue, 13 Aug 2024 13:31:29 +0700 Subject: [PATCH] refactor: handle edit --- .../FormEmployeeHealthCheck.vue | 6 ++++++ src/pages/03_customer-management/MainPage.vue | 15 ++++++++++++--- src/pages/03_customer-management/form.ts | 3 ++- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/components/03_customer-management/FormEmployeeHealthCheck.vue b/src/components/03_customer-management/FormEmployeeHealthCheck.vue index b25aa7c9..1b0b9f74 100644 --- a/src/components/03_customer-management/FormEmployeeHealthCheck.vue +++ b/src/components/03_customer-management/FormEmployeeHealthCheck.vue @@ -31,6 +31,7 @@ const addrOptions = reactive<{ subDistrictOps: [], }); +const currentIndex = defineModel('currentIndex'); const employeeCheckup = defineModel('employeeCheckup'); const checkupTypeOption = defineModel<{ label: string; value: string }[]>( 'checkupTypeOption', @@ -164,6 +165,7 @@ const insuranceCompanyFilter = selectFilterOptionRefMod( class="q-ml-sm" type="button" @click="addCheckup" + :disabled="!(currentIndex === -1)" /> @@ -188,12 +190,14 @@ const insuranceCompanyFilter = selectFilterOptionRefMod( icon-only @click="$emit('undo', index)" type="button" + :disabled="!(currentIndex === -1) && !(currentIndex === index)" /> diff --git a/src/pages/03_customer-management/MainPage.vue b/src/pages/03_customer-management/MainPage.vue index 7a9e2bb7..641778fb 100644 --- a/src/pages/03_customer-management/MainPage.vue +++ b/src/pages/03_customer-management/MainPage.vue @@ -2527,6 +2527,7 @@ watch( await fetchListEmployee(); employeeFormState.isEmployeeEdit = false; + employeeFormState.currentIndex = -1; } " :show=" @@ -2734,9 +2735,12 @@ watch( prefix-id="form-employee" dense outlined - v-model:employeeCheckup="currentFromDataEmployee.employeeCheckup" - v-model:checkupTypeOption="optionStore.globalOption.insurancePlace" - v-model:medicalBenefitOption=" + v-model:current-index="employeeFormState.currentIndex" + v-model:employee-checkup="currentFromDataEmployee.employeeCheckup" + v-model:checkup-type-option=" + optionStore.globalOption.insurancePlace + " + v-model:medical-benefit-option=" optionStore.globalOption.typeInsurance " v-model:insuranceCompanyOption=" @@ -2753,6 +2757,7 @@ watch( if ( currentFromDataEmployee.employeeCheckup?.[index].statusSave ) { + employeeFormState.currentIndex = index; currentFromDataEmployee.employeeCheckup[index].statusSave = false; } @@ -2764,6 +2769,7 @@ watch( currentFromDataEmployee.employeeCheckup?.[index] .statusSave === false ) { + employeeFormState.currentIndex = -1; currentFromDataEmployee.employeeCheckup[index].statusSave = true; employeeFormStore.resetFormDataEmployee(); @@ -2783,6 +2789,7 @@ watch( prefix-id="form-employee" dense outlined + v-model:current-index="employeeFormState.currentIndex" v-model:employee-work="currentFromDataEmployee.employeeWork" v-model:position-name-option="optionStore.globalOption.position" v-model:job-type-option="optionStore.globalOption.businessType" @@ -2804,6 +2811,7 @@ watch( currentFromDataEmployee.employeeWork?.[index].statusSave === false ) { + employeeFormState.currentIndex = -1; currentFromDataEmployee.employeeWork[index].statusSave = true; } } @@ -2811,6 +2819,7 @@ watch( @edit=" (index) => { if (currentFromDataEmployee.employeeWork?.[index].statusSave) { + employeeFormState.currentIndex = index; currentFromDataEmployee.employeeWork[index].statusSave = false; } diff --git a/src/pages/03_customer-management/form.ts b/src/pages/03_customer-management/form.ts index 242888c6..7f5c3e48 100644 --- a/src/pages/03_customer-management/form.ts +++ b/src/pages/03_customer-management/form.ts @@ -392,6 +392,7 @@ export const useEmployeeForm = defineStore('form-employee', () => { currentTab: string; dialogModal: boolean; drawerModal: boolean; + currentEmployeeCode: string; currentEmployee: Employee | null; currentIndex: number; @@ -422,7 +423,7 @@ export const useEmployeeForm = defineStore('form-employee', () => { } | undefined; }>({ - currentIndex: 0, + currentIndex: -1, statusSavePersonal: false, drawerModal: false, imageDialog: false,