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
+3 -3
View File
@@ -80,15 +80,15 @@ const reportHref = (report: Report) => `${props.detailBasePath}/${report.id}`
<NuxtLink
v-else
:to="reportHref(report)"
class="btn btn-outline-primary btn-xs btn-icon d-inline-flex align-items-center justify-content-center"
class="btn btn-outline-primary btn-xs"
:aria-label="actionLabel"
:title="actionLabel"
>
<BIIcon name="it-arrow-right" size="xs" />
{{ actionLabel }}
</NuxtLink>
</td>
</tr>
</tbody>
</table>
</div>
</template>
</template>
+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>