f127f07ab2
rdp_hosts 表与专用 API,在 3389远程页添加/连接,不再依赖子机列表。 Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
5.0 KiB
JavaScript
1 line
5.0 KiB
JavaScript
import{n as e,t}from"./VRow-DQSkwKSy.js";import{Cr as n,Er as r,I as i,Jt as a,Or as o,Q as s,S as c,Sr as l,St as u,Ur as d,Vr as f,Zr as p,br as m,bt as h,en as g,gr as _,hi as v,hr as y,ii as b,mr as x,pi as S,qt as C,xr as w,xt as T}from"./index-_6O5JL4W.js";import{t as E}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{_ as D,v as O}from"./VTextField-CD7WwKb1.js";import{t as k}from"./VSkeletonLoader-dGuFYK7d.js";var A={cpu:`cpu_avg`,mem:`mem_avg`,disk:`disk_avg`,online:null};function j(e,t){if(t===`online`)return e.map(e=>e.online_count);let n=A[t];return e.map(e=>e[n])}function M(e){let t=e.filter(e=>e!=null),n=e.length?e[e.length-1]:null,r=e.length>1?e[e.length-2]:null,i=n!=null&&r!=null?Math.round((n-r)*10)/10:null;if(!t.length)return{current:n,previous:r,delta:i,min:null,max:null,avg:null};let a=t.reduce((e,t)=>e+t,0);return{current:n,previous:r,delta:i,min:Math.min(...t),max:Math.max(...t),avg:Math.round(a/t.length)}}function N(e,t,n){let r=e.slice(t,n+1);return{cpu:M(j(r,`cpu`)),mem:M(j(r,`mem`)),disk:M(j(r,`disk`)),online:M(j(r,`online`))}}function P(e){let t=new Map(e.map(e=>[e.key,e.value])),n=(e,n)=>{let r=Number(t.get(e));return Number.isFinite(r)&&r>0?r:n};return{cpu:n(`cpu_alert_threshold`,80),mem:n(`mem_alert_threshold`,80),disk:n(`disk_alert_threshold`,80)}}function F(e){let t=a(e);return t?C(t.toISOString()):e}function I(e,t=`%`){return e==null?`—`:e===0?`0${t}`:`${e>0?`+`:``}${e}${t}`}function L(e){let t=a(e);return t?t.getTime():null}function R(e,t){if(!e.length)return-1;let n=0,r=1/0;return e.forEach((e,i)=>{let a=L(e.recorded_at);if(a==null)return;let o=Math.abs(a-t);o<r&&(r=o,n=i)}),r<=301e3?n:-1}function z(e,t,n){return e<=0?{startIdx:0,endIdx:0}:{startIdx:Math.max(0,Math.floor(t/100*(e-1))),endIdx:Math.min(e-1,Math.ceil(n/100*(e-1)))}}var B=[`total`,`online`,`offline`,`unset-path`,`alerts`];function V(){return[{subtitle:`服务器总数`,title:`0`,icon:`mdi-server-network`,color:`blue`},{subtitle:`在线`,title:`0`,icon:`mdi-check-circle-outline`,color:`green`},{subtitle:`离线`,title:`0`,icon:`mdi-alert-circle-outline`,color:`orange`},{subtitle:`未设路径`,title:`0`,icon:`mdi-folder-off-outline`,color:`amber`},{subtitle:`告警中`,title:`0`,icon:`mdi-bell-alert-outline`,color:`red`}]}function H(e,t){e.value[0].title=String(t.total),e.value[1].title=String(t.online),e.value[2].title=String(t.offline_list??t.offline),e.value[3].title=String(t.unset_path??0),e.value[4].title=String(t.alerts??0)}async function U(){let{data:e}=await T(h.serverStats,()=>g.get(`/servers/stats`));return e}async function W(e){u(h.serverStats);let t=await U();return H(e,t),t}function G(){return{statItems:b(V())}}function K(e){switch(e){case`online`:return`success`;case`offline`:return`error`;default:return`warning`}}function q(e){switch(e){case`online`:return`在线`;case`offline`:return`离线`;default:return`未知`}}function J(e){if(!e)return`—`;let t=a(e);if(!t)return`—`;let n=Date.now()-t.getTime();return n<6e4?`刚刚`:n<36e5?`${Math.floor(n/6e4)} 分钟前`:n<864e5?`${Math.floor(n/36e5)} 小时前`:`${Math.floor(n/864e5)} 天前`}var Y={class:`stat-cards-row`},X={key:0,class:`d-flex justify-end align-center mb-2`},Z={class:`text-caption text-medium-emphasis mb-1`,style:{"font-size":`14px`,"letter-spacing":`0.5px`,"text-transform":`uppercase`}},Q=E(o({__name:`StatCardsRow`,props:{items:{},loading:{type:Boolean,default:!1},refreshing:{type:Boolean,default:!1},showRefresh:{type:Boolean,default:!0}},emits:[`click`,`refresh`],setup(a,{emit:o}){let u=o;function h(e){e.clickable===!1||!e.key||u(`click`,e.key)}return(o,g)=>(f(),n(`div`,Y,[a.showRefresh?(f(),n(`div`,X,[r(i,{icon:`mdi-refresh`,size:`small`,variant:`text`,loading:a.refreshing,disabled:a.loading,title:`刷新统计`,"aria-label":`刷新统计`,onClick:g[0]||=e=>u(`refresh`)},null,8,[`loading`,`disabled`])])):l(``,!0),a.loading?(f(),w(k,{key:1,type:`heading`,class:`mb-1`})):(f(),w(t,{key:2},{default:p(()=>[(f(!0),n(_,null,d(a.items,(t,n)=>(f(),w(e,{key:t.key??n,cols:`6`,sm:a.items.length>4?4:3,lg:a.items.length>4?2:3},{default:p(()=>[r(D,{elevation:`0`,rounded:`xl`,border:``,class:S([`stat-card`,{"stat-card--clickable":t.clickable!==!1&&t.key,"stat-card--active":t.active,"stat-card--refreshing":a.refreshing}]),role:t.clickable!==!1&&t.key?`button`:void 0,tabindex:t.clickable!==!1&&t.key?0:void 0,onClick:e=>h(t),onKeydown:x(y(e=>h(t),[`prevent`]),[`enter`])},{default:p(()=>[r(O,{class:`pa-4 d-flex align-center justify-space-between`},{default:p(()=>[m(`div`,null,[m(`div`,Z,v(t.subtitle),1),m(`div`,{class:S([`font-weight-bold`,`text-`+t.color]),style:{"font-size":`36px`,"line-height":`1.1`}},v(t.title),3)]),r(c,{color:t.color,size:`48`,rounded:`lg`,class:`stat-icon`},{default:p(()=>[r(s,{icon:t.icon,size:`24`,color:`white`},null,8,[`icon`])]),_:2},1032,[`color`])]),_:2},1024)]),_:2},1032,[`class`,`role`,`tabindex`,`onClick`,`onKeydown`])]),_:2},1032,[`sm`,`lg`]))),128))]),_:1}))]))}}),[[`__scopeId`,`data-v-c6013623`]]);export{B as a,W as c,R as d,I as f,L as g,P as h,q as i,G as l,z as m,J as n,H as o,F as p,K as r,U as s,Q as t,N as u}; |