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:
parent
27263d7766
commit
77dd426343
|
|
@ -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' },
|
||||
|
|
|
|||
|
|
@ -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({
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user