import{n as e}from"./axios-CiYFffbI.js";import{I as t,N as n,V as r,Y as i,_ as a,d as o,f as s,i as c,it as l,kt as u,l as d,p as f,u as p,v as m,y as h}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as g}from"./http-LCi9aT1G.js";import{d as _,u as v}from"./index-7ogmrLc0.js";async function y(e){let{data:t}=await g.get(`/camera-devices`,{params:e});return t}async function b(e){let{data:t}=await g.post(`/camera-devices`,e);return t}async function x(e,t){let{data:n}=await g.put(`/camera-devices/${e}`,t);return n}async function S(e){let{data:t}=await g.delete(`/camera-devices/${e}`);return t}async function C(e){let{data:t}=await g.post(`/camera-devices/${e}/retry`);return t}async function w(){let{data:e}=await g.get(`/camera-health`);return e}async function T(e){let{data:t}=await g.get(`/camera-alerts`,{params:e});return t}async function E(e){let{data:t}=await g.post(`/camera-alerts/${e}/acknowledge`);return t}async function D(){let{data:e}=await g.get(`/camera-monitor-settings`);return e}async function O(e){let{data:t}=await g.put(`/camera-monitor-settings`,e);return t}var k={class:`muted`},A=v(h({__name:`CameraAlerts`,setup(h){let g=l(`health`),v=l(!1),A=l([]),j=l([]),M=l(null),N=l(null),P=l(!1),F=l({monitor_enabled:!0,notification_enabled:!0,include_in_venue_stats:!0,sdk_port:8e3,http_port:80,channel:1,push_timeout_seconds:300}),I=l({}),L=l(``),R=e=>({ONLINE_PUSHING:`推送正常`,PUSH_SUSPECT:`疑似停止`,PUSH_STALE:`推送停止`,NETWORK_DOWN:`网络断开`,LOGIN_FAILED:`登录失败`,ARM_FAILED:`布防失败`,UNKNOWN:`未知`,DISABLED:`已停用`,RECONNECTING:`重连中`})[String(e||`UNKNOWN`)]||String(e||`未知`),z=e=>[`ONLINE_PUSHING`].includes(String(e))?`green`:[`PUSH_SUSPECT`,`RECONNECTING`].includes(String(e))?`orangered`:`red`,B=e=>e?new Date(e).toLocaleString(`zh-CN`):`—`,V=d(()=>A.value);async function H(){v.value=!0;try{let[e,t,n,r]=await Promise.all([w(),T({status:`OPEN`,page_size:100}),y({page_size:100}),D()]);A.value=e.devices??n.data??[],I.value=e.summary?.byStatus??{},j.value=t.data??[],M.value={...r,notification_start_time:String(r.notification_start_time||``).slice(0,5),notification_end_time:String(r.notification_end_time||``).slice(0,5)},L.value=(r.recipient_emails||[]).join(`,`)}catch(t){e.error(t?.response?.data?.message||t?.message||`加载摄像头预警数据失败`)}finally{v.value=!1}}function U(){N.value=null,F.value={monitor_enabled:!0,notification_enabled:!0,include_in_venue_stats:!0,sdk_port:8e3,http_port:80,channel:1,push_timeout_seconds:M.value?.default_push_timeout_seconds??300},P.value=!0}function W(e){N.value=e,F.value={...e,password:``},P.value=!0}async function G(){try{N.value?await x(N.value.id,F.value):await b(F.value),e.success(`已保存`),P.value=!1,await H()}catch(t){e.error(t?.response?.data?.message||t?.message||`保存失败`)}}async function K(t){try{await C(t.id),e.success(`重试指令已下发,等待新的客流推送验证`),await H()}catch(t){e.error(t?.response?.data?.message||t?.message||`重试失败`)}}async function q(t){_.warning({title:`停用摄像头`,content:`确定停用 ${t.name}(${t.ip})吗?`,onOk:async()=>{await S(t.id),e.success(`已停用`),await H()}})}async function J(t){await E(t.id),e.success(`已确认`),await H()}async function Y(){M.value&&(M.value.recipient_emails=L.value.split(`,`).map(e=>e.trim()).filter(Boolean),await O(M.value),e.success(`通知设置已保存`))}return n(H),(e,n)=>{let l=r(`a-tag`),d=r(`a-button`),h=r(`a-space`),_=r(`a-table-column`),y=r(`a-table`),b=r(`a-tab-pane`),x=r(`a-input`),S=r(`a-form-item`),C=r(`a-time-picker`),w=r(`a-input-number`),T=r(`a-form`),E=r(`a-tabs`),D=r(`a-card`),O=r(`a-input-password`),X=r(`a-switch`),Z=r(`a-modal`);return t(),f(c,null,[m(D,{title:`场馆管理 / 摄像头预警`},{default:i(()=>[m(E,{"active-key":g.value,"onUpdate:activeKey":n[4]||=e=>g.value=e},{default:i(()=>[m(b,{key:`health`,title:`实时状态`},{default:i(()=>[m(h,{wrap:``,style:{"margin-bottom":`12px`}},{default:i(()=>[m(l,{color:`green`},{default:i(()=>[a(`正常 `+u(I.value.ONLINE_PUSHING||0),1)]),_:1}),m(l,{color:`red`},{default:i(()=>[a(`异常 `+u((I.value.PUSH_STALE||0)+(I.value.NETWORK_DOWN||0)+(I.value.LOGIN_FAILED||0)+(I.value.ARM_FAILED||0)),1)]),_:1}),m(l,null,{default:i(()=>[a(`总数 `+u(A.value.length),1)]),_:1}),m(d,{onClick:H,loading:v.value},{default:i(()=>[...n[17]||=[a(`刷新`,-1)]]),_:1},8,[`loading`]),m(d,{type:`primary`,onClick:U},{default:i(()=>[...n[18]||=[a(`新增摄像头`,-1)]]),_:1})]),_:1}),m(y,{data:V.value,loading:v.value,"row-key":`id`,pagination:!1},{columns:i(()=>[m(_,{title:`场馆`},{cell:i(({record:e})=>[a(u(e.venue?.name||e.venue_name||`未绑定`),1)]),_:1}),m(_,{title:`摄像头`},{cell:i(({record:e})=>[a(u(e.name),1),p(`div`,k,u(e.ip)+` / 通道 `+u(e.channel),1)]),_:1}),m(_,{title:`状态`},{cell:i(({record:e})=>[m(l,{color:z(e.health?.status)},{default:i(()=>[a(u(R(e.health?.status)),1)]),_:2},1032,[`color`])]),_:1}),m(_,{title:`最后推送`},{cell:i(({record:e})=>[a(u(B(e.health?.last_pdc_at)),1)]),_:1}),m(_,{title:`TCP`},{cell:i(({record:e})=>[a(u(e.health?.tcp_reachable===!0?`可达`:e.health?.tcp_reachable===!1?`不可达`:`—`),1)]),_:1}),m(_,{title:`操作`},{cell:i(({record:e})=>[m(h,null,{default:i(()=>[m(d,{size:`small`,onClick:t=>W(e)},{default:i(()=>[...n[19]||=[a(`编辑`,-1)]]),_:1},8,[`onClick`]),m(d,{size:`small`,type:`primary`,onClick:t=>K(e)},{default:i(()=>[...n[20]||=[a(`重新连接`,-1)]]),_:1},8,[`onClick`]),m(d,{size:`small`,status:`danger`,onClick:t=>q(e)},{default:i(()=>[...n[21]||=[a(`停用`,-1)]]),_:1},8,[`onClick`])]),_:2},1024)]),_:1})]),_:1},8,[`data`,`loading`])]),_:1}),m(b,{key:`alerts`,title:`待处理告警`},{default:i(()=>[m(y,{data:j.value,pagination:!1},{columns:i(()=>[m(_,{title:`时间`,"data-index":`first_occurred_at`}),m(_,{title:`场馆`},{cell:i(({record:e})=>[a(u(e.venue?.name||`—`),1)]),_:1}),m(_,{title:`设备`},{cell:i(({record:e})=>[a(u(e.camera?.name)+`(`+u(e.camera?.ip)+`)`,1)]),_:1}),m(_,{title:`原因`,"data-index":`reason`}),m(_,{title:`操作`},{cell:i(({record:e})=>[m(d,{size:`small`,onClick:t=>J(e)},{default:i(()=>[...n[22]||=[a(`确认处理`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])]),_:1}),m(b,{key:`settings`,title:`通知设置`},{default:i(()=>[M.value?(t(),o(T,{key:0,model:M.value,layout:`vertical`,style:{"max-width":`680px`}},{default:i(()=>[m(S,{label:`接收邮箱`},{default:i(()=>[m(x,{modelValue:L.value,"onUpdate:modelValue":n[0]||=e=>L.value=e,placeholder:`多个邮箱用逗号分隔`},null,8,[`modelValue`])]),_:1}),m(S,{label:`通知开始时间`},{default:i(()=>[m(C,{modelValue:M.value.notification_start_time,"onUpdate:modelValue":n[1]||=e=>M.value.notification_start_time=e,format:`HH:mm`},null,8,[`modelValue`])]),_:1}),m(S,{label:`通知结束时间`},{default:i(()=>[m(C,{modelValue:M.value.notification_end_time,"onUpdate:modelValue":n[2]||=e=>M.value.notification_end_time=e,format:`HH:mm`},null,8,[`modelValue`])]),_:1}),m(S,{label:`推送超时(秒)`},{default:i(()=>[m(w,{modelValue:M.value.default_push_timeout_seconds,"onUpdate:modelValue":n[3]||=e=>M.value.default_push_timeout_seconds=e,min:60,max:86400},null,8,[`modelValue`])]),_:1}),m(S,null,{default:i(()=>[m(d,{type:`primary`,onClick:Y},{default:i(()=>[...n[23]||=[a(`保存设置`,-1)]]),_:1})]),_:1})]),_:1},8,[`model`])):s(``,!0)]),_:1})]),_:1},8,[`active-key`])]),_:1}),m(Z,{visible:P.value,"onUpdate:visible":n[16]||=e=>P.value=e,title:N.value?`编辑摄像头`:`新增摄像头`,onOk:G},{default:i(()=>[m(T,{model:F.value,layout:`vertical`},{default:i(()=>[m(S,{label:`名称`},{default:i(()=>[m(x,{modelValue:F.value.name,"onUpdate:modelValue":n[5]||=e=>F.value.name=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`所属场馆 ID`},{default:i(()=>[m(w,{modelValue:F.value.venue_id,"onUpdate:modelValue":n[6]||=e=>F.value.venue_id=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`IP/域名`},{default:i(()=>[m(x,{modelValue:F.value.ip,"onUpdate:modelValue":n[7]||=e=>F.value.ip=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`SDK 端口`},{default:i(()=>[m(w,{modelValue:F.value.sdk_port,"onUpdate:modelValue":n[8]||=e=>F.value.sdk_port=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`通道`},{default:i(()=>[m(w,{modelValue:F.value.channel,"onUpdate:modelValue":n[9]||=e=>F.value.channel=e,min:1},null,8,[`modelValue`])]),_:1}),m(S,{label:`设备槽位`},{default:i(()=>[m(w,{modelValue:F.value.device_slot,"onUpdate:modelValue":n[10]||=e=>F.value.device_slot=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`用户名`},{default:i(()=>[m(x,{modelValue:F.value.username,"onUpdate:modelValue":n[11]||=e=>F.value.username=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`密码`},{default:i(()=>[m(O,{modelValue:F.value.password,"onUpdate:modelValue":n[12]||=e=>F.value.password=e,placeholder:`编辑时留空表示不修改`},null,8,[`modelValue`])]),_:1}),m(S,{label:`推送超时(秒)`},{default:i(()=>[m(w,{modelValue:F.value.push_timeout_seconds,"onUpdate:modelValue":n[13]||=e=>F.value.push_timeout_seconds=e,min:60},null,8,[`modelValue`])]),_:1}),m(S,{label:`监测`},{default:i(()=>[m(X,{modelValue:F.value.monitor_enabled,"onUpdate:modelValue":n[14]||=e=>F.value.monitor_enabled=e},null,8,[`modelValue`])]),_:1}),m(S,{label:`发送人工介入邮件`},{default:i(()=>[m(X,{modelValue:F.value.notification_enabled,"onUpdate:modelValue":n[15]||=e=>F.value.notification_enabled=e},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`])],64)}}}),[[`__scopeId`,`data-v-ece80988`]]);export{A as default};