2 lines
8.2 KiB
JavaScript
2 lines
8.2 KiB
JavaScript
var Y=Object.defineProperty,q=Object.defineProperties;var H=Object.getOwnPropertyDescriptors;var U=Object.getOwnPropertySymbols;var Q=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable;var T=(n,o,r)=>o in n?Y(n,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):n[o]=r,V=(n,o)=>{for(var r in o||(o={}))Q.call(o,r)&&T(n,r,o[r]);if(U)for(var r of U(o))X.call(o,r)&&T(n,r,o[r]);return n},$=(n,o)=>q(n,H(o));var S=(n,o,r)=>new Promise((A,m)=>{var k=l=>{try{p(r.next(l))}catch(i){m(i)}},_=l=>{try{p(r.throw(l))}catch(i){m(i)}},p=l=>l.done?A(l.value):Promise.resolve(l.value).then(k,_);p((r=r.apply(n,o)).next())});import{a9 as j,an as y,S as Z,bP as tt,ac as et}from"./bootstrap-CG9GXOLj.js";import{getBadgeStatusList as st,manualDispatchOrder as at}from"./index-C6gNa9Gb.js";import{B as P}from"./data-DqshIw-O.js";import{m as rt,b9 as b,aa as B,ab as ot,b2 as u,bJ as z,ae as e,j as x,u as c,bp as d,ai as v,ad as f,ac as N,I as nt,bb as lt,aR as it,aT as E}from"../jse/index-index-Z45rumFj.js";import{u as dt}from"./use-modal-BdZIxZaI.js";import"./index-yGYbCIeb.js";import"./dict-enum-CaHgMaDZ.js";import"./x-C5mvkGkO.js";const ct={class:"dispatch-body"},ut={class:"order-info-bar mb-5 flex items-center gap-3 rounded-xl border border-blue-100 bg-blue-50 px-4 py-3 dark:border-blue-900/40 dark:bg-blue-950/30"},xt={class:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-blue-100 dark:bg-blue-900/50"},mt={class:"min-w-0 flex-1"},gt={class:"truncate text-sm font-semibold text-gray-800 dark:text-gray-100"},bt={class:"flex shrink-0 items-center gap-3 text-xs"},ft={class:"text-gray-500 dark:text-gray-400"},pt={class:"font-semibold text-gray-700 dark:text-gray-200"},yt={class:"text-gray-500 dark:text-gray-400"},vt={class:"font-semibold text-green-600 dark:text-green-400"},ht={class:"mb-3 flex items-center justify-between"},kt={key:0,class:"flex items-center gap-1 text-xs text-blue-600 dark:text-blue-400"},_t={key:0,class:"badge-scroll custom-scroll max-h-72 overflow-y-auto pr-1"},wt={class:"grid grid-cols-2 gap-2.5"},It=["onClick"],Ct={key:0,class:"absolute right-2.5 top-2.5 flex h-4 w-4 items-center justify-center rounded-full bg-blue-500"},Lt={class:"flex items-center gap-3"},Ft={class:"min-w-0 flex-1"},St={class:"mb-0.5 flex items-center justify-between gap-1"},Bt={class:"truncate text-sm font-semibold leading-tight text-gray-800 dark:text-gray-100"},Nt={key:0,class:"mb-1 truncate text-[11px] text-gray-400 dark:text-gray-500"},Et={class:"flex items-center justify-between gap-1"},At={class:"flex min-w-0 items-center gap-1 truncate text-[11px] text-gray-500 dark:text-gray-400"},Ot={class:"truncate"},jt={key:1,class:"flex flex-col items-center justify-center py-12 text-gray-400"},Dt={class:"mb-3 flex h-14 w-14 items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800"},Ut={class:"mt-4 border-t border-gray-100 pt-4 dark:border-gray-700/60"},Tt=rt({name:"WorkOrderAssignForm",__name:"assign-form",emits:["success"],setup(n,{emit:o}){const r=o,[A,m]=dt({onOpenChange:t=>S(null,null,function*(){if(t){const s=m.getData();s&&(k.value=s.orderId,_.value=s.orderCode),g.value=void 0,w.value="",yield G()}}),onConfirm:J}),k=b(),_=b(""),p=b(!1),l=b(!1),i=b([]),g=b(),w=b("");function G(){return S(this,null,function*(){l.value=!0;try{const t=yield st();i.value=(t||[]).map(s=>{var a;return $(V({},s),{status:(a=s.status)==null?void 0:a.toUpperCase()})})}catch(t){i.value=[]}finally{l.value=!1}})}function K(t){t.status!=="OFFLINE"&&(g.value=t.deviceId)}function I(t){return P[t]||P.OFFLINE}function O(t){return t==null?{text:"未知",color:"#d1d5db",icon:"solar:battery-charge-minimalistic-bold"}:t<=20?{text:`${t}%`,color:"#ef4444",icon:"solar:battery-low-bold"}:t<=50?{text:`${t}%`,color:"#f59e0b",icon:"solar:battery-half-bold"}:{text:`${t}%`,color:"#22c55e",icon:"solar:battery-full-bold"}}function C(t){return t.nickname||t.deviceKey}function M(t){const s=["#3b82f6","#8b5cf6","#06b6d4","#10b981","#f59e0b","#ef4444"],a=[...String(t)].reduce((h,F)=>h+F.codePointAt(0),0);return s[a%s.length]}function J(){return S(this,null,function*(){if(!g.value){j.warning("请选择执行工牌");return}p.value=!0,m.setState({confirmLoading:!0});try{yield at({orderId:k.value,assigneeId:g.value,assigneeName:L.value?C(L.value):void 0,remark:w.value||void 0}),j.success("派单成功"),m.close(),r("success")}catch(t){j.error("派单失败,请重试")}finally{p.value=!1,m.setState({confirmLoading:!1})}})}const D=B(()=>{const t={IDLE:0,BUSY:1,PAUSED:2,OFFLINE:3};return[...i.value].toSorted((s,a)=>{var h,F;return((h=t[s.status])!=null?h:99)-((F=t[a.status])!=null?F:99)})}),L=B(()=>i.value.find(t=>t.deviceId===g.value)),R=B(()=>i.value.filter(t=>t.status==="IDLE").length),W=B(()=>i.value.filter(t=>t.status!=="OFFLINE").length);return(t,s)=>(u(),ot(c(A),{title:"分配工单",class:"dispatch-modal w-[620px]"},{default:z(()=>[e("div",ct,[e("div",ut,[e("div",xt,[x(c(y),{icon:"solar:document-text-bold-duotone",class:"text-base text-blue-600 dark:text-blue-400"})]),e("div",mt,[s[1]||(s[1]=e("span",{class:"text-xs text-gray-500 dark:text-gray-400"},"工单编号",-1)),e("p",gt,d(_.value),1)]),e("div",bt,[e("span",ft,[s[2]||(s[2]=v(" 在线 ",-1)),e("span",pt,d(W.value),1)]),s[4]||(s[4]=e("span",{class:"h-3 w-px bg-gray-200 dark:bg-gray-700"},null,-1)),e("span",yt,[s[3]||(s[3]=v(" 空闲 ",-1)),e("span",vt,d(R.value),1)])])]),e("div",ht,[s[5]||(s[5]=e("span",{class:"text-sm font-semibold text-gray-700 dark:text-gray-200"}," 选择执行工牌 ",-1)),L.value?(u(),f("span",kt,[x(c(y),{icon:"solar:check-circle-bold",class:"text-sm"}),v(" 已选:"+d(C(L.value)),1)])):N("",!0)]),x(c(Z),{spinning:l.value},{default:z(()=>[D.value.length>0?(u(),f("div",_t,[e("div",wt,[(u(!0),f(nt,null,lt(D.value,a=>(u(),f("div",{key:a.deviceId,class:it(["badge-card group relative rounded-xl border-2 p-3 transition-all duration-200",[a.status==="OFFLINE"?"cursor-not-allowed border-gray-100 bg-gray-50/60 opacity-50 dark:border-gray-800 dark:bg-gray-900/30":"cursor-pointer",g.value===a.deviceId?"border-blue-500 bg-blue-50/80 shadow-md shadow-blue-100 dark:border-blue-500 dark:bg-blue-950/40 dark:shadow-blue-950":a.status!=="OFFLINE"?"border-gray-200 bg-white hover:border-blue-300 hover:bg-blue-50/40 hover:shadow-sm dark:border-gray-700 dark:bg-gray-800/60 dark:hover:border-blue-600 dark:hover:bg-blue-950/20":""]]),onClick:h=>K(a)},[g.value===a.deviceId?(u(),f("div",Ct,[x(c(y),{icon:"solar:check-bold",class:"text-[10px] text-white"})])):N("",!0),e("div",Lt,[e("div",{class:"relative flex h-10 w-10 shrink-0 items-center justify-center rounded-xl text-sm font-bold text-white shadow-sm",style:E({backgroundColor:M(a.deviceId)})},[v(d(C(a).charAt(0).toUpperCase())+" ",1),e("span",{class:"absolute -bottom-0.5 -right-0.5 h-3 w-3 rounded-full border-2 border-white dark:border-gray-800",style:E({backgroundColor:I(a.status).dot})},null,4)],4),e("div",Ft,[e("div",St,[e("span",Bt,d(C(a)),1),e("span",{class:"shrink-0 rounded-full px-1.5 py-0.5 text-[11px] font-medium leading-tight",style:E({color:I(a.status).color,backgroundColor:I(a.status).bg})},d(I(a.status).text),5)]),a.nickname?(u(),f("div",Nt,d(a.deviceKey),1)):N("",!0),e("div",Et,[e("span",At,[x(c(y),{icon:"solar:map-point-bold",class:"shrink-0 text-[11px]"}),e("span",Ot,d(a.currentAreaName||"未知区域"),1)]),e("span",{class:"flex shrink-0 items-center gap-0.5 text-[11px] font-medium",style:E({color:O(a.batteryLevel).color})},[x(c(y),{icon:O(a.batteryLevel).icon,class:"text-[12px]"},null,8,["icon"]),v(" "+d(O(a.batteryLevel).text),1)],4)])])])],10,It))),128))])])):l.value?N("",!0):(u(),f("div",jt,[e("div",Dt,[x(c(y),{icon:"solar:shield-warning-bold-duotone",class:"text-2xl text-gray-400"})]),s[6]||(s[6]=e("p",{class:"text-sm font-medium text-gray-500"},"暂无可用工牌",-1)),s[7]||(s[7]=e("p",{class:"mt-1 text-xs text-gray-400"},"请检查设备是否在线",-1))]))]),_:1},8,["spinning"]),e("div",Ut,[s[8]||(s[8]=e("div",{class:"mb-2 text-sm font-medium text-gray-700 dark:text-gray-200"},[v(" 派单备注 "),e("span",{class:"ml-1 text-xs font-normal text-gray-400"},"(选填)")],-1)),x(c(tt),{value:w.value,"onUpdate:value":s[0]||(s[0]=a=>w.value=a),placeholder:"输入派单备注,将同步推送给执行工牌…",rows:3,maxlength:200,"show-count":""},null,8,["value"])])])]),_:1}))}}),Wt=et(Tt,[["__scopeId","data-v-ee7cd4ec"]]);export{Wt as default};
|