From 57b401e764175c4250d3e13c5d4dd9e2eef3b96b Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Wed, 1 Jan 2025 21:03:42 +0600 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=BA=D0=B0=20ad?= =?UTF-8?q?m5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/admin/DashboardView.vue | 34 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/frontend/src/views/admin/DashboardView.vue b/frontend/src/views/admin/DashboardView.vue index 8f8765d..63ac240 100644 --- a/frontend/src/views/admin/DashboardView.vue +++ b/frontend/src/views/admin/DashboardView.vue @@ -55,14 +55,43 @@ import { ref, onMounted } from 'vue'; import { useRouter } from 'vue-router'; import { PlusCircle } from 'lucide-vue-next'; +interface Statistic { + period: string; + label: string; + value: number | string; +} + +interface Request { + id: number; + employee_last_name: string; + request_type: string; + status: string; + created_at: string; +} + const router = useRouter(); -const statistics = ref([]); -const requests = ref([]); +const statistics = ref([]); +const requests = ref([]); const formatDate = (date: string) => { return new Date(date).toLocaleString('ru-RU'); }; +const fetchStatistics = async () => { + try { + const response = await fetch('/api/admin/statistics?period=week'); + if (!response.ok) throw new Error('Failed to fetch statistics'); + const data = await response.json(); + statistics.value = [ + { period: 'total', label: 'Всего заявок', value: data.totalRequests }, + { period: 'resolved', label: 'Решено', value: data.resolvedRequests }, + { period: 'avgTime', label: 'Среднее время', value: data.averageResolutionTime } + ]; + } catch (error) { + console.error('Error fetching statistics:', error); + } +}; + const fetchRequests = async () => { try { const response = await fetch('/api/admin/requests'); @@ -74,6 +103,7 @@ const fetchRequests = async () => { }; onMounted(() => { + fetchStatistics(); fetchRequests(); }); \ No newline at end of file