2 lines
26 KiB
JavaScript
2 lines
26 KiB
JavaScript
var Ue=Object.defineProperty;var pe=Object.getOwnPropertySymbols;var Be=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable;var ge=(T,_,f)=>_ in T?Ue(T,_,{enumerable:!0,configurable:!0,writable:!0,value:f}):T[_]=f,fe=(T,_)=>{for(var f in _||(_={}))Be.call(_,f)&&ge(T,f,_[f]);if(pe)for(var f of pe(_))Ve.call(_,f)&&ge(T,f,_[f]);return T};var k=(T,_,f)=>new Promise((q,S)=>{var F=y=>{try{I(f.next(y))}catch(m){S(m)}},s=y=>{try{I(f.throw(y))}catch(m){S(m)}},I=y=>y.done?q(y.value):Promise.resolve(y.value).then(F,s);I((f=f.apply(T,_)).next())});import{ae as Fe,V as ze,a9 as M,S as Ge,au as U,ay as x,an as i,ca as _e,aL as H,ax as oe,bE as be,ct as Ke,c0 as ye,c1 as W,bX as Ye,ac as $e}from"./bootstrap-CRjSNGHY.js";import{s as He}from"./index-CIc-2hgy.js";import{g as Xe,a as je,b as Qe,m as We}from"./index-BUgf8541.js";import{c as qe}from"./index-DbbJOeuC.js";import{S as Je,a as Ze,b as et,C as xe,O as tt,c as st,T as at,P as ke}from"./data-DukF8ORr.js";import ot from"./assign-form-BiisLJGz.js";import lt from"./cancel-form-zeyVoI5R.js";import nt from"./upgrade-priority-form-CczpVw-4.js";import{a as E}from"./index-C1PcRRkI.js";import{A as it}from"./index-BeoVA2jS.js";import{_ as rt}from"./page.vue_vue_type_script_setup_true_lang-3ywDTU7g.js";import{m as dt,b9 as w,aa as P,v as ct,aU as ut,aX as vt,x as mt,ab as b,b2 as r,bJ as l,j as o,u as e,ac as p,ae as t,ai as u,ad as g,bp as d,aT as A,aR as C,I as B,bb as le,cT as V}from"../jse/index-index-CMeVxoEG.js";import{u as pt}from"./use-tabs-Cbw8wuyx.js";import{u as ne}from"./use-modal-BABce5hC.js";import"./tabbar-B8FD2KS1.js";import"./x-CpZ5_sBZ.js";const gt={class:"flex items-center justify-between"},ft={class:"flex items-center gap-3"},_t={class:"flex items-center gap-2"},bt={class:"text-base font-semibold"},yt={class:"mt-1.5 flex items-center gap-4 text-sm text-gray-500"},xt={class:"flex items-center gap-1"},kt={class:"flex items-center gap-1"},Et={class:"flex items-center gap-2"},Tt={class:"progress-actions"},It={class:"progress-summary"},Ct={class:"summary-item"},Dt={class:"summary-item"},ht={class:"progress-steps-wrapper"},At={class:"progress-line"},St={class:"progress-nodes"},wt={class:"node-icon"},Pt={class:"node-label"},Ot={key:0,class:"node-time"},Rt={key:1,class:"node-badge"},Lt={key:0,class:"cancelled-banner"},Nt={key:1,class:"logs-expand-section"},Mt={key:0,class:"logs-simple-list"},Ut={class:"log-simple-left"},Bt={key:0,class:"log-simple-line"},Vt={class:"log-simple-content"},Ft={class:"log-simple-header"},zt={class:"log-simple-time"},Gt={class:"log-simple-text"},Kt={class:"flex items-center justify-between"},Yt={class:"flex items-center gap-2"},$t={class:"progress-circle-wrapper"},Ht={class:"progress-inner"},Xt={class:"work-stats-grid"},jt={class:"stat-item"},Qt={class:"stat-icon bg-blue-50 dark:bg-blue-900/30"},Wt={class:"stat-content"},qt={class:"stat-value"},Jt={class:"stat-item"},Zt={class:"stat-icon bg-green-50 dark:bg-green-900/30"},es={class:"stat-content"},ts={class:"stat-value"},ss={class:"stat-item"},as={class:"stat-content"},os={class:"stat-item"},ls={class:"stat-icon bg-purple-50 dark:bg-purple-900/30"},ns={class:"stat-content"},is={class:"flex items-center gap-2"},rs={class:"flex items-center gap-1"},ds={class:"flex items-center gap-1"},cs={class:"flex items-center gap-1"},us={class:"flex items-center gap-1"},vs={class:"flex items-center gap-1"},ms={class:"flex items-center gap-1"},ps={class:"flex items-center gap-1"},gs={class:"device-code"},fs={class:"flex items-center gap-2"},_s={key:0},bs={class:"assignee-info"},ys={class:"assignee-detail"},xs={class:"assignee-name"},ks={class:"assignee-id"},Es={key:0,class:"badge-status-panel"},Ts={class:"panel-header"},Is={class:"badge-stats"},Cs={class:"badge-stat-item"},Ds={class:"badge-stat-icon"},hs={class:"badge-stat-content"},As={class:"flex items-center gap-2"},Ss={key:0,class:"text-xs text-gray-500"},ws={class:"badge-stat-item"},Ps={class:"badge-stat-icon"},Os={class:"badge-stat-content"},Rs={key:0},Ls={class:"battery-bar"},Ns={key:1,class:"text-xs text-gray-400"},Ms={class:"badge-stat-item"},Us={class:"badge-stat-icon"},Bs={class:"badge-stat-content"},Vs={key:0,class:"signal-strength"},Fs={class:"signal-value"},zs={key:1,class:"text-xs text-gray-400"},Gs={class:"badge-stat-item"},Ks={class:"badge-stat-icon"},Ys={class:"badge-stat-content"},$s={class:"heartbeat-time"},Hs={key:1,class:"no-assignee"},Xs={class:"no-assignee-icon"},js={class:"flex items-center gap-2"},Qs={class:"actions-list"},X=!1,Ws=dt({name:"CleaningWorkOrderDetail",__name:"index",setup(T){const _=Fe(),f=ze(),{closeTabByKey:q}=pt(),S=_.params.id,F=w(!0),s=w({}),I=w([]),y=w([]),m=w(null),z=w(),O=w(!1),Ee=[{key:"PENDING",title:"待分配",icon:"solar:inbox-line-bold-duotone",desc:"工单已创建,等待分配"},{key:"QUEUED",title:"排队中",icon:"solar:clock-circle-bold-duotone",desc:"执行人忙碌,任务排队"},{key:"DISPATCHED",title:"已推送",icon:"solar:transfer-horizontal-bold-duotone",desc:"已推送至执行人"},{key:"CONFIRMED",title:"已确认",icon:"solar:check-circle-bold-duotone",desc:"执行人已确认接单"},{key:"ARRIVED",title:"作业中",icon:"solar:play-circle-bold-duotone",desc:"正在执行作业"},{key:"COMPLETED",title:"已完成",icon:"solar:check-read-bold-duotone",desc:"工单已完成"}],ie={system:{color:"#1677ff",bgColor:"#e6f4ff",icon:"solar:server-bold-duotone",label:"系统"},operation:{color:"#52c41a",bgColor:"#f6ffed",icon:"solar:user-check-bold-duotone",label:"操作"},alert:{color:"#fa8c16",bgColor:"#fff7e6",icon:"solar:bell-bold-duotone",label:"告警"},device:{color:"#722ed1",bgColor:"#f9f0ff",icon:"solar:bluetooth-wave-bold-duotone",label:"设备"}},qs={id:10001,orderCode:"WO20260123143025001",title:"A区洗手间紧急保洁",orderType:"CLEAN",status:"ARRIVED",priority:0,areaId:101,location:"A区 / 1楼洗手间",assigneeId:2001,assigneeName:"张三",createTime:"2026-01-23 14:30:25",triggerSource:"IOT_BEACON",triggerDeviceKey:"beacon_a1_toilet_001",startTime:"2026-01-23 14:45:00",extInfo:{cleaningType:"ROUTINE",expectedDuration:30,arrivedTime:new Date(Date.now()-15*60*1e3).toISOString()}},Js=[{status:"PENDING",statusName:"工单创建",time:"2026-01-23 14:30:25",operator:"系统",description:"蓝牙信标触发自动创建"},{status:"DISPATCHED",statusName:"已推送",time:"2026-01-23 14:31:02",operator:"系统",description:"推送至保洁员张三"},{status:"CONFIRMED",statusName:"已确认",time:"2026-01-23 14:32:15",operator:"张三",description:"保洁员确认接单"},{status:"ARRIVED",statusName:"已到岗",time:"2026-01-23 14:45:00",operator:"系统",description:"检测到保洁员到达"}],Zs=[{id:1,type:"system",title:"工单自动创建",content:"蓝牙信标 beacon_a1_toilet_001 触发,系统自动创建保洁工单",operator:"系统",time:"2026-01-23 14:30:25",status:"PENDING"},{id:2,type:"system",title:"智能派单",content:"根据距离优先算法,自动分配给保洁员张三",operator:"系统",time:"2026-01-23 14:31:00",status:"DISPATCHED"},{id:3,type:"device",title:"工牌推送",content:"已向工牌设备 badge_zhangsan_001 发送震动提醒",operator:"系统",time:"2026-01-23 14:31:02",status:"DISPATCHED"},{id:4,type:"operation",title:"接单确认",content:"保洁员通过工牌按钮确认接受工单",operator:"张三",time:"2026-01-23 14:32:15",status:"CONFIRMED"},{id:5,type:"device",title:"位置检测",content:"工牌进入作业区域 A区洗手间,信号强度 -42dBm",operator:"系统",time:"2026-01-23 14:45:00",status:"ARRIVED"},{id:6,type:"alert",title:"电量预警",content:"工牌电量 72%,建议及时充电",operator:"系统",time:"2026-01-23 14:50:00",status:"ARRIVED",extra:{level:"warning"}},{id:7,type:"device",title:"心跳上报",content:"工牌状态正常,持续在区域内作业",operator:"系统",time:"2026-01-23 15:00:30",status:"ARRIVED"}],Te={deviceId:3001,deviceKey:"badge_zhangsan_001",status:"BUSY",batteryLevel:72,lastHeartbeatTime:new Date(Date.now()-30*1e3).toISOString(),rssi:-42,isInArea:!0,areaId:101,areaName:"A区洗手间"},[Ie,Ce]=ne({connectedComponent:ot,destroyOnClose:!0}),[De,he]=ne({connectedComponent:nt,destroyOnClose:!0}),[Ae,Se]=ne({connectedComponent:lt,destroyOnClose:!0});function R(n){return ke[n]||ke[2]}const G=P(()=>{var c;if(!((c=s.value.extInfo)!=null&&c.arrivedTime))return 0;const n=new Date(s.value.extInfo.arrivedTime).getTime(),a=s.value.endTime?new Date(s.value.endTime).getTime():Date.now();return Math.floor((a-n)/6e4)}),j=P(()=>{var n;return(n=s.value.extInfo)!=null&&n.expectedDuration?Math.min(Math.round(G.value/s.value.extInfo.expectedDuration*100),100):0}),D=P(()=>{var n;return s.value.status==="COMPLETED"?!1:((n=s.value.extInfo)==null?void 0:n.expectedDuration)&&G.value>s.value.extInfo.expectedDuration}),we=P(()=>s.value.status==="ARRIVED"&&m.value&&!m.value.isInArea),Q=P(()=>{const n=new Set(["ARRIVED","COMPLETED","CONFIRMED","DISPATCHED","PENDING"]),a=new Set(I.value.map(v=>v.status)),c=s.value.status;return Ee.filter(v=>n.has(v.key)?!0:v.key==="QUEUED"?a.has("QUEUED"):a.has(v.key)||c===v.key)}),h=P(()=>{if(s.value.status==="CANCELLED")return-1;if(s.value.status==="PAUSED")return Q.value.findIndex(a=>a.key==="ARRIVED");const n=Q.value.findIndex(a=>a.key===s.value.status);return Math.max(n,0)}),re=P(()=>[...y.value].toSorted((n,a)=>new Date(a.time).getTime()-new Date(n.time).getTime()));function de(n){return ie[n]||ie.system}function L(n){const a=Date.now(),c=new Date(n).getTime(),v=a-c;return v<6e4?"刚刚":v<36e5?`${Math.floor(v/6e4)} 分钟前`:v<864e5?`${Math.floor(v/36e5)} 小时前`:V(n)}function J(){return k(this,null,function*(){F.value=!0;try{X||(s.value=yield qe(S),yield Promise.all([Pe(),Oe()]),s.value.assigneeId&&(yield ce()))}catch(n){console.error("❌ 工单详情加载失败:",n),M.error("获取工单详情失败"),Z()}finally{F.value=!1}})}function Pe(){return k(this,null,function*(){try{if(!X){const n=yield Xe(S);I.value=n.timeline||[]}}catch(n){I.value=[]}})}function Oe(){return k(this,null,function*(){try{if(!X){const n=yield je(S);y.value=n.logs||[]}}catch(n){y.value=[]}})}function ce(){return k(this,null,function*(){if(s.value.assigneeId)try{m.value=X?fe({},Te):yield Qe(s.value.assigneeId)}catch(n){console.error("❌ 工牌状态加载失败:",n),m.value=null}})}function K(){return k(this,null,function*(){yield J()})}function Z(){return k(this,null,function*(){const n=_.fullPath;f.back(),setTimeout(()=>{q(n)},100)})}function ue(){Ce.setData({orderId:s.value.id,orderCode:s.value.orderCode}).open()}function Re(){he.setData({orderId:s.value.id,orderCode:s.value.orderCode,currentPriority:s.value.priority}).open()}function ee(){Se.setData({orderId:s.value.id,orderCode:s.value.orderCode,title:s.value.title}).open()}function te(){return k(this,null,function*(){if(s.value.assigneeId)try{yield He({deviceId:s.value.assigneeId,method:"voice.broadcast",params:{content:`请注意:${s.value.title}`}}),M.success("语音提醒已发送")}catch(n){M.error("发送失败")}})}function Le(){return k(this,null,function*(){try{yield We(s.value.id),M.success("工单已完成"),K()}catch(n){M.error("操作失败")}})}function se(n){return n===null?"#d9d9d9":n<=20?"#f5222d":n<=50?"#fa8c16":"#52c41a"}function Ne(n){switch(n==null?void 0:n.toUpperCase()){case"BUSY":return"作业中";case"IDLE":return"空闲";case"OFFLINE":return"离线";case"PAUSED":return"暂停";default:return n||"未知"}}function Me(n){return(n==null?void 0:n.toUpperCase())==="BUSY"}function ve(){ae(),z.value=window.setInterval(()=>{s.value.status==="ARRIVED"&&s.value.assigneeId&&ce()},3e4)}function ae(){z.value&&(clearInterval(z.value),z.value=null)}return ct(()=>k(null,null,function*(){if(!S&&!X){M.warning("参数错误"),Z();return}yield J(),ve()})),ut(()=>k(null,null,function*(){z.value||(yield J(),ve())})),vt(ae),mt(ae),(n,a)=>(r(),b(e(rt),null,{default:l(()=>[o(e(Ie),{onSuccess:K}),o(e(De),{onSuccess:K}),o(e(Ae),{onSuccess:K}),o(e(Ge),{spinning:F.value},{default:l(()=>[o(e(U),{"body-style":{padding:"12px 20px"},class:"detail-header mb-3"},{default:l(()=>{var c,v,Y,$,N,me;return[t("div",gt,[t("div",ft,[o(e(x),{size:"small",onClick:Z},{default:l(()=>[o(e(i),{icon:"ant-design:arrow-left-outlined",class:"mr-1"}),a[1]||(a[1]=u(" 返回 ",-1))]),_:1}),o(e(_e),{type:"vertical",class:"h-6"}),t("div",null,[t("div",_t,[t("span",bt,d(s.value.title),1),o(e(H),{color:e(Je)[s.value.status],class:"status-tag"},{default:l(()=>[o(e(i),{icon:e(Ze)[s.value.status]||"solar:circle-bold",class:"mr-1"},null,8,["icon"]),u(" "+d(e(et)[s.value.status]),1)]),_:1},8,["color"]),s.value.priority!==2?(r(),g("span",{key:0,class:C(["priority-badge inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium",{"animate-pulse":(c=R(s.value.priority))==null?void 0:c.animation}]),style:A({backgroundColor:(v=R(s.value.priority))==null?void 0:v.bgColor,color:(Y=R(s.value.priority))==null?void 0:Y.color})},[($=R(s.value.priority))!=null&&$.icon?(r(),b(e(i),{key:0,icon:((N=R(s.value.priority))==null?void 0:N.icon)||""},null,8,["icon"])):p("",!0),u(" "+d((me=R(s.value.priority))==null?void 0:me.label),1)],6)):p("",!0)]),t("div",yt,[t("span",xt,[o(e(i),{icon:"solar:document-text-bold-duotone"}),u(" "+d(s.value.orderCode),1)]),t("span",kt,[o(e(i),{icon:"solar:map-point-bold-duotone"}),u(" "+d(s.value.location||"-"),1)])])])]),o(e(oe),{title:"刷新数据"},{default:l(()=>[o(e(x),{size:"small",shape:"circle",onClick:K},{default:l(()=>[o(e(i),{icon:"ant-design:reload-outlined"})]),_:1})]),_:1})])]}),_:1}),o(e(U),{class:"progress-overview-card mb-3"},{title:l(()=>[t("div",Et,[o(e(i),{icon:"solar:routing-2-bold-duotone",class:"text-blue-500"}),a[2]||(a[2]=t("span",null,"工单进度",-1))])]),extra:l(()=>[t("div",Tt,[t("div",It,[t("span",Ct,[o(e(i),{icon:"solar:clock-circle-bold-duotone",class:"text-gray-400"}),u(" 创建于 "+d(L(s.value.createTime)),1)]),o(e(_e),{type:"vertical"}),t("span",Dt,[o(e(i),{icon:"solar:document-text-bold-duotone",class:"text-gray-400"}),u(" "+d(y.value.length)+" 条日志 ",1)])]),o(e(oe),{title:O.value?"收起日志":"查看业务日志"},{default:l(()=>[o(e(x),{type:"text",size:"small",class:C(["logs-toggle-btn",{"logs-toggle-active":O.value}]),onClick:a[0]||(a[0]=c=>O.value=!O.value)},{default:l(()=>[o(e(i),{icon:"solar:notebook-bold-duotone",class:"mr-1"}),a[3]||(a[3]=t("span",null,"日志",-1)),o(e(i),{icon:O.value?"solar:alt-arrow-up-linear":"solar:alt-arrow-down-linear",class:"ml-1 transition-transform"},null,8,["icon"])]),_:1},8,["class"])]),_:1},8,["title"])])]),default:l(()=>[t("div",ht,[t("div",At,[t("div",{class:"progress-line-fill",style:A({width:`${Math.max(0,h.value/(Q.value.length-1)*100)}%`})},null,4)]),t("div",St,[(r(!0),g(B,null,le(Q.value,(c,v)=>{var Y,$;return r(),g("div",{key:c.key,class:C(["progress-node",{"node-completed":v<h.value,"node-current":v===h.value&&s.value.status!=="CANCELLED","node-completed-current":v===h.value&&s.value.status==="COMPLETED","node-pending":v>h.value,"node-cancelled":s.value.status==="CANCELLED"}])},[o(e(oe),{title:c.desc},{default:l(()=>[t("div",wt,[o(e(i),{icon:c.icon},null,8,["icon"])])]),_:2},1032,["title"]),t("div",Pt,d(c.title),1),v<h.value||v===h.value&&s.value.status==="COMPLETED"?(r(),g("div",Ot,d((Y=I.value.find(N=>N.status===c.key))!=null&&Y.time?L((($=I.value.find(N=>N.status===c.key))==null?void 0:$.time)||""):c.key==="PENDING"?L(s.value.createTime):c.key==="COMPLETED"&&s.value.endTime?L(s.value.endTime):""),1)):v===h.value&&s.value.status!=="CANCELLED"&&s.value.status!=="COMPLETED"?(r(),g("div",Rt,[...a[4]||(a[4]=[t("span",{class:"badge-dot"},null,-1),u(" 进行中 ",-1)])])):p("",!0)],2)}),128))])]),s.value.status==="CANCELLED"?(r(),g("div",Lt,[o(e(i),{icon:"solar:close-circle-bold-duotone"}),a[5]||(a[5]=t("span",null,"工单已取消",-1))])):p("",!0),O.value?(r(),g("div",Nt,[y.value.length>0?(r(),g("div",Mt,[(r(!0),g(B,null,le(re.value,(c,v)=>(r(),g("div",{key:c.id,class:"log-simple-item"},[t("div",Ut,[t("div",{class:"log-simple-dot",style:A({backgroundColor:de(c.type).color})},null,4),v<re.value.length-1?(r(),g("div",Bt)):p("",!0)]),t("div",Vt,[t("div",Ft,[t("span",{class:"log-simple-title",style:A({color:de(c.type).color})},d(c.title),5),t("span",zt,d(L(c.time)),1)]),t("div",Gt,d(c.content),1)])]))),128))])):(r(),b(e(be),{key:1,description:"暂无日志",image:e(be).PRESENTED_IMAGE_SIMPLE,class:"logs-empty"},null,8,["image"]))])):p("",!0)]),_:1}),we.value?(r(),b(e(Ke),{key:0,type:"warning","show-icon":"",class:"leave-warning mb-3"},{message:l(()=>[...a[6]||(a[6]=[t("span",{class:"font-medium"},"保洁员已离开作业区域",-1)])]),description:l(()=>[t("div",Kt,[a[8]||(a[8]=t("span",null,"检测到保洁员不在指定区域,请及时确认情况",-1)),o(e(x),{size:"small",type:"primary",onClick:te},{default:l(()=>[...a[7]||(a[7]=[u(" 语音提醒 ",-1)])]),_:1})])]),_:1})):p("",!0),o(e(ye),{gutter:12},{default:l(()=>[o(e(W),{span:16},{default:l(()=>[s.value.extInfo&&["ARRIVED","COMPLETED"].includes(s.value.status)?(r(),b(e(U),{key:0,class:"work-progress-card mb-3"},{title:l(()=>[t("div",Yt,[o(e(i),{icon:"solar:chart-2-bold-duotone",class:"text-blue-500"}),a[9]||(a[9]=t("span",null,"作业进度",-1))])]),default:l(()=>[o(e(ye),{gutter:16,align:"middle"},{default:l(()=>[o(e(W),{span:8},{default:l(()=>[t("div",$t,[o(e(Ye),{type:"circle",percent:j.value,"stroke-color":D.value?"#ff4d4f":j.value>=100?"#52c41a":{"0%":"#1677ff","100%":"#52c41a"},"stroke-width":6,size:100},{format:l(()=>[t("div",Ht,[t("div",{class:"progress-value",style:A({color:D.value?"#ff4d4f":j.value>=100?"#52c41a":"#1677ff"})},d(j.value)+"% ",5),a[10]||(a[10]=t("div",{class:"progress-label"},"完成度",-1))])]),_:1},8,["percent","stroke-color"])])]),_:1}),o(e(W),{span:16},{default:l(()=>[t("div",Xt,[t("div",jt,[t("div",Qt,[o(e(i),{icon:"solar:clipboard-list-bold-duotone",class:"text-blue-500"})]),t("div",Wt,[a[11]||(a[11]=t("div",{class:"stat-label"},"作业类型",-1)),t("div",qt,d(e(xe)[s.value.extInfo.cleaningType]||"-"),1)])]),t("div",Jt,[t("div",Zt,[o(e(i),{icon:"solar:clock-circle-bold-duotone",class:"text-green-500"})]),t("div",es,[a[12]||(a[12]=t("div",{class:"stat-label"},"预计时长",-1)),t("div",ts,d(s.value.extInfo.expectedDuration)+" 分钟 ",1)])]),t("div",ss,[t("div",{class:C(["stat-icon",D.value?"bg-red-50 dark:bg-red-900/30":"bg-orange-50 dark:bg-orange-900/30"])},[o(e(i),{icon:"solar:stopwatch-bold-duotone",class:C(D.value?"text-red-500":"text-orange-500")},null,8,["class"])],2),t("div",as,[a[14]||(a[14]=t("div",{class:"stat-label"},"已用时长",-1)),t("div",{class:C(["stat-value",{"text-red-500":D.value}])},[u(d(G.value)+" 分钟 ",1),D.value?(r(),b(e(H),{key:0,color:"error",size:"small",class:"ml-1"},{default:l(()=>[...a[13]||(a[13]=[u(" 超时 ",-1)])]),_:1})):p("",!0)],2)])]),t("div",os,[t("div",ls,[o(e(i),{icon:"solar:hourglass-line-bold-duotone",class:"text-purple-500"})]),t("div",ns,[a[15]||(a[15]=t("div",{class:"stat-label"},"剩余时间",-1)),t("div",{class:C(["stat-value",{"text-red-500":D.value}])},d(D.value?`已超时 ${G.value-(s.value.extInfo.expectedDuration||0)} 分钟`:`${(s.value.extInfo.expectedDuration||0)-G.value} 分钟`),3)])])])]),_:1})]),_:1})]),_:1})):p("",!0),o(e(U),{class:"info-card mb-3"},{title:l(()=>[t("div",is,[o(e(i),{icon:"solar:info-circle-bold-duotone",class:"text-blue-500"}),a[16]||(a[16]=t("span",null,"基础信息",-1))])]),default:l(()=>[o(e(E),{column:2,bordered:"",size:"small",class:"custom-descriptions"},{default:l(()=>{var c,v;return[o(e(E).Item,{label:"工单类型"},{default:l(()=>[o(e(H),{color:e(tt)[s.value.orderType]},{default:l(()=>[o(e(i),{icon:"solar:broom-bold-duotone",class:"mr-1"}),u(" "+d(e(st)[s.value.orderType]),1)]),_:1},8,["color"])]),_:1}),o(e(E).Item,{label:"作业区域"},{default:l(()=>[t("span",rs,[o(e(i),{icon:"solar:map-point-bold-duotone",class:"text-gray-400"}),u(" "+d(s.value.location||"-"),1)])]),_:1}),o(e(E).Item,{label:"触发来源"},{default:l(()=>[t("span",ds,[o(e(i),{icon:"solar:bluetooth-wave-bold-duotone",class:"text-blue-400"}),u(" "+d(e(at)[s.value.triggerSource||s.value.sourceType||""]||"-"),1)])]),_:1}),o(e(E).Item,{label:"创建时间"},{default:l(()=>[t("span",cs,[o(e(i),{icon:"solar:calendar-bold-duotone",class:"text-gray-400"}),u(" "+d(e(V)(s.value.createTime)),1)])]),_:1}),(c=s.value.extInfo)!=null&&c.arrivedTime?(r(),b(e(E).Item,{key:0,label:"到岗时间"},{default:l(()=>[t("span",us,[o(e(i),{icon:"solar:user-rounded-bold-duotone",class:"text-green-400"}),u(" "+d(e(V)(s.value.extInfo.arrivedTime)),1)])]),_:1})):p("",!0),s.value.startTime?(r(),b(e(E).Item,{key:1,label:"开始时间"},{default:l(()=>[t("span",vs,[o(e(i),{icon:"solar:play-circle-bold-duotone",class:"text-green-400"}),u(" "+d(e(V)(s.value.startTime)),1)])]),_:1})):p("",!0),s.value.endTime?(r(),b(e(E).Item,{key:2,label:"完成时间"},{default:l(()=>[t("span",ms,[o(e(i),{icon:"solar:check-read-bold-duotone",class:"text-blue-400"}),u(" "+d(e(V)(s.value.endTime)),1)])]),_:1})):p("",!0),s.value.updateTime&&s.value.endTime!==s.value.updateTime?(r(),b(e(E).Item,{key:3,label:"更新时间"},{default:l(()=>[t("span",ps,[o(e(i),{icon:"solar:refresh-circle-bold-duotone",class:"text-gray-400"}),u(" "+d(e(V)(s.value.updateTime)),1)])]),_:1})):p("",!0),s.value.triggerDeviceKey?(r(),b(e(E).Item,{key:4,label:"触发设备"},{default:l(()=>[t("code",gs,d(s.value.triggerDeviceKey),1)]),_:1})):p("",!0),(v=s.value.extInfo)!=null&&v.cleaningType?(r(),b(e(E).Item,{key:5,label:"作业类型"},{default:l(()=>[t("span",null,d(e(xe)[s.value.extInfo.cleaningType]),1)]),_:1})):p("",!0)]}),_:1})]),_:1})]),_:1}),o(e(W),{span:8},{default:l(()=>[o(e(U),{class:"assignee-card mb-3"},{title:l(()=>[t("div",fs,[o(e(i),{icon:"solar:user-bold-duotone",class:"text-blue-500"}),a[17]||(a[17]=t("span",null,"执行人",-1))])]),default:l(()=>[s.value.assigneeId?(r(),g("div",_s,[t("div",bs,[o(e(it),{size:40,class:"assignee-avatar"},{default:l(()=>{var c;return[u(d(((c=s.value.assigneeName)==null?void 0:c.charAt(0))||"?"),1)]}),_:1}),t("div",ys,[t("div",xs,d(s.value.assigneeName||"未知"),1),t("div",ks,"工号: "+d(s.value.assigneeId),1)]),m.value?(r(),b(e(H),{key:0,color:Me(m.value.status)?"processing":"default",class:"status-badge"},{default:l(()=>[u(d(Ne(m.value.status)),1)]),_:1},8,["color"])):p("",!0)]),m.value?(r(),g("div",Es,[t("div",Ts,[o(e(i),{icon:"solar:bluetooth-wave-bold-duotone",class:"text-blue-500"}),a[18]||(a[18]=t("span",null,"工牌实时状态",-1)),a[19]||(a[19]=t("div",{class:"pulse-dot"},null,-1))]),t("div",Is,[t("div",Cs,[t("div",Ds,[o(e(i),{icon:"solar:map-point-wave-bold-duotone",class:C(m.value.isInArea?"text-green-500":"text-orange-500")},null,8,["class"])]),t("div",hs,[a[20]||(a[20]=t("div",{class:"badge-stat-label"},"位置状态",-1)),t("div",As,[o(e(H),{color:m.value.isInArea?"success":"warning",size:"small"},{default:l(()=>[u(d(m.value.isInArea?"在区域内":"已离开"),1)]),_:1},8,["color"]),m.value.areaName?(r(),g("span",Ss,d(m.value.areaName),1)):p("",!0)])])]),t("div",ws,[t("div",Ps,[o(e(i),{icon:"solar:battery-charge-bold-duotone",style:A({color:se(m.value.batteryLevel)})},null,8,["style"])]),t("div",Os,[a[21]||(a[21]=t("div",{class:"badge-stat-label"},"电池电量",-1)),m.value.batteryLevel!=null?(r(),g("div",Rs,[t("div",Ls,[t("div",{class:"battery-fill",style:A({width:`${m.value.batteryLevel}%`,backgroundColor:se(m.value.batteryLevel)})},null,4)]),t("span",{class:"battery-text",style:A({color:se(m.value.batteryLevel)})},d(m.value.batteryLevel)+"% ",5)])):(r(),g("span",Ns,"未知"))])]),t("div",Ms,[t("div",Us,[o(e(i),{icon:"solar:wifi-router-bold-duotone",class:"text-blue-500"})]),t("div",Bs,[a[22]||(a[22]=t("div",{class:"badge-stat-label"},"信号强度",-1)),m.value.rssi!=null?(r(),g("div",Vs,[(r(),g(B,null,le(4,c=>t("div",{key:c,class:C(["signal-bar",{active:m.value.rssi>-70+(c-1)*15}])},null,2)),64)),t("span",Fs,d(m.value.rssi)+" dBm ",1)])):(r(),g("span",zs,"未知"))])]),t("div",Gs,[t("div",Ks,[o(e(i),{icon:"solar:pulse-2-bold-duotone",class:"text-green-500"})]),t("div",Ys,[a[23]||(a[23]=t("div",{class:"badge-stat-label"},"最后心跳",-1)),t("div",$s,d(L(m.value.lastHeartbeatTime)),1)])])])])):p("",!0)])):(r(),g("div",Hs,[t("div",Xs,[o(e(i),{icon:"solar:user-plus-bold-duotone"})]),a[25]||(a[25]=t("div",{class:"no-assignee-text"},"暂未分配执行人",-1)),o(e(x),{type:"primary",ghost:"",size:"small",onClick:ue},{default:l(()=>[o(e(i),{icon:"solar:user-plus-bold-duotone",class:"mr-1"}),a[24]||(a[24]=u(" 立即分配 ",-1))]),_:1})]))]),_:1}),s.value.status!=="COMPLETED"?(r(),b(e(U),{key:0,class:"actions-card"},{title:l(()=>[t("div",js,[o(e(i),{icon:"solar:settings-bold-duotone",class:"text-blue-500"}),a[26]||(a[26]=t("span",null,"快捷操作",-1))])]),default:l(()=>[t("div",Qs,[s.value.status==="PENDING"?(r(),g(B,{key:0},[o(e(x),{type:"primary",block:"",class:"action-btn",onClick:ue},{default:l(()=>[o(e(i),{icon:"solar:user-plus-bold-duotone",class:"mr-1"}),a[27]||(a[27]=u(" 分配执行人 ",-1))]),_:1}),o(e(x),{danger:"",block:"",class:"action-btn",onClick:ee},{default:l(()=>[o(e(i),{icon:"solar:close-circle-bold-duotone",class:"mr-1"}),a[28]||(a[28]=u(" 取消工单 ",-1))]),_:1})],64)):p("",!0),s.value.status==="DISPATCHED"?(r(),g(B,{key:1},[o(e(x),{type:"primary",block:"",class:"action-btn",onClick:te},{default:l(()=>[o(e(i),{icon:"solar:volume-loud-bold-duotone",class:"mr-1"}),a[29]||(a[29]=u(" 语音提醒 ",-1))]),_:1}),o(e(x),{danger:"",block:"",class:"action-btn",onClick:ee},{default:l(()=>[o(e(i),{icon:"solar:close-circle-bold-duotone",class:"mr-1"}),a[30]||(a[30]=u(" 取消工单 ",-1))]),_:1})],64)):p("",!0),s.value.status==="ARRIVED"?(r(),g(B,{key:2},[o(e(x),{type:"primary",block:"",class:"action-btn action-btn-success",onClick:Le},{default:l(()=>[o(e(i),{icon:"solar:check-circle-bold-duotone",class:"mr-1"}),a[31]||(a[31]=u(" 手动完成 ",-1))]),_:1}),o(e(x),{block:"",class:"action-btn",onClick:te},{default:l(()=>[o(e(i),{icon:"solar:volume-loud-bold-duotone",class:"mr-1"}),a[32]||(a[32]=u(" 语音提醒 ",-1))]),_:1}),o(e(x),{block:"",class:"action-btn",onClick:ee},{default:l(()=>[o(e(i),{icon:"solar:pause-circle-bold-duotone",class:"mr-1"}),a[33]||(a[33]=u(" 暂停工单 ",-1))]),_:1})],64)):p("",!0),s.value.priority!==0&&!["COMPLETED","CANCELLED"].includes(s.value.status)?(r(),b(e(x),{key:3,danger:"",ghost:"",block:"",class:"action-btn action-btn-upgrade",onClick:Re},{default:l(()=>[o(e(i),{icon:"solar:bolt-bold-duotone",class:"mr-1"}),a[34]||(a[34]=u(" 升级为 P0 紧急 ",-1))]),_:1})):p("",!0)])]),_:1})):p("",!0)]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1}))}}),_a=$e(Ws,[["__scopeId","data-v-c7a09781"]]);export{_a as default};
|