2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
import{aG as J,b7 as I,aC as B,b1 as T,az as n,aF as o,_ as oe,bo as v,bK as ie,bH as c,r as Q,br as u,a$ as re,K as X,J as Y,aE as M,I as Z,a7 as ce,bA as ue,Q as ee,ay as de,au as fe,bF as me,aw as ve,av as d,Y as F,X as G,aj as te,aS as pe,b5 as he,b6 as _e,bn as q,bf as E,bt as be,bI as we,by as ge,ah as j,bh as W,aA as K,aB as ye,R as Ce,a3 as Ie,bl as Me,Z as xe,al as Ae,bg as $e,L as ke}from"./index-D5OuyicD.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{r as Pe}from"./reflection-BmVSriDn.js";import{l as Ve}from"./projection-BVk2tEkj.js";import{u as Le}from"./useProjectionStream-DvMLcpMm.js";const Be={online:"OnlineCar",offline:"OfflineCar",repair:"Repair",blown:"Blown"};async function ne(l,i){const a=Be[i];if(!a)return!1;try{return await Pe.execute("car",l,a),!0}catch{return!1}}function Ee(l,i){const a=l??(i?`http://${i}:8081`:null);a&&window.open(a,"_blank","noopener,noreferrer")}const Se={class:"battery-strip"},De={class:"card-head"},He={class:"title-block"},Oe={class:"vid"},ze=["title"],Te={class:"card-body"},Ue={class:"thumb"},Fe={class:"metrics"},Re={class:"metric-row"},Ne={class:"value mono"},je={class:"metric-row"},We={class:"metric-row"},Ke={class:"metric-row"},Ge={class:"value"},qe={class:"metric-row"},Je={class:"value"},Qe={class:"icon-grid"},Xe={class:"icon-cell",title:"CPU"},Ye={class:"icon-cell",title:"内存"},Ze={class:"icon-cell",title:"报警"},et={class:"icon-cell",title:"连接"},tt={class:"card-foot"},nt=J({__name:"VehicleHealthCard",props:{vehicle:{},selected:{type:Boolean},canWrite:{type:Boolean}},emits:["select","maintenanceChanged"],setup(l,{emit:i}){const a=l,w=i,x={idle:"空闲",running:"运行",charging:"充电",paused:"暂停",fault:"故障",offline:"离线"},A=d(()=>x[a.vehicle.state]??a.vehicle.state),p=d(()=>{const t=a.vehicle.batterySoc??0,e=t>1?t:t*100;return Math.max(0,Math.min(100,Math.round(e)))}),S=d(()=>{const t=p.value;return t<20?"#f56c6c":t<50?"#e6a23c":"#67c23a"}),g=d(()=>a.vehicle.maintenanceMode==="online"),D=d(()=>({"is-selected":a.selected,"is-alarm":a.vehicle.isAlarmActive,"is-offline":a.vehicle.maintenanceMode==="offline"||a.vehicle.state==="offline","is-maintenance":a.vehicle.maintenanceMode==="repair"||a.vehicle.maintenanceMode==="blown","is-unreachable":a.vehicle.reachable===!1})),H=d(()=>{const t=a.vehicle.latencyMs;return t==null?"—":a.vehicle.reachable===!1?"超时":`${t} ms`}),O=d(()=>{const t=a.vehicle.latencyMs;return a.vehicle.reachable===!1?"danger":t!=null&&t>80?"warn":""}),$=d(()=>{const t=a.vehicle.faultRatePercent;return t==null?"—":`${t.toFixed(2)}%`}),k=d(()=>{const t=a.vehicle.faultRatePercent??0;return t>=5?"danger":t>=1?"warn":""}),y=d(()=>{const t=a.vehicle.cpuPercent;return t!=null?`${Math.round(t)}%`:"—"}),C=d(()=>{const t=a.vehicle.memPercent;return t!=null?`${Math.round(t)}%`:"—"});function V(){w("select",a.vehicle.id)}function L(t){t.target.closest(".head-actions")||Ee(a.vehicle.onboardUrl,a.vehicle.ip)}async function _(t){const e=a.vehicle.rawId??parseInt(a.vehicle.id.replace(/\D/g,""),10);if(!Number.isFinite(e))return;await ne(e,t)?(G.success("维护状态已更新"),w("maintenanceChanged")):G.error("维护操作失败")}async function s(t){if(!a.canWrite)return;const e=t?"online":"offline";try{await F.confirm(t?"确认将车辆上线?":"确认将车辆下线维护?","维护确认",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await _(e)}catch{}}async function f(t){if(!a.canWrite)return;const e=t;if(e==="blown"){try{await F.confirm("返厂检修将停止调度并清空站点,确认?","危险操作",{type:"error",confirmButtonText:"确定",cancelButtonText:"取消"}),await _(e)}catch{}return}if(e==="repair"){try{awai
|