diff --git a/src/components/01_branch-management/FormBank.vue b/src/components/01_branch-management/FormBank.vue index 66f4241b..8c2b53bd 100644 --- a/src/components/01_branch-management/FormBank.vue +++ b/src/components/01_branch-management/FormBank.vue @@ -177,7 +177,7 @@ watch(
('imageListOnCreate', { default: { selectedImage: '', list: [] } }); +const deletesStatusQrCodeBankImag = defineModel( + 'deletesStatusQrCodeBankImag', + { default: [] }, +); const imageState = reactive({ imageDialog: false, @@ -45,6 +50,14 @@ const imageState = reactive({ const imageFile = ref(null); const imageList = ref<{ selectedImage: string; list: string[] }>(); +const qrCodeDialog = ref(false); +const qrCodeImageUrl = ref(''); +const currentIndexQrCodeBank = ref(-1); +const statusQrCodeFile = ref(undefined); +const refQrCodeUpload = ref(); +const statusQrCodeUrl = ref(''); +const statusDeletesQrCode = ref(false); + const props = withDefaults( defineProps<{ readonly?: boolean; @@ -163,6 +176,35 @@ function clearImageState() { imageState.refreshImageState = false; } +function triggerEditQrCodeBank(opts?: { save?: boolean }) { + if (opts?.save === undefined) { + qrCodeDialog.value = true; + statusDeletesQrCode.value = false; + statusQrCodeUrl.value = + formBankBook.value[currentIndexQrCodeBank.value].bankUrl || ''; + statusDeletesQrCode.value = false; + } else { + formBankBook.value[currentIndexQrCodeBank.value].bankUrl = + statusQrCodeUrl.value; + + formBankBook.value[currentIndexQrCodeBank.value].bankQr = + statusQrCodeFile.value; + + if (statusDeletesQrCode.value === true) { + deletesStatusQrCodeBankImag.value.push(currentIndexQrCodeBank.value); + } + if (statusDeletesQrCode.value === false) { + deletesStatusQrCodeBankImag.value = + deletesStatusQrCodeBankImag.value.filter( + (item) => item !== currentIndexQrCodeBank.value, + ); + } + + currentIndexQrCodeBank.value = -1; + statusDeletesQrCode.value = false; + } +} + watch( () => imageFile.value, () => { @@ -177,7 +219,6 @@ watch( imageList.value ? (imageList.value.selectedImage = data.value.selectedImage || '') : ''; - console.log(imageState.imageUrl); imageState.refreshImageState = false; }, ); @@ -327,8 +368,19 @@ watch( title="agencies.bankInfo" class="q-pt-xl" dense - single v-model:bank-book-list="formBankBook" + @view-qr=" + (i) => { + currentIndexQrCodeBank = i; + triggerEditQrCodeBank(); + } + " + @edit-qr=" + (i) => { + currentIndexQrCodeBank = i; + refQrCodeUpload && refQrCodeUpload.browse(); + } + " />
@@ -518,9 +570,20 @@ watch( title="agencies.bankInfo" class="q-pt-xl" dense - single :readonly v-model:bank-book-list="formBankBook" + @view-qr=" + (i) => { + currentIndexQrCodeBank = i; + triggerEditQrCodeBank(); + } + " + @edit-qr=" + (i) => { + currentIndexQrCodeBank = i; + refQrCodeUpload && refQrCodeUpload.browse(); + } + " /> @@ -561,5 +624,31 @@ watch( + + + + diff --git a/src/pages/07_agencies-management/MainPage.vue b/src/pages/07_agencies-management/MainPage.vue index 9f40a0c4..13d6158e 100644 --- a/src/pages/07_agencies-management/MainPage.vue +++ b/src/pages/07_agencies-management/MainPage.vue @@ -81,7 +81,7 @@ const pageState = reactive({ isDrawerEdit: true, searchDate: [], }); - +const deletesStatusQrCodeBankImag = ref([]); const blankFormData: InstitutionPayload = { group: '', code: '', @@ -177,16 +177,15 @@ function assignFormData(data: Institution) { contactEmail: data.contactEmail, contactName: data.contactName, contactTel: data.contactTel, - bank: [ - { - bankName: data.bank[0]?.bankName, - accountNumber: data.bank[0]?.accountNumber, - bankBranch: data.bank[0]?.bankBranch, - accountName: data.bank[0]?.accountName, - accountType: data.bank[0]?.accountType, - currentlyUse: data.bank[0]?.currentlyUse, - }, - ], + bank: data.bank.map((v) => ({ + bankName: v.bankName, + accountNumber: v.accountNumber, + bankBranch: v.bankBranch, + accountName: v.accountName, + accountType: v.accountType, + currentlyUse: v.currentlyUse, + bankUrl: `${baseUrl}/institution/${data.id}/bank-qr/${v.id}?ts=${Date.now()}`, + })), }; } @@ -212,14 +211,10 @@ async function submit(opt?: { selectedImage: string }) { provinceId: formData.value.provinceId, status: formData.value.status, bank: formData.value.bank.map((v) => ({ - bankName: v.bankName, - accountNumber: v.accountNumber, - bankBranch: v.bankBranch, - accountName: v.accountName, - accountType: v.accountType, - currentlyUse: v.currentlyUse, + ...v, })), }; + console.log('payload', payload); if ( (pageState.isDrawerEdit && currAgenciesData.value?.id) || (opt?.selectedImage && currAgenciesData.value?.id) @@ -230,6 +225,7 @@ async function submit(opt?: { selectedImage: string }) { id: currAgenciesData.value.id, selectedImage: opt?.selectedImage || undefined, }), + { indexDeleteQrCodeBank: deletesStatusQrCodeBankImag.value }, ); if (ret) { @@ -982,6 +978,7 @@ watch( v-model:data="formData" v-model:form-bank-book="formData.bank" v-model:image-list-on-create="imageListOnCreate" + v-model:deletes-status-qr-code-bank-imag="deletesStatusQrCodeBankImag" />