feat: refactor operator dashboard and report handling, add public intervention page
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user