feat: refactor operator dashboard and report handling, add public intervention page

This commit is contained in:
gabdevele
2026-06-18 17:52:57 +02:00 Unverified
parent fce0440a41
commit 2c907044a3
9 changed files with 335 additions and 74 deletions
+6 -21
View File
@@ -1,22 +1,8 @@
<script setup lang="ts">
const { getOpenReports, getAssignedReports, takeReport } = useOperator()
const { getOpenReports, getAssignedReports } = useOperator()
const { data: openReportsRes, refresh: refreshOpen } = useAsyncData('open-reports', () => getOpenReports({ per_page: 5 }))
const { data: assignedReportsRes, refresh: refreshAssigned } = useAsyncData('assigned-reports', () => getAssignedReports({ per_page: 5 }))
const processingIds = ref<number[]>([])
const handleTakeReport = async (id: number) => {
processingIds.value.push(id)
try {
const res = await takeReport(id)
if (res.ok) {
await Promise.all([refreshOpen(), refreshAssigned()])
}
} finally {
processingIds.value = processingIds.value.filter(pid => pid !== id)
}
}
const { data: openReportsRes } = useAsyncData('open-reports', () => getOpenReports({ per_page: 5 }))
const { data: assignedReportsRes } = useAsyncData('assigned-reports', () => getAssignedReports({ per_page: 5 }))
</script>
<template>
@@ -25,8 +11,8 @@ const handleTakeReport = async (id: number) => {
<div class="card card-bg h-100">
<div class="card-body">
<div class="d-flex justify-content-between align-items-center mb-3">
<h3 class="h5 mb-0">Da prendere in carico</h3>
<NuxtLink to="/operator" class="btn btn-link btn-sm pe-0">Apri coda</NuxtLink>
<h3 class="h5 mb-0">Segnalazioni disponibili</h3>
<NuxtLink to="/operator" class="btn btn-link btn-sm pe-0">Apri elenco</NuxtLink>
</div>
<div v-if="openReportsRes?.ok && openReportsRes.reports.length === 0" class="alert alert-info mb-0">
Nessuna nuova segnalazione in ingresso.
@@ -34,9 +20,8 @@ const handleTakeReport = async (id: number) => {
<ReportTable
v-else
:reports="openReportsRes?.reports || []"
action-variant="manage"
detail-base-path="/operator/reports"
@take="handleTakeReport"
action-label="Visualizza"
/>
</div>
</div>