1import{u as Me,p as z,d as He,B as ee,f as k,E as $e,t as ze,s as Oe,F as L,j as q}from"./vendor-primevue-CDtTrPAe.js";import{Q as Ue,Y as Fe,o as Le,w as se,bU as Ae,h as c,i as t,t as n,U as s,v as h,e as D,f as m,p as te,F as w,z as _,s as V,B as T,a as y,j as je,d as o,y as Q,H as Be,A as he,P as Ne}from"./vendor-vue-Ns5D07Xf.js";import{g as Pe,d as Ee,s as Re,a as qe,c as Qe}from"./jobs-e9NYugDP.js";import{g as We}from"./employees-CDF8Tg2L.js";import{u as Ye,g as Ge}from"./index-Ckj6hzUu.js";import{g as Ke}from"./useFormatters-SBiPWniw.js";import{_ as Xe}from"./_plugin-vue_export-helper-DlAUqK2U.js";const Ze={class:"dispatch-container"},es={class:"dispatch-header-bar glass-container mb-4"},ss={class:"flex flex-wrap items-center justify-between gap-3 p-4"},ts={class:"text-2xl font-bold m-0 gradient-text"},ls={class:"flex items-center gap-3 flex-wrap"},as={class:"dispatch-layout"},is={class:"jobs-list-section glass-container"},ns={class:"flex items-center gap-4 px-4 py-2 border-b border-slate-100 dark:border-slate-700/40 text-xs text-slate-500"},os={class:"font-bold text-emerald-600"},ds={class:"font-bold text-indigo-600"},us={class:"font-bold text-slate-700 dark:text-slate-200"},cs={class:"font-bold text-amber-600"},rs={class:"ml-auto text-slate-400"},ps={class:"font-semibold text-sm leading-tight"},hs={class:"text-xs text-slate-400"},vs={class:"flex items-center gap-1.5 flex-wrap"},fs={class:"font-semibold text-sm"},ms={key:0,class:"priority-badge priority-emergency"},_s={key:1,class:"priority-badge priority-high"},ys={class:"text-sm"},gs={class:"text-sm"},bs={key:0,class:"flex items-center"},xs={key:1,class:"flex flex-wrap gap-0.5 items-center"},ws=["src","alt"],ks={key:0,class:"text-xs text-slate-400 ml-1"},Ds={key:1,class:"text-xs text-slate-400 italic"},Vs={class:"flex flex-col items-center justify-center py-16 text-center"},Ss={class:"font-bold text-sm mb-1"},Cs={class:"text-xs text-slate-400 mb-3"},Ts={class:"font-bold text-sm mb-1"},Js={class:"text-xs text-slate-400"},Is={class:"details-panel-section"},Ms={class:"flex justify-between items-center"},Hs={class:"text-base font-bold"},$s={class:"details-content"},zs={class:"detail-group"},Os={class:"info-grid"},Us={class:"label"},Fs={class:"value"},Ls={class:"label"},As={class:"value"},js=["href"],Bs={key:1,class:"text-slate-400"},Ns={class:"label"},Ps={class:"value"},Es={class:"detail-group"},Rs={class:"info-grid"},qs={class:"label"},Qs={class:"value font-semibold"},Ws={class:"label"},Ys={class:"value"},Gs={key:0,class:"priority-badge priority-emergency"},Ks={key:1,class:"priority-badge priority-high"},Xs={key:2,class:"text-slate-400 text-xs capitalize"},Zs={class:"label"},et={class:"value text-sm italic text-slate-500"},st={class:"detail-group"},tt={class:"flex flex-col gap-3"},lt={class:"flex flex-col gap-1"},at={class:"field-label"},it={class:"flex gap-2"},nt={class:"flex flex-col gap-1 flex-1"},ot={class:"field-label"},dt={class:"flex flex-col gap-1 flex-1"},ut={class:"field-label"},ct={class:"flex flex-col gap-2"},rt={key:2,class:"status-info-badge badge-amber"},pt={key:3,class:"status-info-badge badge-violet"},ht={class:"detail-group"},vt={class:"flex flex-col gap-3"},ft={class:"flex flex-col gap-1"},mt={class:"field-label"},_t={class:"flex flex-col gap-1"},yt={class:"field-label"},gt={class:"flex gap-2"},bt={class:"flex flex-col gap-1 flex-1"},xt={class:"field-label"},wt={class:"flex flex-col gap-1 flex-1"},kt={class:"field-label"},Dt={key:0,class:"tech-schedule-panel"},Vt={class:"tech-schedule-header"},St={class:"tech-day-identity"},Ct={class:"tech-avatar-sm"},Tt=["src","alt"],Jt={class:"tech-day-name"},It={class:"tech-day-jobs"},Mt={key:0,class:"avail-badge"},Ht={class:"slot-time"},$t={class:"slot-title"},zt={key:0,class:"conflict-banner"},Ot={class:"flex flex-col gap-2"},Ut={key:2,class:"text-center text-red-500 m-0",style:{"font-size":"11px"}},Ft={key:3,class:"status-info-badge badge-amber"},Lt={key:4,class:"status-info-badge badge-violet"},At={key:1,class:"empty-state glass-container"},jt={class:"font-semibold",style:{color:"#64748b"}},Bt={class:"text-xs mt-1",style:{color:"#94a3b8"}},Nt=Ue({__name:"DispatchView",setup(Pt){const S=Me(),le=Ne(),P=Ye(),{t:l}=Fe(),C=T(()=>P.isTechnician),W=new Date,ae=new Date(W);ae.setDate(W.getDate()+7);const g=y([W,ae]),Y=y([]),J=y([]),O=y([]),ie=y(null),G=y(!0),b=y(!1),d=y(null),x=y([]),p=y(null),v=y(null),f=y(null),$=y(""),I=y([]),M=y(["draft","scheduled","dispatched","in_progress"]),ve=T(()=>[{label:l("jobs.statusDraft"),value:"draft"},{label:l("jobs.statusScheduled"),value:"scheduled"}
1,{label:l("jobs.statusDispatched"),value:"dispatched"},{label:l("jobs.statusInProgress"),value:"in_progress"}]),fe={draft:"#6b7280",scheduled:"#3b82f6",dispatched:"#f59e0b",in_progress:"#8b5cf6",completed:"#10b981",canceled:"#ef4444",on_hold:"#6366f1"};Le(async()=>{await me(),await A()});async function me(){try{const[i,e]=await Promise.all([We(),Ge()]);ie.value=e,O.value=i.filter(u=>(u.role==="technician"||u.role==="field_tech"||u.role==="admin")&&u.is_active!==!1)}catch(i){console.error("Failed to load base data",i)}}async function A(){G.value=!0;try{const i=await Pe();Y.value=i.filter(e=>{if(!e.scheduled_start)return!0;const u=new Date(e.scheduled_start);u.setHours(0,0,0,0);let a,r;if(Array.isArray(g.value)&&g.value[0])a=new Date(g.value[0]),r=g.value[1]?new Date(g.value[1]):new Date(a);else if(g.value instanceof Date)a=r=new Date(g.value);else return!0;return a.setHours(0,0,0,0),r.setHours(23,59,59,999),u>=a&&u<=r}),ne()}catch(i){const e=i.response?.data?.detail||l("dispatch.loadFailed");S.add({severity:"error",summary:l("common.error"),detail:e,life:3e3})}finally{G.value=!1}}function ne(){const i=$.value.toLowerCase(),e=P.user?.id;J.value=Y.value.filter(u=>{const a=!i||u.title.toLowerCase().includes(i)||(u.customer?.first_name||"").toLowerCase().includes(i)||(u.customer?.last_name||"").toLowerCase().includes(i),r=!M.value.length||M.value.includes(u.status);if(C.value&&e){const N=!u.assignments?.length,Je=u.assignments?.some(Ie=>Ie.user_id===e);if(!N&&!Je)return!1}const F=!I.value.length||u.assignments?.some(N=>I.value.includes(N.user_id));return a&&r&&(C.value?!0:F)})}se(g,()=>A(),{deep:!0}),se([$,I,M],()=>ne());function _e(i){if(d.value=i,x.value=i.assignments?.map(e=>e.user_id)||[],i.scheduled_start)p.value=new Date(i.scheduled_start),v.value=new Date(i.scheduled_start);else{const e=Array.isArray(g.value)?g.value[0]:g.value instanceof Date?g.value:new Date;p.value=e?new Date(e):new Date,v.value=null}f.value=i.scheduled_end?new Date(i.scheduled_end):null}function oe(i){return i.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function ye(i){return i?new Date(i).toLocaleString([],{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"N/A"}function ge(i){return fe[i]||"#9ca3af"}function j(i){const e=O.value.find(u=>u.id===i);return e?e.full_name||`${e.first_name||""} ${e.last_name||""}`.trim():l("dispatch.unknown")}function de(i){const e=O.value.find(u=>u.id===i);return e?e.first_name&&e.last_name?(e.first_name[0]+e.last_name[0]).toUpperCase():(e.full_name||"T").substring(0,2).toUpperCase():"??"}function E(i){return O.value.find(u=>u.id===i)?.photo_url||void 0}function ue(i){const e=i.customer;return e?e.address?e.address:[e.street,e.city,e.state].filter(Boolean).join(", ")||"N/A":"N/A"}function K(i){if(!p.value)return[];const e=p.value instanceof Date?p.value:new Date(p.value),u=new Date(e);u.setHours(0,0,0,0);const a=new Date(e);return a.setHours(23,59,59,999),Y.value.filter(r=>{if(r.id===d.value?.id||!r.scheduled_start||!r.assignments?.some(N=>N.user_id===i))return!1;const F=new Date(r.scheduled_start);return F>=u&&F<=a})}function X(i){if(!v.value||!f.value||!p.value||!i.scheduled_start||!i.scheduled_end)return!1;const e=p.value instanceof Date?p.value:new Date(p.value),u=new Date(e);u.setHours(v.value.getHours(),v.value.getMinutes(),0,0);const a=new Date(e);a.setHours(f.value.getHours(),f.value.getMinutes(),0,0);const r=new Date(i.scheduled_start),F=new Date(i.scheduled_end);return u<F&&a>r}const R=T(()=>ie.value?.scheduling_allow_double_booking||!x.value.length||!p.value?!1:x.value.some(e=>K(e).some(u=>X(u)))||Se.value),ce=T(()=>!!($.value||I.value.length||M.value.length!==4)),be=T(()=>J.value.filter(i=>!!i.scheduled_start).length),xe=T(()=>J.value.filter(i=>!i.scheduled_start).length),we=T(()=>J.value.filter(i=>!i.assignments?.length).length),ke=T(()=>{const i=P.user?.id;return J.value.filter(e=>e.assignments?.some(u=>u.user_id===i)).length});function B(i){const e=P.user?.id;return!!i.assignments?.some(u=>u.user_id===e)}const De=i=>i.priority==="emergency"?"row-priority-emergency":i.priority==="high"?"row-priority-high":"",H=y(!1),Ve=()=>{H.value=!H.value,document.body.classList.toggle("schedule-maximized",H.value)};Ae(()=>{document.body.classList.remove("schedule-maximized")});const U=y({});let Z=null;se([x,p,v,f],()=>{Z&&clearTimeout(Z),Z=setTimeout(async()=>
1{if(!x.value.length||!p.value||!v.value||!f.value){U.value={};return}const i=new Date(p.value);i.setHours(v.value.getHours(),v.value.getMinutes(),0,0);const e=new Date(p.value);e.setHours(f.value.getHours(),f.value.getMinutes(),0,0);const u=d.value?.id,a={};await Promise.all(x.value.map(async r=>{try{a[r]=await Qe(r,i.toISOString(),e.toISOString(),u)}catch{}})),U.value=a},500)},{deep:!0});const Se=T(()=>Object.values(U.value).some(i=>!i.available));async function re(){if(!d.value||x.value.length===0||!p.value||!v.value||!f.value)return S.add({severity:"warn",summary:l("dispatch.incomplete"),detail:l("dispatch.assignTechnician"),life:4e3}),!1;const i=new Date(p.value);i.setHours(v.value.getHours(),v.value.getMinutes(),0,0);const e=new Date(p.value);return e.setHours(f.value.getHours(),f.value.getMinutes(),0,0),await qe(d.value.id,{technician_ids:x.value,scheduled_start:i.toISOString(),scheduled_end:e.toISOString()}),!0}async function Ce(){b.value=!0;try{await re()&&(S.add({severity:"success",summary:l("jobs.statusScheduled"),detail:l("dispatch.jobScheduled"),life:3e3}),A(),d.value=null)}catch(i){S.add({severity:"error",summary:l("common.error"),detail:i.response?.data?.detail||l("dispatch.failedSchedule"),life:3e3})}finally{b.value=!1}}async function Te(){if(d.value){b.value=!0;try{if(!await re())return;await Ee(d.value.id),S.add({severity:"success",summary:l("dispatch.dispatched"),detail:l("dispatch.jobDispatched"),life:3e3}),A(),d.value=null}catch(i){S.add({severity:"error",summary:l("common.error"),detail:i.response?.data?.detail||l("dispatch.failedDispatch"),life:3e3})}finally{b.value=!1}}}async function pe(){if(!d.value||!p.value||!v.value||!f.value){S.add({severity:"warn",summary:l("dispatch.incomplete"),detail:l("dispatch.setTimeToTake"),life:4e3});return}b.value=!0;const i=new Date(p.value);i.setHours(v.value.getHours(),v.value.getMinutes(),0,0);const e=new Date(p.value);e.setHours(f.value.getHours(),f.value.getMinutes(),0,0);try{await Re(d.value.id,{scheduled_start:i.toISOString(),scheduled_end:e.toISOString()}),S.add({severity:"success",summary:l("dispatch.jobTaken"),detail:l("dispatch.youveBeenAssigned"),life:3e3}),A(),d.value=null}catch(u){S.add({severity:"error",summary:l("common.error"),detail:u.response?.data?.detail||l("dispatch.failedTakeJob"),life:3e3})}finally{b.value=!1}}return(i,e)=>{const u=je("tooltip");return o(),c("div",Ze,[t("div",es,[t("div",ss,[t("h1",ts,n(C.value?s(l)("dispatch.availableJobs"):s(l)("dispatch.dispatchBoard")),1),t("div",ls,[h(s(z),{selectOtherMonths:"",modelValue:g.value,"onUpdate:modelValue":e[0]||(e[0]=a=>g.value=a),selectionMode:"range",manualInput:!1,showIcon:"",class:"h-10"},null,8,["modelValue"]),h(s(He),{modelValue:$.value,"onUpdate:modelValue":e[1]||(e[1]=a=>$.value=a),placeholder:s(l)("dispatch.searchPlaceholder"),class:"h-10 w-44"},null,8,["modelValue","placeholder"]),h(s(ee),{modelValue:M.value,"onUpdate:modelValue":e[2]||(e[2]=a=>M.value=a),options:ve.value,optionLabel:"label",optionValue:"value",placeholder:s(l)("dispatch.status"),display:"chip",maxSelectedLabels:1,class:"w-40 h-10"},null,8,["modelValue","options","placeholder"]),C.value?m("",!0):(o(),D(s(ee),{key:0,modelValue:I.value,"onUpdate:modelValue":e[3]||(e[3]=a=>I.value=a),options:O.value,optionLabel:"full_name",optionValue:"id",placeholder:s(l)("dispatch.technicians"),display:"chip",maxSelectedLabels:1,class:"w-44 h-10"},null,8,["modelValue","options","placeholder"])),ce.value?te((o(),D(s(k),{key:1,icon:"pi pi-times",text:"",rounded:"",severity:"danger",class:"h-10 w-10",onClick:e[4]||(e[4]=a=>{$.value="",I.value=[],M.value=["draft","scheduled","dispatched","in_progress"]})},null,512)),[[u,s(l)("dispatch.clearFilters"),void 0,{top:!0}]]):m("",!0),te(h(s(k),{icon:H.value?"pi pi-window-minimize":"pi pi-window-maximize",onClick:Ve,severity:H.value?"warn":"secondary",text:!H.value,raised:H.value,rounded:"",class:"h-10 w-10"},null,8,["icon","severity","text","raised"]),[[u,H.value?"Exit Full Screen":"Full Screen",void 0,{top:!0}]])])])]),t("div",as,[t("div",is,[t("div",ns,[C.value?(o(),c(w,{key:0},[t("span",null,[t("span",os,n(we.value),1),_(" "+n(s(l)("dispatch.available")),1)]),t("span",null,[t("span",ds,n(ke.value),1),_(" "+n(s(l)("dispatch.myJobs")),1)])],64)):(o(),c(w,{key:1},[t("span",null,[t("span",us,n(be.value),1),_(" "+n(s(l)("dispatch.scheduled")),1)]),t("span",null,[t("span",cs,n(xe.value),1),_(" "+n(s(l)("dispatch.backlog")),1)])],64)),t("span",rs,n(J.value.length)+" "+n(s(l)("dispatch.total")),1)]),h(s($e),{value:J.value,selection:d.value,"onUpdate:selection":e[6]||(e[6]=a=>d.value=a),selectionMode:"single",onRowSelect:e[7]||(e[7]=a=>_e(a.data)),class:"p-datatable-premium",scrollable:"",scrollHeight:"flex",loading:G.value,rowClass:De},{empty:V(()=>
1[t("div",Vs,[e[20]||(e[20]=t("div",{class:"w-14 h-14 rounded-full bg-gray-50 dark:bg-gray-800 flex items-center justify-center mb-3"},[t("i",{class:"pi pi-calendar-times text-2xl opacity-20"})],-1)),ce.value?(o(),c(w,{key:0},[t("p",Ss,n(s(l)("dispatch.noJobsMatchFilters")),1),t("p",Cs,n(s(l)("dispatch.adjustFilters")),1),h(s(k),{label:s(l)("dispatch.clearFilters"),icon:"pi pi-filter-slash",severity:"secondary",outlined:"",size:"small",onClick:e[5]||(e[5]=a=>{$.value="",I.value=[],M.value=["draft","scheduled","dispatched","in_progress"]})},null,8,["label"])],64)):(o(),c(w,{key:1},[t("p",Ts,n(s(l)("dispatch.noJobsInPeriod")),1),t("p",Js,n(s(l)("dispatch.expandDateRange")),1)],64))])]),default:V(()=>[h(s(L),{field:"customer",header:s(l)("dispatch.customer")},{body:V(({data:a})=>[t("div",ps,n(a.customer?.company_name||`${a.customer?.first_name||""} ${a.customer?.last_name||""}`.trim()||s(l)("dispatch.unknown")),1),t("div",hs,n(a.customer?.phone||""),1)]),_:1},8,["header"]),h(s(L),{field:"title",header:s(l)("dispatch.service")},{body:V(({data:a})=>[t("div",vs,[t("span",fs,n(a.title),1),a.priority==="emergency"?(o(),c("span",ms,[e[18]||(e[18]=t("i",{class:"pi pi-bolt",style:{"font-size":"9px"}},null,-1)),_(" "+n(s(l)("dispatch.emergency")),1)])):a.priority==="high"?(o(),c("span",_s,[e[19]||(e[19]=t("i",{class:"pi pi-arrow-up",style:{"font-size":"9px"}},null,-1)),_(" "+n(s(l)("dispatch.high")),1)])):m("",!0)])]),_:1},8,["header"]),h(s(L),{header:s(l)("dispatch.address")},{body:V(({data:a})=>[t("span",ys,n(ue(a)),1)]),_:1},8,["header"]),h(s(L),{header:s(l)("jobs.statusScheduled")},{body:V(({data:a})=>[t("span",gs,n(ye(a.scheduled_start)),1)]),_:1},8,["header"]),h(s(L),{header:C.value?s(l)("dispatch.status"):s(l)("dispatch.technicians")},{body:V(({data:a})=>[C.value?(o(),c("div",bs,[B(a)?(o(),D(s(q),{key:0,value:s(l)("dispatch.mine"),severity:"info",rounded:""},null,8,["value"])):a.assignments?.length?(o(),D(s(q),{key:2,value:s(l)("dispatch.taken"),severity:"warn",rounded:""},null,8,["value"])):(o(),D(s(q),{key:1,value:s(l)("dispatch.available"),severity:"success",rounded:""},null,8,["value"]))])):(o(),c("div",xs,[(o(!0),c(w,null,Q((a.assignments||[]).slice(0,3),r=>te((o(),c("span",{key:r.id,class:"tech-avatar"},[E(r.user_id)?(o(),c("img",{key:0,src:E(r.user_id),alt:j(r.user_id),class:"w-full h-full object-cover rounded-full"},null,8,ws)):(o(),c(w,{key:1},[_(n(de(r.user_id)),1)],64))])),[[u,j(r.user_id),void 0,{top:!0}]])),128)),(a.assignments?.length||0)>3?(o(),c("span",ks," +"+n(a.assignments.length-3),1)):m("",!0),a.assignments?.length?m("",!0):(o(),c("span",Ds,n(s(l)("dispatch.unassigned")),1))]))]),_:1},8,["header"]),h(s(L),{field:"status",header:s(l)("dispatch.status")},{body:V(({data:a})=>[h(s(q),{value:s(Ke)(a.status,s(l)),style:Be({background:ge(a.status),color:"white"})},null,8,["value","style"])]),_:1},8,["header"])]),_:1},8,["value","selection","loading"])]),t("div",Is,[d.value?(o(),D(s(ze),{key:0,class:"job-details-card glass-container"},{title:V(()=>[t("div",Ms,[t("span",Hs,n(s(l)("dispatch.jobDetails")),1),h(s(k),{icon:"pi pi-times",severity:"secondary",rounded:"",text:"",onClick:e[8]||(e[8]=a=>d.value=null)})])]),content:V(()=>[t("div",$s,[t("div",zs,[t("h3",null,n(s(l)("dispatch.customer")),1),t("div",Os,[t("div",Us,n(s(l)("dispatch.customerName")),1),t("div",Fs,n(d.value.customer?.company_name||`${d.value.customer?.first_name||""} ${d.value.customer?.last_name||""}`.trim()||s(l)("dispatch.unknown")),1),t("div",Ls,n(s(l)("dispatch.phone")),1),t("div",As,[d.value.customer?.phone?(o(),c("a",{key:0,href:`tel:${d.value.customer.phone}`,class:"text-indigo-500 hover:underline"},n(d.value.customer.phone),9,js)):(o(),c("span",Bs,"N/A"))]),t("div",Ns,n(s(l)("dispatch.address")),1),t("div",Ps,n(ue(d.value)),1)])]),t("div",Es,[t("h3",null,n(s(l)("dispatch.job")),1),t("div",Rs,[t("div",qs,n(s(l)("dispatch.service")),1),t("div",Qs,n(d.value.title),1),t("div",Ws,n(s(l)("dispatch.priority")),1),t("div",Ys,[d.value.priority==="emergency"?(o(),c("span",Gs,[e[21]||(e[21]=t("i",{class:"pi pi-bolt",style:{"font-size":"9px"}},null,-1)),_(" "+n(s(l)("dispatch.emergency")),1)])):d.value.priority==="high"?(o(),c("span",Ks,[e[22]||(e[22]=t("i",{class:"pi pi-arrow-up",style:{"font-size":"9px"}}
1,null,-1)),_(" "+n(s(l)("dispatch.high")),1)])):(o(),c("span",Xs,n(d.value.priority||s(l)("dispatch.normal")),1))]),t("div",Zs,n(s(l)("dispatch.notes")),1),t("div",et,n(d.value.internal_notes||"â"),1)])]),C.value?(o(),c(w,{key:0},[t("div",st,[t("h3",null,n(B(d.value)?s(l)("dispatch.scheduling"):s(l)("dispatch.takeThisJob")),1),t("div",tt,[t("div",lt,[t("label",at,n(s(l)("dispatch.date")),1),h(s(z),{selectOtherMonths:"",modelValue:p.value,"onUpdate:modelValue":e[9]||(e[9]=a=>p.value=a),manualInput:!1,showIcon:"",class:"w-full"},null,8,["modelValue"])]),t("div",it,[t("div",nt,[t("label",ot,n(s(l)("dispatch.start")),1),h(s(z),{selectOtherMonths:"",modelValue:v.value,"onUpdate:modelValue":e[10]||(e[10]=a=>v.value=a),timeOnly:"",manualInput:!1,showIcon:"",iconDisplay:"input",class:"w-full"},null,8,["modelValue"])]),t("div",dt,[t("label",ut,n(s(l)("dispatch.end")),1),h(s(z),{selectOtherMonths:"",modelValue:f.value,"onUpdate:modelValue":e[11]||(e[11]=a=>f.value=a),timeOnly:"",manualInput:!1,showIcon:"",iconDisplay:"input",class:"w-full"},null,8,["modelValue"])])])])]),t("div",ct,[!B(d.value)&&(d.value.status==="draft"||d.value.status==="scheduled"||d.value.status==="requested")?(o(),D(s(k),{key:0,label:s(l)("dispatch.takeThisJob"),icon:"pi pi-check",class:"w-full",loading:b.value,disabled:b.value,onClick:pe},null,8,["label","loading","disabled"])):m("",!0),B(d.value)&&(d.value.status==="draft"||d.value.status==="scheduled"||d.value.status==="requested")?(o(),D(s(k),{key:1,label:s(l)("dispatch.dispatchButton"),icon:"pi pi-send",severity:"warn",class:"w-full",loading:b.value,disabled:b.value,onClick:pe},null,8,["label","loading","disabled"])):m("",!0),d.value.status==="dispatched"&&B(d.value)?(o(),c("div",rt,[e[23]||(e[23]=t("i",{class:"pi pi-check-circle"},null,-1)),_(" "+n(s(l)("dispatch.dispatchedReady")),1)])):m("",!0),d.value.status==="in_progress"?(o(),c("div",pt,[e[24]||(e[24]=t("i",{class:"pi pi-spin pi-spinner"},null,-1)),_(" "+n(s(l)("dispatch.jobInProgress")),1)])):m("",!0),h(s(k),{label:s(l)("dispatch.openFullJob"),icon:"pi pi-external-link",severity:"secondary",outlined:"",class:"w-full",onClick:e[12]||(e[12]=a=>s(le).push(`/jobs/${d.value.id}`))},null,8,["label"])])],64)):(o(),c(w,{key:1},[t("div",ht,[t("h3",null,n(s(l)("dispatch.scheduleAssign")),1),t("div",vt,[t("div",ft,[t("label",mt,n(s(l)("dispatch.technicians")),1),h(s(ee),{modelValue:x.value,"onUpdate:modelValue":e[13]||(e[13]=a=>x.value=a),options:O.value,optionLabel:"full_name",optionValue:"id",placeholder:s(l)("dispatch.selectTechnicians"),display:"chip",class:"w-full"},null,8,["modelValue","options","placeholder"])]),t("div",_t,[t("label",yt,n(s(l)("dispatch.date")),1),h(s(z),{selectOtherMonths:"",modelValue:p.value,"onUpdate:modelValue":e[14]||(e[14]=a=>p.value=a),manualInput:!1,showIcon:"",class:"w-full"},null,8,["modelValue"])]),t("div",gt,[t("div",bt,[t("label",xt,n(s(l)("dispatch.start")),1),h(s(z),{selectOtherMonths:"",modelValue:v.value,"onUpdate:modelValue":e[15]||(e[15]=a=>v.value=a),timeOnly:"",manualInput:!1,showIcon:"",iconDisplay:"input",class:"w-full"},null,8,["modelValue"])]),t("div",wt,[t("label",kt,n(s(l)("dispatch.end")),1),h(s(z),{selectOtherMonths:"",modelValue:f.value,"onUpdate:modelValue":e[16]||(e[16]=a=>f.value=a),timeOnly:"",manualInput:!1,showIcon:"",iconDisplay:"input",class:"w-full"},null,8,["modelValue"])])]),x.value.length>0&&p.value?(o(),c("div",Dt,[t("div",Vt,[e[25]||(e[25]=t("i",{class:"pi pi-calendar",style:{"font-size":"11px",color:"#6366f1"}},null,-1)),t("span",null,n((p.value instanceof Date?p.value:new Date(p.value)).toLocaleDateString([],{weekday:"short",month:"short",day:"numeric"}))+" â "+n(s(l)("dispatch.teamSchedule")),1)]),(o(!0),c(w,null,Q(x.value,a=>(o(),c("div",{key:a,class:"tech-day-row"},[t("div",St,[t("div",Ct,[E(a)?(o(),c("img",{key:0,src:E(a),alt:j(a),class:"w-full h-full object-cover rounded-full"},null,8,Tt)):(o(),c(w,{key:1},[_(n(de(a)),1)],64))]),t("span",Jt,n(j(a)),1)]),t("div",It,[K(a).length===0?(o(),c("div",Mt,[e[26]||(e[26]=t("i",{class:"pi pi-check-circle",style:{"font-size":"10px"}},null,-1)),_(" "+n(s(l)("dispatch.free")),1)])):m("",!0),(o(!0),c(w,null,Q(K(a),r=>(o(),c("div",{key:r.id,class:he(["tech-job-slot",X(r)?"conflict":""])},[t("i",{class:he(["pi flex-shrink-0",X(r)?"pi-exclamation-triangle":"pi-clock"]),style:{"font-size":"9px"}},null,2),t("span",Ht,n(oe(new Date(r.scheduled_start)))+"â"+n(oe(new Date(r.scheduled_end))),1),t("span",$t,n(r.title),
11)],2))),128))])]))),128)),(o(!0),c(w,null,Q(x.value.filter(a=>U.value[a]&&!U.value[a].available),a=>(o(),c("div",{key:"conflict-"+a,class:"tech-conflict-warning"},[e[27]||(e[27]=t("i",{class:"pi pi-exclamation-triangle",style:{"font-size":"10px"}},null,-1)),t("strong",null,n(j(a))+":",1),_(" "+n(U.value[a].conflicts.map(r=>r.message).join("; ")),1)]))),128)),R.value?(o(),c("div",zt,[e[28]||(e[28]=t("i",{class:"pi pi-exclamation-triangle"},null,-1)),_(" "+n(s(l)("dispatch.conflictDetected")),1)])):m("",!0)])):m("",!0)])]),t("div",Ot,[d.value.status==="draft"?(o(),D(s(k),{key:0,label:s(l)("dispatch.scheduleJob"),icon:"pi pi-calendar-plus",class:"w-full",loading:b.value,disabled:R.value||b.value,onClick:Ce},null,8,["label","loading","disabled"])):m("",!0),d.value.status==="scheduled"?(o(),D(s(k),{key:1,label:s(l)("dispatch.dispatchToTechs"),icon:"pi pi-send",severity:"warn",class:"w-full",loading:b.value,disabled:R.value||b.value,onClick:Te},null,8,["label","loading","disabled"])):m("",!0),R.value?(o(),c("p",Ut,n(s(l)("dispatch.resolveConflicts")),1)):m("",!0),d.value.status==="dispatched"?(o(),c("div",Ft,[e[29]||(e[29]=t("i",{class:"pi pi-check-circle"},null,-1)),_(" "+n(s(l)("dispatch.awaitingCheckIn")),1)])):m("",!0),d.value.status==="in_progress"?(o(),c("div",Lt,[e[30]||(e[30]=t("i",{class:"pi pi-spin pi-spinner"},null,-1)),_(" "+n(s(l)("dispatch.jobInProgress")),1)])):m("",!0),h(s(k),{label:s(l)("dispatch.openFullJob"),icon:"pi pi-external-link",severity:"secondary",outlined:"",class:"w-full",onClick:e[17]||(e[17]=a=>s(le).push(`/jobs/${d.value.id}`))},null,8,["label"])])],64))])]),_:1})):(o(),c("div",At,[e[31]||(e[31]=t("i",{class:"pi pi-arrow-left text-3xl mb-3",style:{color:"#94a3b8"}},null,-1)),t("p",jt,n(C.value?s(l)("dispatch.selectJobToTake"):s(l)("dispatch.selectJobToSchedule")),1),t("p",Bt,n(J.value.length)+" "+n(s(l)("dispatch.jobsInView")),1)]))])]),h(s(Oe))])}}}),Kt=Xe(Nt,[["__scopeId","data-v-48bcae0e"]]);export{Kt as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.