diff --git a/src/pages/07_agencies-management/AgenciesDialog.vue b/src/pages/07_agencies-management/AgenciesDialog.vue index b22873cc..e2d82483 100644 --- a/src/pages/07_agencies-management/AgenciesDialog.vue +++ b/src/pages/07_agencies-management/AgenciesDialog.vue @@ -1,39 +1,70 @@ diff --git a/src/pages/07_agencies-management/MainPage.vue b/src/pages/07_agencies-management/MainPage.vue index 2d0cfb92..41993a35 100644 --- a/src/pages/07_agencies-management/MainPage.vue +++ b/src/pages/07_agencies-management/MainPage.vue @@ -6,6 +6,7 @@ import { storeToRefs } from 'pinia'; import { Icon } from '@iconify/vue/dist/iconify.js'; import { useI18n } from 'vue-i18n'; +import { baseUrl } from 'src/stores/utils'; import { useNavigator } from 'src/stores/navigator'; import { useInstitution } from 'src/stores/institution'; import { Institution, InstitutionPayload } from 'src/stores/institution/types'; @@ -95,9 +96,16 @@ const blankFormData: InstitutionPayload = { subDistrictId: '', districtId: '', provinceId: '', + selectedImage: '', }; + +const refAgenciesDialog = ref(); const formData = ref(structuredClone(blankFormData)); const currAgenciesData = ref(); +const onCreateImageList = ref<{ + selectedImage: string; + list: { url: string; imgFile: File | null; name: string }[]; +}>({ selectedImage: '', list: [] }); function triggerDialog(type: 'add' | 'edit' | 'view') { if (type === 'add') { @@ -146,10 +154,11 @@ function assignFormData(data: Institution) { subDistrictId: data.subDistrictId, districtId: data.districtId, provinceId: data.provinceId, + selectedImage: data.selectedImage, }; } -async function submit() { +async function submit(opt?: { selectedImage: string }) { const payload = { group: undefined, code: formData.value.code, @@ -167,26 +176,41 @@ async function submit() { districtId: formData.value.districtId, provinceId: formData.value.provinceId, }; - - if (pageState.isDrawerEdit && currAgenciesData.value?.id) { + if ( + (pageState.isDrawerEdit && currAgenciesData.value?.id) || + (opt?.selectedImage && currAgenciesData.value?.id) + ) { const ret = await institutionStore.editInstitution( - Object.assign(payload, { id: currAgenciesData.value.id }), + Object.assign(payload, { + id: currAgenciesData.value.id, + selectedImage: opt?.selectedImage || undefined, + }), ); + if (ret) { pageState.isDrawerEdit = false; currAgenciesData.value = ret; + formData.value.selectedImage = ret.selectedImage; await fetchData(); + + if (refAgenciesDialog.value && opt?.selectedImage) { + refAgenciesDialog.value.clearImageState(); + } return; } + } else { + await institutionStore.createInstitution( + { + ...payload, + code: formData.value.group || '', + }, + onCreateImageList.value, + ); + + await fetchData(); + pageState.addModal = false; + return; } - - await institutionStore.createInstitution({ - ...payload, - code: formData.value.group || '', - }); - - await fetchData(); - pageState.addModal = false; } async function triggerChangeStatus(data?: Institution) {} @@ -409,7 +433,7 @@ watch(
- - + + + +
@@ -558,14 +592,24 @@ watch(
- - + + + + {{ @@ -697,6 +741,8 @@ watch(