feat(tickets): sin botón archivar, Archivo visible a todos, dashboard coherente

This commit is contained in:
Nurfog committed 2026-10-22 12:23:59 -03:00
1 parent eace5fbcd7
commit dd1e1a231a
3 files changed
+10 -37

No files matched your search

+2 -2
View File
@@ -83,7 +83,7 @@ export default function DashboardPage() {
{/* Stats Cards: cada tarjeta filtra la lista de tickets según lo presionado */}
<div className="row g-3 mb-4">
<div className="col-6 col-lg">
<StatsCard icon="bi-ticket-detailed" value={stats?.totalTickets || 0} label="Total Tickets" color="#00285d" href="/tickets" />
<StatsCard icon="bi-ticket-detailed" value={stats?.totalTickets || 0} label="Total Tickets" color="#00285d" href="/tickets?archived=all" />
</div>
<div className="col-6 col-lg">
<StatsCard icon="bi-folder2-open" value={stats?.openTickets || 0} label="Abiertos" color="#198754" href="/tickets?status=Open" />
@@ -92,7 +92,7 @@ export default function DashboardPage() {
<StatsCard icon="bi-clock-history" value={stats?.inProgressTickets || 0} label="En Progreso" color="#ffc107" href="/tickets?status=InProgress" />
</div>
<div className="col-6 col-lg">
<StatsCard icon="bi-check-circle" value={stats?.resolvedTickets || 0} label="Resueltos" color="#0d6efd" href="/tickets?status=Resolved" />
<StatsCard icon="bi-check-circle" value={stats?.resolvedTickets || 0} label="Resueltos" color="#0d6efd" href="/tickets?status=Resolved&archived=all" />
</div>
<div className="col-6 col-lg">
<StatsCard icon="bi-exclamation-triangle" value={stats?.criticalTickets || 0} label="Críticos" color="#dc3545" href="/tickets?priority=Critical" />
@@ -9,7 +9,6 @@ import {
getTicketEmails,
addComment,
updateTicketStatus,
setTicketArchived,
assignTicket,
getGroups,
getTeam,
@@ -287,24 +286,6 @@ export default function TicketDetailPage() {
}
};
const handleArchiveToggle = async () => {
if (!ticket) return;
const toArchived = !ticket.archived;
if (toArchived && !window.confirm("¿Archivar este ticket? Saldrá de la vista de activos, conservando su estado.")) {
return;
}
setError("");
setActing(true);
try {
await setTicketArchived(id, toArchived);
await refreshTicket();
} catch (err: unknown) {
setError(err instanceof Error ? err.message : "No se pudo cambiar el archivado");
} finally {
setActing(false);
}
};
const handleAssignAgent = async (idUsuario: string | null) => {
if (!ticket) return;
setAssignOpen(false);
@@ -461,17 +442,6 @@ export default function TicketDetailPage() {
</>
)}
</div>
{/* Archivar / Desarchivar (conserva el estado del ticket) */}
<button
className={`btn btn-sm ${ticket.archived ? "btn-outline-secondary" : "btn-outline-dark"}`}
disabled={acting}
title={ticket.archived ? "Volver a la vista de activos" : "Sacar de la vista de activos"}
onClick={handleArchiveToggle}
>
<i className={`bi ${ticket.archived ? "bi-box-arrow-up" : "bi-archive"} me-1`}></i>
{ticket.archived ? "Desarchivar" : "Archivar"}
</button>
</div>
)}
</div>
+8 -5
View File
@@ -285,6 +285,14 @@ function TicketsContent() {
</button>
))}
</div>
</div>
) : (
<div className="filter-bar mb-3">
<span className="badge bg-primary">Mis tickets</span>
</div>
)}
{/* Archivo: visible para todos (solicitantes también ven sus cerrados) */}
<div className="filter-bar mb-3">
<span className="text-muted" style={{ fontSize: "0.8rem" }}>Archivo:</span>
<div className="btn-group" role="group" aria-label="Archivo">
{(
@@ -308,11 +316,6 @@ function TicketsContent() {
))}
</div>
</div>
) : (
<div className="filter-bar mb-3">
<span className="badge bg-primary">Mis tickets</span>
</div>
)}
<div className="filter-bar mb-4">
<div className="d-flex align-items-center gap-2">
<i className="bi bi-funnel text-muted"></i>