From 9a57056ffa39ec9a82dedbd447ae0d970e9b2435 Mon Sep 17 00:00:00 2001 From: puriphatt Date: Wed, 30 Apr 2025 15:11:12 +0700 Subject: [PATCH 1/5] refactor: remove unused workerList and reset selectedWorker on branch change --- src/pages/05_quotation/QuotationForm.vue | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/pages/05_quotation/QuotationForm.vue b/src/pages/05_quotation/QuotationForm.vue index d7e332f7..fdc36d8b 100644 --- a/src/pages/05_quotation/QuotationForm.vue +++ b/src/pages/05_quotation/QuotationForm.vue @@ -198,7 +198,6 @@ const selectedWorkerItem = computed(() => { })), ]; }); -const workerList = ref([]); const firstCodePayment = ref(''); const selectedProductGroup = ref(''); const selectedInstallmentNo = ref([]); @@ -1059,12 +1058,7 @@ watch( () => quotationFormData.value.customerBranchId, async (v) => { if (!v) return; - - const retEmp = await customerStore.fetchBranchEmployee(v, { - passport: true, - }); - - if (retEmp) workerList.value = retEmp.data.result; + selectedWorker.value = []; }, ); @@ -2531,8 +2525,8 @@ function covertToNode() { } :deep( - i.q-icon.mdi.mdi-chevron-down-circle.q-expansion-item__toggle-icon.q-expansion-item__toggle-icon--rotated - ) { + i.q-icon.mdi.mdi-chevron-down-circle.q-expansion-item__toggle-icon.q-expansion-item__toggle-icon--rotated +) { color: var(--brand-1); } @@ -2549,9 +2543,9 @@ function covertToNode() { } :deep( - .q-item.q-item-type.row.no-wrap.q-item--dense.q-item--clickable.q-link.cursor-pointer.q-focusable.q-hoverable.surface-1 - .q-focus-helper - ) { + .q-item.q-item-type.row.no-wrap.q-item--dense.q-item--clickable.q-link.cursor-pointer.q-focusable.q-hoverable.surface-1 + .q-focus-helper +) { visibility: hidden; } From 70e9755952d1f7a6f91ed6e602681bd040bc60d8 Mon Sep 17 00:00:00 2001 From: puriphatt Date: Wed, 30 Apr 2025 15:34:30 +0700 Subject: [PATCH 2/5] fix: ensure contactName and contactTel default to empty string if undefined --- src/pages/02_personnel-management/MainPage.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/02_personnel-management/MainPage.vue b/src/pages/02_personnel-management/MainPage.vue index b0aa4f02..d5a54507 100644 --- a/src/pages/02_personnel-management/MainPage.vue +++ b/src/pages/02_personnel-management/MainPage.vue @@ -600,8 +600,8 @@ async function assignFormData(idEdit: string) { responsibleArea: foundUser.responsibleArea, status: foundUser.status, selectedImage: foundUser.selectedImage, - contactName: foundUser.contactName, - contactTel: foundUser.contactTel, + contactName: foundUser.contactName || '', + contactTel: foundUser.contactTel || '', licenseExpireDate: (foundUser.licenseExpireDate && new Date(foundUser.licenseExpireDate)) || From 4d023a7c7c5e5ed6b50277205ee6619d1413509a Mon Sep 17 00:00:00 2001 From: puriphatt Date: Wed, 30 Apr 2025 16:15:08 +0700 Subject: [PATCH 3/5] feat: add smooth scrolling on validation error for forms --- src/components/DialogForm.vue | 10 ++++++++++ src/components/DrawerInfo.vue | 10 ++++++++++ src/components/dialog/DialogFormContainer.vue | 10 ++++++++++ src/pages/02_personnel-management/MainPage.vue | 1 - 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/components/DialogForm.vue b/src/components/DialogForm.vue index 84319bcf..fb29a4ca 100644 --- a/src/components/DialogForm.vue +++ b/src/components/DialogForm.vue @@ -42,6 +42,15 @@ defineProps<{ const modal = defineModel('modal', { default: false }); const currentTab = defineModel('currentTab'); + +async function onValidationError(ref: any) { + const el = ref.$el as Element; + el.scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'nearest', + }); +}