diff --git a/src/components/DrawerInfo.vue b/src/components/DrawerInfo.vue index 62026126..2eac1455 100644 --- a/src/components/DrawerInfo.vue +++ b/src/components/DrawerInfo.vue @@ -17,6 +17,7 @@ withDefaults( submit?: (...args: unknown[]) => void; close?: (...args: unknown[]) => void; undo?: (...args: unknown[]) => void; + beforeClose?: (...args: unknown[]) => boolean; }>(), { showEdit: true, @@ -42,6 +43,7 @@ function reset() { no-swipe-open @before-hide="reset" @hide="close" + @update:model-value="(v) => (drawerOpen = beforeClose ? beforeClose() : v)" :width="$q.screen.gt.xs ? windowSize * 0.85 : windowSize" v-model="drawerOpen" behavior="mobile" @@ -139,7 +141,12 @@ function reset() { class="close-btn" :class="{ dark: $q.dark.isActive }" type="reset" - @click="close" + @click=" + () => { + drawerOpen = beforeClose ? beforeClose() : !drawerOpen; + close?.(); + } + " resetValidation /> diff --git a/src/pages/03_customer-management/MainPage.vue b/src/pages/03_customer-management/MainPage.vue index b75ae851..ae5069ff 100644 --- a/src/pages/03_customer-management/MainPage.vue +++ b/src/pages/03_customer-management/MainPage.vue @@ -465,10 +465,50 @@ function createCustomerForm(customerType: 'CORP' | 'PERS') { } function createEmployeeForm() { + employeeFormStore.resetFormDataEmployee(); employeeFormState.value.dialogModal = true; } // TODO: When in employee form, if select address same as customer then auto fill + +watch( + () => employeeFormState.value.formDataEmployeeOwner, + (e) => { + if (!e) return; + if (employeeFormState.value.formDataEmployeeSameAddr) { + currentFromDataEmployee.value.address = e.address; + currentFromDataEmployee.value.addressEN = e.addressEN; + currentFromDataEmployee.value.provinceId = e.provinceId; + currentFromDataEmployee.value.districtId = e.districtId; + currentFromDataEmployee.value.subDistrictId = e.subDistrictId; + currentFromDataEmployee.value.zipCode = e.zipCode; + } + currentFromDataEmployee.value.customerBranchId = e.id; + }, +); + +watch( + () => employeeFormState.value.formDataEmployeeSameAddr, + (isSame) => { + if (!employeeFormState.value.formDataEmployeeOwner) return; + if (isSame) { + currentFromDataEmployee.value.address = + employeeFormState.value.formDataEmployeeOwner.address; + currentFromDataEmployee.value.addressEN = + employeeFormState.value.formDataEmployeeOwner.addressEN; + currentFromDataEmployee.value.provinceId = + employeeFormState.value.formDataEmployeeOwner.provinceId; + currentFromDataEmployee.value.districtId = + employeeFormState.value.formDataEmployeeOwner.districtId; + currentFromDataEmployee.value.subDistrictId = + employeeFormState.value.formDataEmployeeOwner.subDistrictId; + currentFromDataEmployee.value.zipCode = + employeeFormState.value.formDataEmployeeOwner.zipCode; + } + currentFromDataEmployee.value.customerBranchId = + employeeFormState.value.formDataEmployeeOwner.id; + }, +);