diff --git a/.replit b/.replit index f9b73f0..a9cbb23 100644 --- a/.replit +++ b/.replit @@ -15,6 +15,10 @@ run = ["npm", "run", "start"] localPort = 5000 externalPort = 80 +[[ports]] +localPort = 34895 +externalPort = 3000 + [[ports]] localPort = 38451 externalPort = 3002 diff --git a/client/src/pages/SavTickets.tsx b/client/src/pages/SavTickets.tsx index 1c0508f..bee4db0 100644 --- a/client/src/pages/SavTickets.tsx +++ b/client/src/pages/SavTickets.tsx @@ -455,22 +455,29 @@ export default function SavTickets() { }); return ( -
+
{/* Header */} -
-
-

Service Après-Vente

-

Gestion des tickets SAV et suivi des réparations

-
- {canCreate && ( - - - - - +
+
+
+

+ + Service Après-Vente +

+

+ Gestion des tickets SAV et suivi des réparations +

+
+
+ {canCreate && ( + + + + + Créer un nouveau ticket SAV @@ -689,6 +696,8 @@ export default function SavTickets() { )}
+
+
{/* Stats Cards */} {statsData && ( @@ -826,143 +835,126 @@ export default function SavTickets() {

Aucun ticket trouvé

) : ( -
- - - - - - - - - - - - - - - - {filteredTickets.map((ticket) => { - const StatusIcon = statusConfig[ticket.status as keyof typeof statusConfig]?.icon || Clock; - return ( - - - - - - - - - - - - ); - })} - -
- Ticket - - Client - - Produit - - Problème - - Statut - - Priorité - - Fournisseur - - Date - - Actions -
+
+
+ {filteredTickets.map((ticket) => { + const StatusIcon = statusConfig[ticket.status as keyof typeof statusConfig]?.icon || Clock; + const priorityColor = priorityConfig[ticket.priority as keyof typeof priorityConfig]?.color || "bg-gray-100 text-gray-800"; + const statusColor = statusConfig[ticket.status as keyof typeof statusConfig]?.color || "bg-gray-100 text-gray-800"; + + return ( + + + {/* Header avec numéro de ticket et statut */} +
- - {ticket.ticketNumber} - +
{ticket.ticketNumber}
{hasRecentComments(ticket) && ( - + Nouveau )}
-
-
-
- {ticket.clientName || 'N/A'} -
- {ticket.clientPhone && ( -
- {ticket.clientPhone} -
- )} -
-
-
- {ticket.productDesignation && ( -
- {ticket.productDesignation} -
- )} - {ticket.productGencode && ( -
- {ticket.productGencode} -
- )} -
-
-
- {ticket.problemDescription} -
-
- - + + {statusConfig[ticket.status as keyof typeof statusConfig]?.label}
-
- + + + {/* Client */} +
+
+ {ticket.clientName || 'N/A'} +
+ {ticket.clientPhone && ( +
+ 📞 {ticket.clientPhone} +
+ )} +
+ + {/* Produit */} +
+ {ticket.productDesignation && ( +
+ {ticket.productDesignation} +
+ )} + {ticket.productGencode && ( +
+ 📦 {ticket.productGencode} +
+ )} +
+ + {/* Problème */} + {ticket.problemDescription && ( +
+

+ {ticket.problemDescription} +

+
+ )} + + {/* Priorité et fournisseur */} +
+ {priorityConfig[ticket.priority as keyof typeof priorityConfig]?.label} -
-
- - - {ticket.supplier?.name} - + +
+ + {ticket.supplier?.name}
-
-
- - {safeFormat(ticket.createdAt, 'dd/MM/yyyy')} -
-
-
+
+ + {/* Date */} +
+ + {safeFormat(ticket.createdAt, 'dd/MM/yyyy')} +
+ + {/* Actions */} +
+ + {canModify && ( - {canModify && ( - - )} - {canDelete && ( - - )} -
-
+ )} + {canDelete && ( + + )} +
+ + + ); + })} +
)}