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
+19 -6
View File
@@ -106,6 +106,19 @@ const formatDate = (dateStr: string) => {
hour: '2-digit', minute: '2-digit'
})
}
const formatFlagStatus = (status: string) => {
const map: Record<string, string> = {
OPEN: 'Aperto',
RESOLVED: 'Risolto',
DISMISSED: 'Ignorato'
}
return map[status] || status
}
const contentTypeLabel = (type: string) => type === 'REPORT' ? 'Segnalazione' : 'Messaggio'
const canRejectReport = (flag: any) => flag.content_type === 'REPORT'
</script>
<template>
@@ -153,7 +166,7 @@ const formatDate = (dateStr: string) => {
'bg-warning': flag.status === 'OPEN',
'bg-success': flag.status === 'RESOLVED',
'bg-secondary': flag.status === 'DISMISSED'
}">{{ flag.status }}</span>
}">{{ formatFlagStatus(flag.status) }}</span>
</div>
<small class="text-muted">{{ formatDate(flag.created_at) }}</small>
</div>
@@ -166,7 +179,7 @@ const formatDate = (dateStr: string) => {
</p>
<div class="mt-info">
<span class="badge bg-info me-2">{{ flag.content_type }}</span>
<span class="badge bg-info me-2">{{ contentTypeLabel(flag.content_type) }}</span>
<span v-if="flag.report_id">
Rif:
<NuxtLink :to="`/operator/reports/${flag.report_id}`" class="text-decoration-none">
@@ -190,11 +203,11 @@ const formatDate = (dateStr: string) => {
<div class="col-md-4 text-end" v-if="flag.status === 'OPEN'">
<div class="d-flex flex-column gap-2 mt-3 mt-md-0">
<button class="btn btn-outline-danger btn-sm" @click="openResolveModal(flag.id, true)">
<BIIcon name="it-ban" size="xs" /> Risolvi & Rigetta Segn.
<button class="btn btn-outline-danger btn-sm" @click="openResolveModal(flag.id, canRejectReport(flag))">
<BIIcon name="it-ban" size="xs" /> {{ canRejectReport(flag) ? 'Risolvi & Rigetta Segn.' : 'Risolvi flag' }}
</button>
<button class="btn btn-outline-warning btn-sm" @click="openResolveModal(flag.id, false)">
<BIIcon name="it-check" size="xs" /> Risolvi (Solo Avviso)
<BIIcon name="it-check" size="xs" /> {{ canRejectReport(flag) ? 'Risolvi (Solo Avviso)' : 'Risolvi senza rigetto' }}
</button>
<button class="btn btn-outline-secondary btn-sm" @click="openDismissModal(flag.id)">
<BIIcon name="it-close" size="xs" /> Ignora Flag
@@ -280,4 +293,4 @@ const formatDate = (dateStr: string) => {
.dismissed-card .mt-info {
margin-top: 0.4rem;
}
</style>
</style>