tickets (table): colonne « Département » (Type renommé) + pastille technicien assigné

Ajoute assigned_staff à la requête + colonne Assigné (avatar initiales, couleur par tech) ;
issue_type renommé Type→Département. Distingue les tickets quasi identiques (ex. 3 Cancellation).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
louispaulb 2026-07-07 09:39:42 -04:00
parent 27263d7766
commit 77dd426343
2 changed files with 14 additions and 3 deletions

View File

@ -19,7 +19,8 @@ export const columns = [
{ name: 'legacy_id', label: '#', field: 'legacy_ticket_id', align: 'left', sortable: true, style: 'width:70px' },
{ name: 'subject', label: 'Sujet', field: 'subject', align: 'left' },
{ name: 'customer_name', label: 'Client', field: 'customer_name', align: 'left', sortable: true },
{ name: 'issue_type', label: 'Type', field: 'issue_type', align: 'left' },
{ name: 'issue_type', label: 'Département', field: 'issue_type', align: 'left' },
{ name: 'assigned', label: 'Assigné', field: 'assigned_staff', align: 'center', style: 'width:56px' },
{ name: 'opening_date', label: 'Date', field: 'opening_date', align: 'left', sortable: true },
{ name: 'priority', label: 'Priorite', field: 'priority', align: 'center', sortable: true },
{ name: 'sla', label: 'SLA', align: 'left' },

View File

@ -104,6 +104,16 @@
</q-chip>
</q-td>
</template>
<template #body-cell-assigned="props">
<q-td :props="props" class="text-center">
<q-avatar v-if="props.row.assigned_staff" size="26px" text-color="white"
:style="{ background: staffColor(props.row.assigned_staff), fontSize: '10px', fontWeight: 600 }">
{{ staffInitials(props.row.assigned_staff) }}
<q-tooltip>{{ props.row.assigned_staff }}</q-tooltip>
</q-avatar>
<span v-else class="text-grey-4"></span>
</q-td>
</template>
</DataTable>
<DetailModal
@ -160,7 +170,7 @@
import { ref, computed, onMounted } from 'vue'
import { listDocs, countDocs } from 'src/api/erp'
import DataTable from 'src/components/shared/DataTable.vue'
import { formatDate } from 'src/composables/useFormatters'
import { formatDate, staffColor, staffInitials } from 'src/composables/useFormatters'
import { ticketStatusClass as statusClass, priorityClass } from 'src/composables/useStatusClasses'
import { useDetailModal } from 'src/composables/useDetailModal'
import { statusOptions, priorityOptions, columns, buildFilters, getSortField } from 'src/config/ticket-config'
@ -240,7 +250,7 @@ function resetAndLoad () {
loadTickets()
}
const ISSUE_FIELDS = ['name', 'subject', 'customer_name', 'customer', 'opening_date', 'priority', 'status', 'issue_type', 'owner', 'creation', 'legacy_ticket_id', 'is_important', 'first_responded_on', '_user_tags']
const ISSUE_FIELDS = ['name', 'subject', 'customer_name', 'customer', 'opening_date', 'priority', 'status', 'issue_type', 'assigned_staff', 'owner', 'creation', 'legacy_ticket_id', 'is_important', 'first_responded_on', '_user_tags']
async function loadTickets () {
loading.value = true
const filters = buildFilters({