Files
Migu2.0/MiGu.Server/wwwroot/assets/MapMonitorView-CdBlKooR.js
T

3 lines
54 KiB
JavaScript
Raw Normal View History

2026-06-08 18:18:48 +08:00
import{aN as he,bs as f,aG as b,aD as n,bL as p,aK as l,R as Ke,a4 as ot,c8 as i,ai as J,bE as ce,Z as rt,bk as me,ad as je,aJ as q,$ as ct,aF as ye,bC as C,ay as A,ak as ke,b4 as Pe,bp as Xe,br as Je,u as Qe,aa as et,ab as tt,c9 as We,c0 as qe,cb as ve,bl as nt,Y as De,X as T,c7 as Fe,aE as fe,a3 as ut,r as Ae,F as at,bV as lt,Q as Ge,bS as H,bc as dt,bo as st,av as ft,o as vt,I as mt,bt as pt,an as Ee,K as gt,bw as yt,aX as _t,J as ht,aV as kt,c5 as He,c3 as bt,c2 as wt,au as $t,c4 as St,aQ as Ct,al as It,ag as Nt,bA as xt,L as Lt,a2 as Tt,bW as Mt,bX as Vt,w as Et,a6 as At,t as Ft,ac as Pt,a9 as Dt}from"./index-D5GfLbIx.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{W as Rt}from"./Workspace3D-B9mv4VWE.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{r as pe}from"./reflection-BwOBPyb9.js";import{m as Ot}from"./mapEdit-BXIATxCI.js";import{O as zt}from"./ops-BCeFEEjY.js";import{e as Bt}from"./ops-C48uBBTk.js";import{f as it,i as Ut}from"./monitorConfigCache-DXn96T8F.js";/* empty css *//* empty css *//* empty css */import{w as re}from"./workspaceToolbar-abOZ7a24.js";import{l as Wt,a as qt}from"./projection-BHFE6Meg.js";import{u as Kt}from"./useProjectionStream-ayb6RvWW.js";const jt={class:"vehicle-monitor"},Xt={class:"overview-row"},Gt={class:"overview-item"},Ht={class:"overview-num"},Yt={class:"overview-item"},Zt={class:"overview-num online"},Jt={class:"overview-item"},Qt={class:"overview-num running"},en={class:"overview-item"},tn={class:"overview-num charging"},nn={class:"overview-item"},an={class:"overview-num fault"},ln={class:"toolbar"},sn={class:"vehicle-list"},on=["onClick"],rn={class:"vehicle-head"},cn={class:"vid"},un=["title"],dn={class:"vehicle-sub"},fn=["title"],vn={class:"mission-mini"},mn=["title"],pn={key:1,class:"mission-name muted"},gn={key:0,class:"empty muted"},yn=he({__name:"VehicleMonitorPanel",props:{cars:{},missions:{},selectedId:{}},emits:["select"],setup(g,{emit:E}){const c=g,P=E,D=C(""),s=C(""),y=[{value:"idle",label:"空闲"},{value:"running",label:"运行中"},{value:"charging",label:"充电中"},{value:"paused",label:"已暂停"},{value:"fault",label:"故障"},{value:"offline",label:"离线"}],x=y.reduce((h,L)=>(h[L.value]=L.label,h),{});function U(h){return x[h]??h}function N(h){switch(h){case"running":return"success";case"charging":return"primary";case"paused":return"warning";case"fault":return"danger";case"offline":return"info";case"idle":default:return"info"}}const X={queued:"排队",assigned:"已分配",running:"执行中",paused:"暂停",completed:"已完成",cancelled:"已取消",failed:"失败"};function G(h){return X[h]??h}function O(h){switch(h){case"running":return"success";case"assigned":return"primary";case"queued":return"info";case"paused":return"warning";case"completed":return"success";case"cancelled":return"info";case"failed":return"danger";default:return"info"}}const F=A(()=>c.cars.filter(h=>h.state!=="offline").length),w=A(()=>c.cars.filter(h=>h.state==="running").length),Y=A(()=>c.cars.filter(h=>h.state==="charging").length),Z=A(()=>c.cars.filter(h=>h.state==="fault").length),K=A(()=>{const h=r=>r==="running"?0:r==="paused"?1:r==="assigned"?2:3,L=new Map;for(const r of c.missions){if(!r.carId||r.status!=="running"&&r.status!=="paused"&&r.status!=="assigned")continue;const m=L.get(r.carId);(!m||h(r.status)<h(m.status))&&L.set(r.carId,r)}return L});function z(h){if(h.missionId){const L=c.missions.find(r=>r.id===h.missionId);if(L)return L}return K.value.get(h.id)}function R(h){const L=h.batterySoc??0,r=L>1?L:L*100;return Math.max(0,Math.min(100,Math.round(r)))}function ae(h){retu
目标车辆${c.selection?.id}`,"二次确认",{type:"warning"})}catch{return}x.value=e.code;try{const d=await Bt({opCode:e.code,targetId:String(a),reason:""});d.ok?T.success(`已执行 ${e.label}auditId=${d.auditId}`):T.warning(d.message||`执行未成功${e.label}`)}catch(d){T.error(`执行失败${d.message}`)}finally{x.value=null}}}const ze=A(()=>z.value?Object.keys(Y.value).length?S.value.length?"当前车型无可执行动作。":"当前车型未配置动作,或方法名与运营维护中勾选的不一致。":"未配置动作。请在「配置中心 → 运营维护」按车型勾选动作并保存。":"加载配置中…"),Ce=A(()=>({name:r("name")||N.value||c.selection?.name||`路径 ${h.value}`})),Me=A(()=>[{key:"layer",label:"图层",value:r("layerName","layer")||"—"},{key:"type",label:"类型",value:X.value||"—"}]);function Be(e){return e?`${e.kind}:${e.id}`:""}async function oe(e=!1){if(!(z.value&&!e))try{const a=await it(e);Y.value={...a.config.carActionByType??{}},Z.value=[...a.config.site?.methods??[]],K.value=[...a.config.track?.methods??[]]}catch{Y.value={},Z.value=[],K.value=[]}finally{z.value=!0}}function $e(e,a){N.value=e.summary?.name??a??"",X.value=e.typeName??"",G.value="fullTypeName"in e&&e.fullTypeName?e.fullTypeName:e.typeName??"",O.value={...e.fields};for(const d of e.fieldList??[])O.value[d.key]=d.value;F.value=e.status??[],w.value=e.methods??[]}function Ve(){const e=I();if(!e)return!1;N.value=e.name,X.value=e.typeName??"",G.value=e.typeName??"";const a=Math.round(e.batterySoc<=1?e.batterySoc*100:e.batterySoc);return O.value={x:String(e.x),y:String(e.y),th:String(e.theta),batterySoc:String(a)},F.value=[],w.value=[],!0}async function Ie(){if(!c.selection){N.value="",O.value={},F.value=[],w.value=[],s.value=!1;return}const e=j.value,a=Number(c.selection.id);if(!e||!Number.isFinite(a))return;const d=s.value,V=!d&&le.value==="vehicle"&&Ve();V&&(s.value=!0),d?y.value=!0:D.value=!V;try{if(c.readOnly){const ne=await pe.getBundle(e,a);$e(ne,c.selection.name??""),w.value=[],s.value=!0;return}await oe(!1);const k=await pe.getBundle(e,a);$e(k,c.selection.name??""),s.value=!0}catch(k){c.readOnly?console.warn("[MonitorSelection] 只读详情加载失败,降级用列表数据",k):T.error(`加载选中信息失败${k.message}`)}finally{D.value=!1,y.value=!1}}async function t(e){const a=j.value;if(!a||!c.selection||!e.methodName)return;const d=Number(c.selection.id);if(Number.isFinite(d)){if(a==="car"&&Ye(e)){U.value=e,ue.value=`选择目标站点 ${e.label||e.methodName}`,x.value=e.methodName;try{const V=await Ze();if(V!=null){await v(V);return}ae.value=await Wn(),R.value=!0}catch(V){T.error(`加载站点列表失败${V.message}`)}finally{R.value||(x.value=null)}return}x.value=e.methodName;try{await jn(a,d,e)&&await Ie()}finally{x.value=null}}}async function v(e){const a=Number(c.selection?.id);if(Number.isFinite(a)){x.value=U.value?.methodName??"goto";try{await Kn(a,e)&&await Ie()}finally{x.value=null,U.value=null}}}async function $(){const e=await Ze();R.value=!1,e!=null&&await v(e)}let M=0,te="";return Fe(()=>[Be(c.selection),c.refreshKey],async(e,a)=>{const d=++M;if(a&&e[0]===a[0]&&e[0]&&e[1]!==a[1])return await oe(!0),void 0;e[0]!==te&&(s.value=!1,te=e[0]),await Ie()},{immediate:!0}),(e,a)=>{const d=Ge,V=je;return f(),b("div",Xn,[g.selection?(f(),b("div",Hn,[D.value?(f(),b("div",Yn,[l(d,{class:"is-loading"},{default:i(()=>[l(H(dt))]),_:1}),a[2]||(a[2]=n("span",null,"加载中…",-1))])):le.value==="site"?(f(),b(J,{key:1},[n("section",Zn,[n("div",Jn,[n("span",Qn,"#"+p(h.value),1),a[3]||(a[3]=n("span",{class:"type-tag"},"站点",-1))]),n("div",ea,p(u.value.name),1)]),n("section",ta,[a[7]||(a[7]=n("header",{class:"card-hd"},[n("span",null,"位置")],-1)),n("div",na,[n("div",aa,[a[4]||(a[4]=n("span",{class:"k"},"X",-1)),n("span",la,p(u.value.x),1)]),n("div",sa,[a[5]||(a[5]=n("span",{class:"k"},"Y",-1)),n("span",ia,p(u.value.y),1)]),n("div",oa,[a[6]||(a[6]=n("span",{class:"k"},"Z",-1)),n("span",ra,p(u.value.z),1)])])]),de.value.length?(f(),b("section",ca,[n("header",ua,[a[8