From 80c8a0d8b4ee69505ee00bc49083602edea8d511 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Mon, 19 May 2025 16:00:21 +0700 Subject: [PATCH 001/211] fix: form not clear --- src/pages/03_customer-management/form.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/03_customer-management/form.ts b/src/pages/03_customer-management/form.ts index 2d529a5c..6ce28a18 100644 --- a/src/pages/03_customer-management/form.ts +++ b/src/pages/03_customer-management/form.ts @@ -965,6 +965,7 @@ export const useEmployeeForm = defineStore('form-employee', () => { resetEmployeeData = structuredClone(defaultFormData); state.value.statusSavePersonal = false; state.value.profileUrl = ''; + state.value.currentBranchId = ''; } else { resetEmployeeData.selectedImage = currentFromDataEmployee.value.selectedImage; From 0f252b308017e6884acde064cd4801d0439b0d68 Mon Sep 17 00:00:00 2001 From: puriphatt Date: Tue, 20 May 2025 11:43:07 +0700 Subject: [PATCH 002/211] =?UTF-8?q?fix:=20update=20label=20from=20'?= =?UTF-8?q?=E0=B8=84=E0=B8=B3=E0=B8=99=E0=B8=B3=E0=B8=AB=E0=B8=99=E0=B9=89?= =?UTF-8?q?=E0=B8=B2'=20to=20'Prefix'=20in=20forms=20(english)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/02_personnel-management/FormPerson.vue | 2 +- .../components/employer/EmployerFormAbout.vue | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/02_personnel-management/FormPerson.vue b/src/components/02_personnel-management/FormPerson.vue index 7335391d..6d8601a6 100644 --- a/src/components/02_personnel-management/FormPerson.vue +++ b/src/components/02_personnel-management/FormPerson.vue @@ -165,7 +165,7 @@ watch( :id="`${prefixId}-select-prefix-name-en`" :for="`${prefixId}-select-prefix-name-en`" :rules="[(val: string) => !!val || $t('form.error.required')]" - :label="$t('personnel.form.prefixName')" + label="Prefix" class="col-md-1 col-6" v-model="prefixName" /> diff --git a/src/pages/03_customer-management/components/employer/EmployerFormAbout.vue b/src/pages/03_customer-management/components/employer/EmployerFormAbout.vue index eb131ea9..432228b1 100644 --- a/src/pages/03_customer-management/components/employer/EmployerFormAbout.vue +++ b/src/pages/03_customer-management/components/employer/EmployerFormAbout.vue @@ -393,7 +393,7 @@ watch( :readonly="readonly" :disable="!readonly" class="col-md-2 col-6" - label="Title" + label="Prefix" :model-value=" readonly ? capitalize(prefixName || '') || '-' From cd86e7718a066f125b3741b984ede27701a99361 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 22 May 2025 11:52:24 +0700 Subject: [PATCH 003/211] fix: id --- src/pages/04_flow-managment/MainPage.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/04_flow-managment/MainPage.vue b/src/pages/04_flow-managment/MainPage.vue index f8d45b37..cf17d51a 100644 --- a/src/pages/04_flow-managment/MainPage.vue +++ b/src/pages/04_flow-managment/MainPage.vue @@ -763,7 +763,7 @@ watch( " /> import { nextTick, onMounted, ref, watch } from 'vue'; import { DeleteButton, EditButton, SaveButton, UndoButton } from '../button'; -import { scrollToElement } from 'stores/utils'; // import { useI18n } from 'vue-i18n'; // import { storeToRefs } from 'pinia'; @@ -138,11 +137,8 @@ watch( @click=" () => { assignClone(); - if (nameList[nameList.length - 1].name === '') { - $emit('delete', cloneList[cloneList.length - 1].id, true); - cloneList = cloneList.filter((item) => item.name !== ''); - nameList = nameList.filter((item) => item.name !== ''); - } + cloneList = cloneList.filter((item) => item.name !== ''); + nameList = nameList.filter((item) => item.name !== ''); } " /> diff --git a/src/pages/04_product-service/MainPage.vue b/src/pages/04_product-service/MainPage.vue index 88d6746c..47570c55 100644 --- a/src/pages/04_product-service/MainPage.vue +++ b/src/pages/04_product-service/MainPage.vue @@ -60,6 +60,7 @@ import { ServiceById, WorkItems, Attributes, + WorkCreate, } from 'stores/product-service/types'; import { computed } from 'vue'; import { @@ -1448,17 +1449,11 @@ function confirmDeleteWork(id: string, noDialog?: boolean) { } } -function triggerConfirmCloseWork() { +function triggerConfirmCloseWorkName() { dialogWarningClose(t, { message: t('dialog.message.warningClose'), action: () => { manageWorkNameDialog.value = false; - if (workNameItems.value[workNameItems.value.length - 1].name === '') { - confirmDeleteWork( - workNameItems.value[workNameItems.value.length - 1].id, - true, - ); - } }, cancel: () => {}, }); @@ -1888,6 +1883,20 @@ async function copy(id: string) { dialogService.value = true; } +function addWorkName(data: { name: string; order: number }) { + workNameItems.value.push({ id: '', name: data.name, isEdit: true }); +} + +async function submitWorkName( + workId: string, + data: Partial, +) { + if (workNameItems.value.length === 0) return; + + if (!workId) await createWork({ ...data, order: 1 }); + else await editWork(workId, data); +} + watch( () => formService.value.attributes.workflowId, async (a, b) => { @@ -4669,7 +4678,7 @@ watch( ? workNameRef.isWorkNameEdit() : false; if (isWorkNameEdit) { - triggerConfirmCloseWork(); + triggerConfirmCloseWorkName(); return true; } return false; @@ -4681,8 +4690,8 @@ watch( ref="workNameRef" v-model:name-list="workNameItems" @delete="confirmDeleteWork" - @edit="editWork" - @add="createWork" + @edit="submitWorkName" + @add="addWorkName" /> diff --git a/src/stores/product-service/index.ts b/src/stores/product-service/index.ts index 0405bf16..80e32627 100644 --- a/src/stores/product-service/index.ts +++ b/src/stores/product-service/index.ts @@ -441,7 +441,7 @@ const useProductServiceStore = defineStore('api-product-service', () => { ...payload, }); - if (res && res.status < 200) { + if (res && res.status < 400) { await fetchListOfWork(); return res.data; } From 0916ce7af2d9296971ff9b7c818d80d0939c480c Mon Sep 17 00:00:00 2001 From: puriphatt Date: Fri, 23 May 2025 11:40:22 +0700 Subject: [PATCH 005/211] fix: enhance validation rules for agency and employer name fields --- .../FormBasicInfoAgencies.vue | 16 +++++++++++++++- .../components/employer/EmployerFormAbout.vue | 15 ++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/components/07_agencies-management/FormBasicInfoAgencies.vue b/src/components/07_agencies-management/FormBasicInfoAgencies.vue index 7f3f3c5d..1d80f5c3 100644 --- a/src/components/07_agencies-management/FormBasicInfoAgencies.vue +++ b/src/components/07_agencies-management/FormBasicInfoAgencies.vue @@ -68,7 +68,12 @@ type Options = { label: string; value: string }; class="col-md-4 col-12" :label="$t('agencies.name')" v-model="name" - :rules="[(val: string) => !!val || $t('form.error.required')]" + :rules="[ + (val) => !!val || $t('form.error.required'), + (val) => + /^[A-Za-z0-9ก-๙\s&.,'-]+$/.test(val) || + $t('form.error.branchNameField'), + ]" /> (typeof v === 'string' ? (registerNameEN = v.trim()) : '') " :rules="[ - (val: string) => - val === '' || - /^[0-9A-Za-z\s.,]+$/.test(val) || - $t('form.error.letterOnly'), + (val) => !!val || $t('form.error.required'), + (val) => + /^[A-Za-z0-9\s&.,'-]+$/.test(val) || + $t('form.error.branchNameENField'), ]" /> From 62ac7503a132ef9f27de0736a4d56d34f118fdae Mon Sep 17 00:00:00 2001 From: puriphatt Date: Fri, 23 May 2025 17:26:40 +0700 Subject: [PATCH 006/211] fix: update tab management and reset logic in ProfileBanner and MainPage components --- src/components/ProfileBanner.vue | 1 + src/pages/03_customer-management/MainPage.vue | 19 ++++++++++++++----- src/pages/03_customer-management/form.ts | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/components/ProfileBanner.vue b/src/components/ProfileBanner.vue index 9c72041c..8e9dddc4 100644 --- a/src/components/ProfileBanner.vue +++ b/src/components/ProfileBanner.vue @@ -265,6 +265,7 @@ const smallBanner = ref(false); class="app-text-muted full-width" align="left" v-if="typeof tabsList === 'object'" + @update:model-value="(v) => $emit('update:currentTab', v)" > +
@@ -5477,7 +5487,6 @@ const emptyCreateDialog = ref(false); " type="submit" /> - Date: Wed, 11 Jun 2025 10:00:08 +0700 Subject: [PATCH 009/211] fix: can't change branch --- src/pages/03_customer-management/form.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/03_customer-management/form.ts b/src/pages/03_customer-management/form.ts index 150c8a8c..a6592304 100644 --- a/src/pages/03_customer-management/form.ts +++ b/src/pages/03_customer-management/form.ts @@ -1294,7 +1294,7 @@ export const useEmployeeForm = defineStore('form-employee', () => { state.value.currentEmployee?.status === 'CREATED' ? 'ACTIVE' : state.value.currentEmployee?.status, - customerBranchId: state.value.formDataEmployeeOwner?.id || '', + customerBranchId: state.value.currentBranchId || '', employeeWork: [], employeeCheckup: [], employeeOtherInfo: undefined, From 1b475933da653290d46318e20a99d07f498b91e3 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Fri, 13 Jun 2025 15:08:03 +0700 Subject: [PATCH 010/211] fix: incorrect condition --- src/pages/08_request-list/RequestListView.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/08_request-list/RequestListView.vue b/src/pages/08_request-list/RequestListView.vue index ad7254fe..d82829a7 100644 --- a/src/pages/08_request-list/RequestListView.vue +++ b/src/pages/08_request-list/RequestListView.vue @@ -822,14 +822,14 @@ function toEmployee(employee: RequestData['employee']) { :readonly=" data.requestDataStatus === RequestDataStatus.Canceled || (responsibleList && + (!!responsibleList[pageState.currentStep]?.user?.length || + !!responsibleList[pageState.currentStep]?.group?.length) && !responsibleList[pageState.currentStep]?.user.find( (v) => v.id === getUserId(), ) && !responsibleList[pageState.currentStep]?.group.some((v) => currentUserGroup.includes(v), - )) || - (!!responsibleList[pageState.currentStep]?.user?.length && - !!responsibleList[pageState.currentStep]?.user?.length) + )) " :order-able="value._messengerExpansion" :installment-info="getInstallmentInfo()" From 5c01882a34fa6419310ffa2f79b418556c2dad9f Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:06:19 +0700 Subject: [PATCH 011/211] fix: validation not reset --- src/pages/08_request-list/MessengerExpansion.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/08_request-list/MessengerExpansion.vue b/src/pages/08_request-list/MessengerExpansion.vue index 4b7958cb..30e81598 100644 --- a/src/pages/08_request-list/MessengerExpansion.vue +++ b/src/pages/08_request-list/MessengerExpansion.vue @@ -57,6 +57,7 @@ const formData = ref(defaultForm); function triggerUndo() { assignToForm(); state.isEdit = false; + refForm.value?.resetValidation(); } async function triggerSubmit() { From 19ee1040d49bf4a49af03dcdb611cc69989772b8 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Fri, 13 Jun 2025 16:29:13 +0700 Subject: [PATCH 012/211] fix: validation error when mount --- src/components/shared/select/SelectUser.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/shared/select/SelectUser.vue b/src/components/shared/select/SelectUser.vue index 64e661f9..b931d07e 100644 --- a/src/components/shared/select/SelectUser.vue +++ b/src/components/shared/select/SelectUser.vue @@ -92,7 +92,9 @@ function setDefaultValue() { :hide-selected="false" :fill-input="false" :rules=" - required ? [(v: string) => !!v || $t('form.error.required')] : undefined + required && !readonly + ? [(v: string) => !!v || $t('form.error.required')] + : undefined " @filter="filter" > From 41d02273ee3aacd86694eb32546b8df98dea9bf8 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:55:00 +0700 Subject: [PATCH 013/211] fix: responsible only edit only --- src/pages/08_request-list/RequestListView.vue | 53 +++++++++---------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/src/pages/08_request-list/RequestListView.vue b/src/pages/08_request-list/RequestListView.vue index d82829a7..982f3203 100644 --- a/src/pages/08_request-list/RequestListView.vue +++ b/src/pages/08_request-list/RequestListView.vue @@ -812,25 +812,32 @@ function toEmployee(employee: RequestData['employee']) { -