From e2b30f9c1c3c46d8e6855324364b57132c385043 Mon Sep 17 00:00:00 2001 From: puriphatt Date: Fri, 30 Aug 2024 10:38:44 +0700 Subject: [PATCH] fix(04): no work name duplicate --- .../WorkManagementComponent.vue | 2 +- .../04_product-service/WorkNameManagement.vue | 116 +++++++++++------- src/i18n/eng/index.ts | 1 + src/i18n/tha/index.ts | 1 + src/pages/04_product-service/MainPage.vue | 29 +++-- 5 files changed, 93 insertions(+), 56 deletions(-) diff --git a/src/components/04_product-service/WorkManagementComponent.vue b/src/components/04_product-service/WorkManagementComponent.vue index eaf1be72..843a9f04 100644 --- a/src/components/04_product-service/WorkManagementComponent.vue +++ b/src/components/04_product-service/WorkManagementComponent.vue @@ -125,7 +125,7 @@ defineEmits<{ @click.stop="$emit('manageWorkName')" > - {{ $t('manage') }} + {{ $t('general.manage') }} diff --git a/src/components/04_product-service/WorkNameManagement.vue b/src/components/04_product-service/WorkNameManagement.vue index f761a9ac..b0c96f57 100644 --- a/src/components/04_product-service/WorkNameManagement.vue +++ b/src/components/04_product-service/WorkNameManagement.vue @@ -13,10 +13,18 @@ const nameList = defineModel<{ id: string; name: string; isEdit: boolean }[]>( { required: true }, ); +const refForm = ref(); const cloneList = ref(); const isAdd = ref(false); const inputName = ref([]); +function nameExist(name: string) { + const listToCheck = cloneList.value.filter((clone) => !clone.isEdit); + const alreadyExist = listToCheck.find((clone) => clone.name === name); + + return alreadyExist ? true : false; +} + function isWorkNameEdit() { return cloneList.value.some((i: { isEdit: boolean }) => i.isEdit === true); } @@ -30,7 +38,7 @@ defineExpose({ }); defineEmits<{ - (e: 'delete', id: string): void; + (e: 'delete', id: string, noDialog?: boolean): void; (e: 'edit', id: string, data: { name: string }): void; (e: 'add', data: { name: string; productId: []; order: number }): void; }>(); @@ -61,55 +69,79 @@ watch( v-for="(item, index) in cloneList" :key="index" > - - - - - + class="row full-width" + > + + + + + +
-
{ - deleteWork(id); - flowStore.rotate(); - }, - cancel: () => {}, - }); +function confirmDeleteWork(id: string, noDialog?: boolean) { + if (noDialog) { + deleteWork(id); + } else + dialog({ + color: 'negative', + icon: 'mdi-alert', + title: t('dialog.title.confirmDelete'), + actionText: t('general.delete'), + message: t('dialog.message.confirmDelete'), + action: async () => { + deleteWork(id); + flowStore.rotate(); + }, + cancel: () => {}, + }); } function triggerConfirmCloseWork() {