diff --git a/frontend/composables/useClientTicketHelpers.ts b/frontend/composables/useClientTicketHelpers.ts new file mode 100644 index 0000000..2742eef --- /dev/null +++ b/frontend/composables/useClientTicketHelpers.ts @@ -0,0 +1,29 @@ +export function useClientTicketHelpers() { + function typeBadgeClass(type: string): string { + switch (type) { + case 'bug': return 'bg-red-500' + case 'improvement': return 'bg-blue-500' + default: return 'bg-neutral-500' + } + } + + function statusBadgeClass(status: string): string { + switch (status) { + case 'new': return 'bg-blue-100 text-blue-700' + case 'in_progress': return 'bg-yellow-100 text-yellow-700' + case 'done': return 'bg-green-100 text-green-700' + case 'rejected': return 'bg-red-100 text-red-700' + default: return 'bg-neutral-100 text-neutral-700' + } + } + + function formatDate(iso: string): string { + return new Date(iso).toLocaleDateString('fr-FR', { + day: 'numeric', + month: 'short', + year: 'numeric', + }) + } + + return { typeBadgeClass, statusBadgeClass, formatDate } +} diff --git a/frontend/pages/login.vue b/frontend/pages/login.vue index a87da44..41fb87c 100644 --- a/frontend/pages/login.vue +++ b/frontend/pages/login.vue @@ -63,7 +63,8 @@ const handleSubmit = async () => { try { await auth.login(username.value, password.value) - await router.push('/') + const isClient = auth.user?.roles?.includes('ROLE_CLIENT') ?? false + await router.push(isClient ? '/portal' : '/') } finally { isSubmitting.value = false } diff --git a/frontend/pages/portal/projects/[id]/index.vue b/frontend/pages/portal/projects/[id]/index.vue new file mode 100644 index 0000000..54bd725 --- /dev/null +++ b/frontend/pages/portal/projects/[id]/index.vue @@ -0,0 +1,121 @@ + + + + + + + {{ $t('portal.backToProject') }} + + {{ projectName }} + + + + {{ $t('portal.newTicket') }} + + Ticket + + + + + + {{ $t('common.loading') }} + + + + {{ $t('clientTicket.noTickets') }} + + + + + + + CT-{{ String(ticket.number).padStart(3, '0') }} + + {{ $t(`clientTicket.type.${ticket.type}`) }} + + + {{ ticket.title }} + + {{ formatDate(ticket.createdAt) }} + + + + {{ $t(`clientTicket.status.${ticket.status}`) }} + + + + + + + + + +
+ {{ formatDate(ticket.createdAt) }} +