From a4a101712cd935879958b7dd620a0096e6ce398f Mon Sep 17 00:00:00 2001 From: Thanaphon Frappet Date: Thu, 24 Apr 2025 13:59:39 +0700 Subject: [PATCH 1/2] fix: incorrectly swapped data --- .../FormEmployeeVisa.vue | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/components/03_customer-management/FormEmployeeVisa.vue b/src/components/03_customer-management/FormEmployeeVisa.vue index 876c7a52..bba22dad 100644 --- a/src/components/03_customer-management/FormEmployeeVisa.vue +++ b/src/components/03_customer-management/FormEmployeeVisa.vue @@ -78,6 +78,12 @@ onMounted(async () => { await fetchProvince(); }); +const visaIssueCountryOptions = ref[]>([]); +let visaIssueCountryFilter: ( + value: string, + update: (callbackFn: () => void, afterFn?: (ref: QSelect) => void) => void, +) => void; + const visaTypeOptions = ref[]>([]); let visaTypeFilter: ( value: string, @@ -97,6 +103,12 @@ onMounted(() => { 'label', ); + visaIssueCountryFilter = selectFilterOptionRefMod( + ref(optionStore.globalOption?.nationality), + visaIssueCountryOptions, + 'label', + ); + workerTypeFilter = selectFilterOptionRefMod( ref(optionStore.globalOption?.workerType), workerTypeOptions, @@ -107,8 +119,14 @@ onMounted(() => { watch( () => optionStore.globalOption, () => { + visaIssueCountryFilter = selectFilterOptionRefMod( + ref(optionStore.globalOption?.nationality), + visaIssueCountryOptions, + 'label', + ); + visaTypeFilter = selectFilterOptionRefMod( - optionStore.globalOption.nationality, + optionStore.globalOption.visaType, visaTypeOptions, 'label', ); @@ -422,11 +440,11 @@ watch( class="col-md-4 col-6" :dense="dense" :readonly="readonly" - :options="visaTypeOptions" + :options="visaIssueCountryOptions" :hide-dropdown-icon="readonly" :for="`${prefixId}-select-issue-country`" :label="$t('customerEmployee.form.issueCountry')" - @filter="visaTypeFilter" + @filter="visaIssueCountryFilter" :model-value="readonly ? issueCountry || '-' : issueCountry" @update:model-value=" (v) => (typeof v === 'string' ? (issueCountry = v) : '') From 1d38dbc6cfcd6f78ff223bee6faeb5edd5050a0f Mon Sep 17 00:00:00 2001 From: Thanaphon Frappet Date: Thu, 24 Apr 2025 14:10:11 +0700 Subject: [PATCH 2/2] refactor: copy now --- src/pages/04_product-service/MainPage.vue | 104 +++++++++------------- 1 file changed, 40 insertions(+), 64 deletions(-) diff --git a/src/pages/04_product-service/MainPage.vue b/src/pages/04_product-service/MainPage.vue index 09d4f118..98146be4 100644 --- a/src/pages/04_product-service/MainPage.vue +++ b/src/pages/04_product-service/MainPage.vue @@ -104,10 +104,6 @@ const { importProduct, } = productServiceStore; -const currentCopy = ref<{ - id: string | undefined; - type: 'service' | 'product'; -}>(); const { workNameItems } = storeToRefs(productServiceStore); const allStat = ref<{ mode: string; count: number }[]>([]); @@ -1848,65 +1844,49 @@ function handleSubmitSameWorkflow() { ); } -async function paste() { - if ( - !!currentCopy.value && - currentCopy.value.type === 'service' && - !!currentCopy.value.id - ) - dialogWarningClose(t, { - message: t('dialog.message.warningPaste'), - action: async () => { - const res = await fetchListServiceById(currentCopy.value.id); - if (res) { - formService.value = { - code: res.code, - name: res.name, - detail: res.detail, - attributes: res.attributes, - work: res.work.map((v) => ({ - id: v.id, - name: v.name, - attributes: v.attributes, - product: v.productOnWork.map((productOnWorkItem) => ({ - id: productOnWorkItem.product.id, - installmentNo: productOnWorkItem.installmentNo, - stepCount: productOnWorkItem.stepCount, - })), - })), - status: res.status, - productGroupId: res.productGroupId, - selectedImage: res.selectedImage, - installments: res.installments, - }; +async function copy(id: string) { + { + const res = await fetchListServiceById(id); + if (res) { + formService.value = { + code: res.code, + name: res.name, + detail: res.detail, + attributes: res.attributes, + work: res.work.map((v) => ({ + id: v.id, + name: v.name, + attributes: v.attributes, + product: v.productOnWork.map((productOnWorkItem) => ({ + id: productOnWorkItem.product.id, + installmentNo: productOnWorkItem.installmentNo, + stepCount: productOnWorkItem.stepCount, + })), + })), + status: res.status, + productGroupId: res.productGroupId, + selectedImage: res.selectedImage, + installments: res.installments, + }; - workItems.value = res.work.map((item) => { + workItems.value = res.work.map((item) => { + return { + id: item.id, + name: item.name, + attributes: item.attributes, + product: item.productOnWork.map((productOnWorkItem) => { return { - id: item.id, - name: item.name, - attributes: item.attributes, - product: item.productOnWork.map((productOnWorkItem) => { - return { - ...productOnWorkItem.product, - nameEn: productOnWorkItem.product.name, - installmentNo: productOnWorkItem.installmentNo, - }; - }), + ...productOnWorkItem.product, + nameEn: productOnWorkItem.product.name, + installmentNo: productOnWorkItem.installmentNo, }; - }); - } - }, - }); - else { - dialog({ - color: 'warning', - icon: 'mdi-alert', - title: t('form.warning.title'), - actionText: t('dialog.action.ok'), - message: t('dialog.message.warningCopyEmpty'), - action: async () => {}, - }); + }), + }; + }); + } } + + dialogService.value = true; } watch( @@ -3278,11 +3258,7 @@ watch( :id-name="props.row.name" @copy=" () => { - notify('create', $t('dialog.message.copy')); - currentCopy = { - id: props.row.id, - type: productAndServiceTab, - }; + copy(props.row.id); } " @view="