You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
14 KiB

2 weeks ago
import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,P as r,V as i,Y as a,_ as o,d as s,f as c,i as l,it as u,kt as d,l as f,p,u as m,v as h,y as g,z as _}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as v}from"./http-LCi9aT1G.js";import{d as y,u as b}from"./index-h-Rwfuak.js";async function x(e){let{data:t}=await v.get(`/camera-devices`,{params:e});return t}async function S(e){let{data:t}=await v.post(`/camera-devices`,e);return t}async function C(e,t){let{data:n}=await v.put(`/camera-devices/${e}`,t);return n}async function w(e){let{data:t}=await v.delete(`/camera-devices/${e}`);return t}async function T(e){let{data:t}=await v.post(`/camera-devices/${e}/retry`);return t}async function E(){let{data:e}=await v.get(`/camera-health`);return e}async function D(e){let{data:t}=await v.get(`/camera-alerts`,{params:e});return t}async function O(e){let{data:t}=await v.post(`/camera-alerts/${e}/acknowledge`);return t}async function k(){let{data:e}=await v.get(`/camera-monitor-settings`);return e}async function A(e){let{data:t}=await v.put(`/camera-monitor-settings`,e);return t}var j={class:`muted`},M=b(g({__name:`CameraAlerts`,setup(g){let b=u(`health`),M=u(!1),N=u([]),P=u([]),F=u(null),I=u(null),L=u(!1),R=u({monitor_enabled:!0,notification_enabled:!0,include_in_venue_stats:!0,sdk_port:8e3,http_port:80,channel:1,push_timeout_seconds:300}),z=u([]),B=u({keyword:``}),V=u(`all`),H=u({}),U=u({}),W=u({}),G=u(``),K=e=>({ONLINE_PUSHING:`推送正常`,PUSH_SUSPECT:`疑似停止`,PUSH_STALE:`推送停止`,NETWORK_DOWN:`网络不可达`,LOGIN_FAILED:`登录认证失败`,ARM_FAILED:`布防失败`,NO_PUSH_YET:`尚未收到推送`,SERVICE_UNAVAILABLE:`监测服务不可用`,UNKNOWN:`未知`,DISABLED:`已停用`,RECONNECTING:`重连中`})[String(e||`UNKNOWN`)]||String(e||`未知`),q=e=>[`ONLINE_PUSHING`].includes(String(e))?`green`:[`PUSH_SUSPECT`,`RECONNECTING`].includes(String(e))?`orangered`:`red`,J=e=>{if(!e)return`—`;let t=String(e).replace(/\.(\d{3})\d+/g,`.$1`),n=/(?:Z|[+-]\d{2}:?\d{2})$/i.test(t)?t:`${t.replace(` `,`T`)}Z`,r=new Date(n);return Number.isNaN(r.getTime())?`—`:r.toLocaleString(`zh-CN`,{timeZone:`Asia/Shanghai`})},Y=f(()=>N.value.filter(e=>{let t=!B.value.venue_id||Number(e.venue_id)===Number(B.value.venue_id),n=String(e.health?.status||`UNKNOWN`),r=V.value===`normal`?n===`ONLINE_PUSHING`:V.value===`abnormal`?[`PUSH_STALE`,`NETWORK_DOWN`,`LOGIN_FAILED`,`ARM_FAILED`,`PUSH_SUSPECT`,`NO_PUSH_YET`,`SERVICE_UNAVAILABLE`].includes(n):!B.value.status||n===B.value.status,i=B.value.keyword.trim().toLowerCase(),a=!i||`${e.name} ${e.ip} ${e.venue_name||e.venue?.name||``}`.toLowerCase().includes(i);return t&&r&&a}).sort((e,t)=>{let n=e=>({SERVICE_UNAVAILABLE:0,LOGIN_FAILED:1,ARM_FAILED:2,NETWORK_DOWN:3,PUSH_STALE:4,PUSH_SUSPECT:5,NO_PUSH_YET:6,UNKNOWN:7,RECONNECTING:8,ONLINE_PUSHING:9})[String(e||`UNKNOWN`)]??7;return n(e.health?.status)-n(t.health?.status)}));async function X(){try{let{data:e}=await v.get(`/venues`);z.value=Array.isArray(e)?e:[]}catch{z.value=[]}}async function Z(){M.value=!0;try{let[e,t,n,r]=await Promise.all([E(),D({status:`OPEN`,page_size:100}),x({page_size:100}),k()]);N.value=e.devices??n.data??[],W.value=e.summary?.byStatus??{},P.value=t.data??[],F.value={...r,notification_start_time:String(r.notification_start_time||``).slice(0,5),notification_end_time:String(r.notification_end_time||``).slice(0,5)},G.value=(r.recipient_emails||[]).join(`,`)}catch(t){e.error(t?.response?.data?.message||t?.message||`加载摄像头预警数据失败`)}finally{M.value=!1}}function Q(){I.value=null,R.value={monitor_enabled:!0,notification_enabled:!0,include_in_venue_stats:!0,sdk_port:8e3,http_port:80,channel:1,push_timeout_seconds:F.value?.default_push_timeout_seconds??300},L.value=!0}function ee(e){I.value=e,R.value={...e,password:``},L.value=!0}async function te(){try{I.value?await C(I.value.id,R.value):await S(R.value),e.success(`已保存`),L.value=!1,await Z()}catch(t){e.error(t?.response?.data?.message||t?.message||`保存失败`)}}async function ne(t){H.value[t.id]||y.confirm({title:`确认重新连接`,c