planif (feuille job) : décode les entités HTML de l'en-tête (sujet · client · adresse)

L'en-tête de la feuille job affichait les champs bruts → « 424 chemin de l'église ».
Passés par deEnt() (déjà utilisé pour le panneau détail complet) : sujet, customer_name, adresse.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
louispaulb 2026-07-07 23:50:42 -04:00
parent 23e3c0d2e2
commit 92ed0a0734

View File

@ -333,14 +333,14 @@
<q-card v-if="jobSheet.job" class="pm-opt-card"> <q-card v-if="jobSheet.job" class="pm-opt-card">
<q-card-section class="row items-center q-pb-xs"> <q-card-section class="row items-center q-pb-xs">
<q-icon name="work_outline" size="18px" class="q-mr-sm text-grey-7" /> <q-icon name="work_outline" size="18px" class="q-mr-sm text-grey-7" />
<div class="text-subtitle2 ellipsis" style="max-width:74vw">{{ jobSheet.job.subject || jobSheet.job.service_type || jobSheet.job.name }}</div> <div class="text-subtitle2 ellipsis" style="max-width:74vw">{{ deEnt(jobSheet.job.subject || jobSheet.job.service_type || jobSheet.job.name) }}</div>
<q-space /><q-btn flat dense round icon="close" v-close-popup /> <q-space /><q-btn flat dense round icon="close" v-close-popup />
</q-card-section> </q-card-section>
<q-card-section class="q-pt-none"> <q-card-section class="q-pt-none">
<!-- Détails du ticket (lecture) --> <!-- Détails du ticket (lecture) -->
<div class="pm-tk-details"> <div class="pm-tk-details">
<div v-if="jobSheet.job.customer_name" class="pm-tk-row"><q-icon name="person" size="14px" color="grey-6" />{{ jobSheet.job.customer_name }}</div> <div v-if="jobSheet.job.customer_name" class="pm-tk-row"><q-icon name="person" size="14px" color="grey-6" />{{ deEnt(jobSheet.job.customer_name) }}</div>
<div v-if="jobSheet.job.address || jobSheet.job.service_location" class="pm-tk-row"><q-icon name="place" size="14px" color="grey-6" /><span class="ellipsis">{{ jobSheet.job.address || jobSheet.job.service_location }}</span></div> <div v-if="jobSheet.job.address || jobSheet.job.service_location" class="pm-tk-row"><q-icon name="place" size="14px" color="grey-6" /><span class="ellipsis">{{ deEnt(jobSheet.job.address || jobSheet.job.service_location) }}</span></div>
<!-- Contact client (P1) : tél/courriel du compte F lié au ticket, tappables --> <!-- Contact client (P1) : tél/courriel du compte F lié au ticket, tappables -->
<div v-if="sheetThread.contact && (sheetThread.contact.phone || sheetThread.contact.email)" class="pm-tk-row"><q-icon name="contact_phone" size="14px" color="grey-6" /><a v-if="sheetThread.contact.phone" :href="'tel:' + sheetThread.contact.phone" class="pm-tk-link">{{ sheetThread.contact.phone }}</a><span v-if="sheetThread.contact.phone && sheetThread.contact.email" class="text-grey-4">&nbsp;·&nbsp;</span><a v-if="sheetThread.contact.email" :href="'mailto:' + sheetThread.contact.email" class="pm-tk-link ellipsis">{{ sheetThread.contact.email }}</a></div> <div v-if="sheetThread.contact && (sheetThread.contact.phone || sheetThread.contact.email)" class="pm-tk-row"><q-icon name="contact_phone" size="14px" color="grey-6" /><a v-if="sheetThread.contact.phone" :href="'tel:' + sheetThread.contact.phone" class="pm-tk-link">{{ sheetThread.contact.phone }}</a><span v-if="sheetThread.contact.phone && sheetThread.contact.email" class="text-grey-4">&nbsp;·&nbsp;</span><a v-if="sheetThread.contact.email" :href="'mailto:' + sheetThread.contact.email" class="pm-tk-link ellipsis">{{ sheetThread.contact.email }}</a></div>
<div class="pm-tk-row"><q-icon name="sell" size="14px" color="grey-6" />{{ jobSheet.job.required_skill || '—' }}<span v-if="jobSheet.job.est_min || jobSheet.job.duration_h" class="text-grey-6"> · {{ jobSheet.job.est_min ? fmtMin(jobSheet.job.est_min) : (jobSheet.job.duration_h + 'h') }}</span></div> <div class="pm-tk-row"><q-icon name="sell" size="14px" color="grey-6" />{{ jobSheet.job.required_skill || '—' }}<span v-if="jobSheet.job.est_min || jobSheet.job.duration_h" class="text-grey-6"> · {{ jobSheet.job.est_min ? fmtMin(jobSheet.job.est_min) : (jobSheet.job.duration_h + 'h') }}</span></div>