+
Aucun job à assigner 🎉
+
+
{{ grp.label }} ({{ grp.jobs.length }})Sélectionner / désélectionner tout ce groupe
+
+ Groupe ({{ grp.jobs.length }}) — tout sélectionner (terrain)
+
+
+
{ if (v) ctx.selectedJobs[j.name] = true; else delete ctx.selectedJobs[j.name] }" @click.stop @mousedown.stop class="q-mr-xs" />
+ {{ ctx.jobIsOnsite(j) ? 'Sur site (terrain)' : 'À distance / netadmin — pas pour un tech terrain' }}
+ Même adresse de service (groupe {{ ctx.groupLabel(j)[0] }}) — simple repère de proximité{{ ctx.groupLabel(j) }}
+ {{ j.step_order }}
+ {{ j.subject || j.service_type || j.name }}{{ j.legacy_detail }}
+ {{ ctx.jobSlaBadge(j).short }}{{ ctx.jobSlaBadge(j).label }}
+
+
+ Assigner à un technicien (classés par pertinence : compétence · dispo · distance · charge)
+
+ Assigner « {{ (j.subject || j.name).slice(0, 30) }} » · 📅 {{ ctx.fmtDueLabel(ctx.jobTargetDay(j)) }}
+
+
+ {{ ctx.initials(tk.name) }}
+
+ {{ tk.name }}Compétence « {{ j.required_skill }} » absente
+ 📍 {{ Math.round(tk.distKm) }} kmdist. ? · {{ tk.h }}/{{ tk.cap }}h · ▲ sans quart · surchargé
+
+
+
+ Aucun technicien visible.
+
+
+
+ Voir le fil du ticket #{{ j.legacy_ticket_id }}
+ En attente de {{ j.depends_on || 'la tâche précédente' }}
+
+
+ {{ j.required_skill }}
+ liéAffiché car un autre job filtré est à la MÊME adresse — à dispatcher avec lui (même tech).
+ {{ pool.jobAddrBadge(j).n }} jobs{{ pool.jobAddrBadge(j).n }} job(s) à cette adresse — nécessite un tech avec {{ pool.jobAddrBadge(j).skills.join(' + ') }}.
+ niv {{ j.required_level || 1 }}Niveau min requis pour ce job (persistant · mode « juste ce qu'il faut » → réserve les experts)Niveau {{ n }}{{ n===1 ? ' — de base' : (n===5 ? ' — expert' : '') }}
+ {{ j.customer_name || j.location_label || j.service_location || '' }} · après {{ j.depends_on }} · ≈ {{ j.est_min ? ctx.fmtMin(j.est_min) : (j.duration_h || 1) + 'h' }}Estimé (auto) : {{ j.est_labels.join(' + ') }} · 📅 {{ ctx.fmtDueLabel(j.scheduled_date) }}Replanifier (aujourd'hui / demain / date)Aujourd'huiDemain ctx.setJobDate(j, v)" mask="YYYY-MM-DD" minimal today-btn />
+
+
+
Chargement du fil…
+
+ {{ m.author }} · {{ ctx.fmtDT(m.at) }}{{ m.text }}
+
+
{{ j.legacy_detail || 'Aucun fil pour ce ticket.' }}
+
Ticket inutile → status closed dans osTicket + sort du dispatch
+
+
+
+
+
+