diff --git a/src/components/ListLoadingScreen.vue b/src/components/ListLoadingScreen.vue new file mode 100644 index 0000000..04f790a --- /dev/null +++ b/src/components/ListLoadingScreen.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/views/pages/Category/ListCategories.vue b/src/views/pages/Category/ListCategories.vue index ef82c28..a34b944 100644 --- a/src/views/pages/Category/ListCategories.vue +++ b/src/views/pages/Category/ListCategories.vue @@ -5,8 +5,22 @@ import { CategoryService } from '@/service/CategoryService'; import { useToast } from 'primevue/usetoast'; const toast = useToast(); import axios from 'axios'; + +const dataLoading = ref(true); + +const loadData = async () => { + dataLoading.value = true; + try { + categories.value = await CategoryService.getAllCategories(); + } catch (err) { + toast.add({ severity: 'error', summary: 'خطا', detail: 'خطا در دریافت اطلاعات', life: 3000 }); + } finally { + dataLoading.value = false; + } +}; + onMounted(() => { - CategoryService.getAllCategories().then((data) => (categories.value = data)); + loadData(); }); const dt = ref(); @@ -21,6 +35,7 @@ const filters = ref({ }); const submitted = ref(false); + function openNew() { category.value = {}; submitted.value = false; @@ -115,6 +130,7 @@ function deleteSelectedCategories() { ref="dt" v-model:selection="selectedCategories" :value="categories" + :loading="dataLoading" dataKey="id" :paginator="true" :rows="20" @@ -123,9 +139,22 @@ function deleteSelectedCategories() { :rowsPerPageOptions="[20, 40, 80]" currentPageReportTemplate="نمایش {first} تا {last} از {totalRecords} دسته‌بندی" > + +