瀏覽代碼

fix🐛: 修复智能巡检,历史告警

gitboyzcf 2 周之前
父節點
當前提交
1d27a13955

+ 1 - 0
package.json

@@ -38,6 +38,7 @@
     "mitt": "^3.0.1",
     "mp4box": "^0.5.2",
     "mpegts.js": "^1.8.0",
+    "mqtt": "^5.14.1",
     "native-file-system-adapter": "^3.0.1",
     "ol": "^10.4.0",
     "omnimatrix-video-player": "file:omnimatrix-video-player",

+ 259 - 6
pnpm-lock.yaml

@@ -86,6 +86,9 @@ importers:
       mpegts.js:
         specifier: ^1.8.0
         version: 1.8.0
+      mqtt:
+        specifier: ^5.14.1
+        version: 5.14.1
       native-file-system-adapter:
         specifier: ^3.0.1
         version: 3.0.1
@@ -1619,6 +1622,9 @@ packages:
   '@types/rbush@4.0.0':
     resolution: {integrity: sha512-+N+2H39P8X+Hy1I5mC6awlTX54k3FhiUmvt7HWzGJZvF+syUAAxP/stwppS8JE84YHqFgRMv6fCy31202CMFxQ==, tarball: https://registry.npmjs.org/@types/rbush/-/rbush-4.0.0.tgz}
 
+  '@types/readable-stream@4.0.22':
+    resolution: {integrity: sha512-/FFhJpfCLAPwAcN3mFycNUa77ddnr8jTgF5VmSNetaemWB2cIlfCA9t0YTM3JAT0wOcv8D4tjPo7pkDhK3EJIg==, tarball: https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.22.tgz}
+
   '@types/resize-observer-browser@0.1.11':
     resolution: {integrity: sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==, tarball: https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz}
 
@@ -1628,6 +1634,9 @@ packages:
   '@types/web-bluetooth@0.0.21':
     resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==, tarball: https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz}
 
+  '@types/ws@8.18.1':
+    resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==, tarball: https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz}
+
   '@unocss/astro@0.64.1':
     resolution: {integrity: sha512-UBB2nDc3aqBmdcgJHOsnAQaQnbdch4f3CKfV+LTv77D4tPizagUCODwPVTK3CA3leQzVbbUV06uHfo5hsv2PUw==, tarball: https://registry.npmjs.org/@unocss/astro/-/astro-0.64.1.tgz}
     peerDependencies:
@@ -1834,6 +1843,10 @@ packages:
   abbrev@1.1.1:
     resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, tarball: https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz}
 
+  abort-controller@3.0.0:
+    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==, tarball: https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz}
+    engines: {node: '>=6.5'}
+
   acorn-globals@7.0.1:
     resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==, tarball: https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz}
 
@@ -1932,6 +1945,9 @@ packages:
   balanced-match@1.0.2:
     resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, tarball: https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz}
 
+  base64-js@1.5.1:
+    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, tarball: https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz}
+
   baseline-browser-mapping@2.8.28:
     resolution: {integrity: sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==, tarball: https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.28.tgz}
     hasBin: true
@@ -1943,6 +1959,9 @@ packages:
     resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, tarball: https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz}
     engines: {node: '>=8'}
 
+  bl@6.1.5:
+    resolution: {integrity: sha512-XylDt2P3JBttAwLpORq/hOEX9eJzP0r6Voa46C/WVvad8D1J0jW5876txB8FnzKtbdnU6X4Y1vOEvC6PllJrDg==, tarball: https://registry.npmjs.org/bl/-/bl-6.1.5.tgz}
+
   boolbase@1.0.0:
     resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, tarball: https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz}
 
@@ -1956,11 +1975,20 @@ packages:
     resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, tarball: https://registry.npmjs.org/braces/-/braces-3.0.3.tgz}
     engines: {node: '>=8'}
 
+  broker-factory@3.1.10:
+    resolution: {integrity: sha512-BzqK5GYFhvVFvO13uzPN0SCiOsOQuhMUbsGvTXDJMA2/N4GvIlFdxEuueE+60Zk841bBU5G3+fl2cqYEo0wgGg==, tarball: https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.10.tgz}
+
   browserslist@4.28.0:
     resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==, tarball: https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz}
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
     hasBin: true
 
+  buffer-from@1.1.2:
+    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, tarball: https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz}
+
+  buffer@6.0.3:
+    resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, tarball: https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz}
+
   bundle-require@5.1.0:
     resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==, tarball: https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz}
     engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -2050,6 +2078,9 @@ packages:
     resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, tarball: https://registry.npmjs.org/commander/-/commander-7.2.0.tgz}
     engines: {node: '>= 10'}
 
+  commist@3.2.0:
+    resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==, tarball: https://registry.npmjs.org/commist/-/commist-3.2.0.tgz}
+
   commitlint@19.8.1:
     resolution: {integrity: sha512-j7jojdmHrVOZ16gnjK2nbQuzdwA9TpxS9iNb9Q9QS3ytgt3JZVIGmsNbCuhmnsJWGspotlQ34yH8n1HvIKImiQ==, tarball: https://registry.npmjs.org/commitlint/-/commitlint-19.8.1.tgz}
     engines: {node: '>=v18'}
@@ -2061,6 +2092,10 @@ packages:
   concat-map@0.0.1:
     resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, tarball: https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz}
 
+  concat-stream@2.0.0:
+    resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==, tarball: https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz}
+    engines: {'0': node >= 6.0}
+
   concaveman@1.2.1:
     resolution: {integrity: sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==, tarball: https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz}
 
@@ -2596,12 +2631,20 @@ packages:
   event-emitter@0.3.5:
     resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==, tarball: https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz}
 
+  event-target-shim@5.0.1:
+    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==, tarball: https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz}
+    engines: {node: '>=6'}
+
   eventemitter3@4.0.7:
     resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz}
 
   eventemitter3@5.0.1:
     resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, tarball: https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz}
 
+  events@3.3.0:
+    resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, tarball: https://registry.npmjs.org/events/-/events-3.3.0.tgz}
+    engines: {node: '>=0.8.x'}
+
   evtd@0.2.4:
     resolution: {integrity: sha512-qaeGN5bx63s/AXgQo8gj6fBkxge+OoLddLniox5qtLAEY5HSnuSlISXVPxnSae1dWblvTh4/HoMIB+mbMsvZzw==, tarball: https://registry.npmjs.org/evtd/-/evtd-0.2.4.tgz}
 
@@ -2635,6 +2678,10 @@ packages:
   fast-levenshtein@2.0.6:
     resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, tarball: https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz}
 
+  fast-unique-numbers@9.0.24:
+    resolution: {integrity: sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==, tarball: https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.24.tgz}
+    engines: {node: '>=18.2.0'}
+
   fast-uri@3.1.0:
     resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, tarball: https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz}
 
@@ -2820,6 +2867,9 @@ packages:
     resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, tarball: https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz}
     engines: {node: '>= 0.4'}
 
+  help-me@5.0.0:
+    resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==, tarball: https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz}
+
   highlight.js@11.11.1:
     resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==, tarball: https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz}
     engines: {node: '>=12.0.0'}
@@ -2849,6 +2899,9 @@ packages:
     resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, tarball: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz}
     engines: {node: '>=0.10.0'}
 
+  ieee754@1.2.1:
+    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, tarball: https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz}
+
   ignore@5.3.2:
     resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, tarball: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz}
     engines: {node: '>= 4'}
@@ -2886,6 +2939,10 @@ packages:
     resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==, tarball: https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz}
     engines: {node: '>=12'}
 
+  ip-address@10.1.0:
+    resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==, tarball: https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz}
+    engines: {node: '>= 12'}
+
   is-arrayish@0.2.1:
     resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, tarball: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz}
 
@@ -2959,6 +3016,9 @@ packages:
     resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==, tarball: https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz}
     engines: {node: '>=14'}
 
+  js-sdsl@4.3.0:
+    resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==, tarball: https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz}
+
   js-tokens@4.0.0:
     resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz}
 
@@ -3170,6 +3230,9 @@ packages:
     resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==, tarball: https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz}
     engines: {node: '>=18'}
 
+  lru-cache@10.4.3:
+    resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz}
+
   lru-cache@5.1.1:
     resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz}
 
@@ -3267,6 +3330,14 @@ packages:
   mpegts.js@1.8.0:
     resolution: {integrity: sha512-ZtujqtmTjWgcDDkoOnLvrOKUTO/MKgLHM432zGDI8oPaJ0S+ebPxg1nEpDpLw6I7KmV/GZgUIrfbWi3qqEircg==, tarball: https://registry.npmjs.org/mpegts.js/-/mpegts.js-1.8.0.tgz}
 
+  mqtt-packet@9.0.2:
+    resolution: {integrity: sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==, tarball: https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.2.tgz}
+
+  mqtt@5.14.1:
+    resolution: {integrity: sha512-NxkPxE70Uq3Ph7goefQa7ggSsVzHrayCD0OyxlJgITN/EbzlZN+JEPmaAZdxP1LsIT5FamDyILoQTF72W7Nnbw==, tarball: https://registry.npmjs.org/mqtt/-/mqtt-5.14.1.tgz}
+    engines: {node: '>=16.0.0'}
+    hasBin: true
+
   mrmime@2.0.1:
     resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, tarball: https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz}
     engines: {node: '>=10'}
@@ -3341,6 +3412,9 @@ packages:
   nth-check@2.1.1:
     resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, tarball: https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz}
 
+  number-allocator@1.0.14:
+    resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==, tarball: https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz}
+
   number-precision@1.6.0:
     resolution: {integrity: sha512-05OLPgbgmnixJw+VvEh18yNPUo3iyp4BEWJcrLu4X9W05KmMifN7Mu5exYvQXqxxeNWhvIF+j3Rij+HmddM/hQ==, tarball: https://registry.npmjs.org/number-precision/-/number-precision-1.6.0.tgz}
 
@@ -3529,6 +3603,13 @@ packages:
     engines: {node: '>=14'}
     hasBin: true
 
+  process-nextick-args@2.0.1:
+    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, tarball: https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz}
+
+  process@0.11.10:
+    resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, tarball: https://registry.npmjs.org/process/-/process-0.11.10.tgz}
+    engines: {node: '>= 0.6.0'}
+
   protocol-buffers-schema@3.6.0:
     resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==, tarball: https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz}
 
@@ -3577,6 +3658,10 @@ packages:
     resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz}
     engines: {node: '>= 6'}
 
+  readable-stream@4.7.0:
+    resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==, tarball: https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz}
+    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+
   readdirp@3.6.0:
     resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, tarball: https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz}
     engines: {node: '>=8.10.0'}
@@ -3718,6 +3803,14 @@ packages:
     resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==, tarball: https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz}
     engines: {node: '>=18'}
 
+  smart-buffer@4.2.0:
+    resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, tarball: https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz}
+    engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+
+  socks@2.8.7:
+    resolution: {integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==, tarball: https://registry.npmjs.org/socks/-/socks-2.8.7.tgz}
+    engines: {node: '>= 10.0.0', npm: '>= 3.0.0'}
+
   sortablejs@1.10.2:
     resolution: {integrity: sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==, tarball: https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz}
 
@@ -3871,6 +3964,9 @@ packages:
   type@2.7.3:
     resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==, tarball: https://registry.npmjs.org/type/-/type-2.7.3.tgz}
 
+  typedarray@0.0.6:
+    resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, tarball: https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz}
+
   typescript@5.9.3:
     resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==, tarball: https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz}
     engines: {node: '>=14.17'}
@@ -4188,6 +4284,18 @@ packages:
     resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, tarball: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz}
     engines: {node: '>=0.10.0'}
 
+  worker-factory@7.0.46:
+    resolution: {integrity: sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==, tarball: https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.46.tgz}
+
+  worker-timers-broker@8.0.11:
+    resolution: {integrity: sha512-uwhxKru8BI9m2tsogxr2fB6POZ8LB2xH+Pu3R0mvQnAZLPgLD6K3IX4LNKPTEgTJ/j5VsuQPB+gLI1NBNKkPlg==, tarball: https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.11.tgz}
+
+  worker-timers-worker@9.0.11:
+    resolution: {integrity: sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==, tarball: https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.11.tgz}
+
+  worker-timers@8.0.25:
+    resolution: {integrity: sha512-X7Z5dmM6PlrEnaadtFQOyXHGD/IysPA3HZzaC2koqsU1VI+RvyGmjiiLiUBQixK8PH5R7ilkOzZupWskNRaXmA==, tarball: https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.25.tgz}
+
   wrap-ansi@7.0.0:
     resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz}
     engines: {node: '>=10'}
@@ -6222,12 +6330,20 @@ snapshots:
 
   '@types/rbush@4.0.0': {}
 
+  '@types/readable-stream@4.0.22':
+    dependencies:
+      '@types/node': 24.9.1
+
   '@types/resize-observer-browser@0.1.11': {}
 
   '@types/web-bluetooth@0.0.20': {}
 
   '@types/web-bluetooth@0.0.21': {}
 
+  '@types/ws@8.18.1':
+    dependencies:
+      '@types/node': 24.9.1
+
   '@unocss/astro@0.64.1(rollup@4.52.5)(vite@5.4.21(@types/node@24.9.1)(lightningcss@1.30.2)(sass@1.32.13))(vue@3.5.22(typescript@5.9.3))':
     dependencies:
       '@unocss/core': 0.64.1
@@ -6558,6 +6674,10 @@ snapshots:
   abbrev@1.1.1:
     optional: true
 
+  abort-controller@3.0.0:
+    dependencies:
+      event-target-shim: 5.0.1
+
   acorn-globals@7.0.1:
     dependencies:
       acorn: 8.15.0
@@ -6663,12 +6783,21 @@ snapshots:
 
   balanced-match@1.0.2: {}
 
+  base64-js@1.5.1: {}
+
   baseline-browser-mapping@2.8.28: {}
 
   bignumber.js@9.3.1: {}
 
   binary-extensions@2.3.0: {}
 
+  bl@6.1.5:
+    dependencies:
+      '@types/readable-stream': 4.0.22
+      buffer: 6.0.3
+      inherits: 2.0.4
+      readable-stream: 4.7.0
+
   boolbase@1.0.0: {}
 
   brace-expansion@1.1.12:
@@ -6684,6 +6813,13 @@ snapshots:
     dependencies:
       fill-range: 7.1.1
 
+  broker-factory@3.1.10:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      fast-unique-numbers: 9.0.24
+      tslib: 2.8.1
+      worker-factory: 7.0.46
+
   browserslist@4.28.0:
     dependencies:
       baseline-browser-mapping: 2.8.28
@@ -6692,6 +6828,13 @@ snapshots:
       node-releases: 2.0.27
       update-browserslist-db: 1.1.4(browserslist@4.28.0)
 
+  buffer-from@1.1.2: {}
+
+  buffer@6.0.3:
+    dependencies:
+      base64-js: 1.5.1
+      ieee754: 1.2.1
+
   bundle-require@5.1.0(esbuild@0.23.1):
     dependencies:
       esbuild: 0.23.1
@@ -6780,6 +6923,8 @@ snapshots:
 
   commander@7.2.0: {}
 
+  commist@3.2.0: {}
+
   commitlint@19.8.1(@types/node@24.9.1)(typescript@5.9.3):
     dependencies:
       '@commitlint/cli': 19.8.1(@types/node@24.9.1)(typescript@5.9.3)
@@ -6795,6 +6940,13 @@ snapshots:
 
   concat-map@0.0.1: {}
 
+  concat-stream@2.0.0:
+    dependencies:
+      buffer-from: 1.1.2
+      inherits: 2.0.4
+      readable-stream: 3.6.2
+      typedarray: 0.0.6
+
   concaveman@1.2.1:
     dependencies:
       point-in-polygon: 1.1.0
@@ -7445,10 +7597,14 @@ snapshots:
       d: 1.0.2
       es5-ext: 0.10.64
 
+  event-target-shim@5.0.1: {}
+
   eventemitter3@4.0.7: {}
 
   eventemitter3@5.0.1: {}
 
+  events@3.3.0: {}
+
   evtd@0.2.4: {}
 
   execa@8.0.1:
@@ -7495,6 +7651,11 @@ snapshots:
 
   fast-levenshtein@2.0.6: {}
 
+  fast-unique-numbers@9.0.24:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      tslib: 2.8.1
+
   fast-uri@3.1.0: {}
 
   fastq@1.19.1:
@@ -7692,6 +7853,8 @@ snapshots:
     dependencies:
       function-bind: 1.1.2
 
+  help-me@5.0.0: {}
+
   highlight.js@11.11.1: {}
 
   html-encoding-sniffer@3.0.0:
@@ -7724,6 +7887,8 @@ snapshots:
     dependencies:
       safer-buffer: 2.1.2
 
+  ieee754@1.2.1: {}
+
   ignore@5.3.2: {}
 
   import-fresh@3.3.1:
@@ -7760,6 +7925,8 @@ snapshots:
 
   internmap@2.0.3: {}
 
+  ip-address@10.1.0: {}
+
   is-arrayish@0.2.1: {}
 
   is-binary-path@2.1.0:
@@ -7807,6 +7974,8 @@ snapshots:
 
   js-cookie@3.0.5: {}
 
+  js-sdsl@4.3.0: {}
+
   js-tokens@4.0.0: {}
 
   js-tokens@9.0.1: {}
@@ -8012,6 +8181,8 @@ snapshots:
       strip-ansi: 7.1.2
       wrap-ansi: 9.0.2
 
+  lru-cache@10.4.3: {}
+
   lru-cache@5.1.1:
     dependencies:
       yallist: 3.1.1
@@ -8102,6 +8273,37 @@ snapshots:
       es6-promise: 4.2.8
       webworkify-webpack: https://codeload.github.com/xqq/webworkify-webpack/tar.gz/24d1e719b4a6cac37a518b2bb10fe124527ef4ef
 
+  mqtt-packet@9.0.2:
+    dependencies:
+      bl: 6.1.5
+      debug: 4.4.3
+      process-nextick-args: 2.0.1
+    transitivePeerDependencies:
+      - supports-color
+
+  mqtt@5.14.1:
+    dependencies:
+      '@types/readable-stream': 4.0.22
+      '@types/ws': 8.18.1
+      commist: 3.2.0
+      concat-stream: 2.0.0
+      debug: 4.4.3
+      help-me: 5.0.0
+      lru-cache: 10.4.3
+      minimist: 1.2.8
+      mqtt-packet: 9.0.2
+      number-allocator: 1.0.14
+      readable-stream: 4.7.0
+      rfdc: 1.4.1
+      socks: 2.8.7
+      split2: 4.2.0
+      worker-timers: 8.0.25
+      ws: 8.18.3
+    transitivePeerDependencies:
+      - bufferutil
+      - supports-color
+      - utf-8-validate
+
   mrmime@2.0.1: {}
 
   ms@2.1.3: {}
@@ -8179,6 +8381,13 @@ snapshots:
     dependencies:
       boolbase: 1.0.0
 
+  number-allocator@1.0.14:
+    dependencies:
+      debug: 4.4.3
+      js-sdsl: 4.3.0
+    transitivePeerDependencies:
+      - supports-color
+
   number-precision@1.6.0: {}
 
   nwsapi@2.2.22:
@@ -8369,6 +8578,10 @@ snapshots:
 
   prettier@3.6.2: {}
 
+  process-nextick-args@2.0.1: {}
+
+  process@0.11.10: {}
+
   protocol-buffers-schema@3.6.0: {}
 
   proxy-from-env@1.1.0: {}
@@ -8412,7 +8625,14 @@ snapshots:
       inherits: 2.0.4
       string_decoder: 1.3.0
       util-deprecate: 1.0.2
-    optional: true
+
+  readable-stream@4.7.0:
+    dependencies:
+      abort-controller: 3.0.0
+      buffer: 6.0.3
+      events: 3.3.0
+      process: 0.11.10
+      string_decoder: 1.3.0
 
   readdirp@3.6.0:
     dependencies:
@@ -8491,8 +8711,7 @@ snapshots:
 
   rw@1.3.3: {}
 
-  safe-buffer@5.2.1:
-    optional: true
+  safe-buffer@5.2.1: {}
 
   safer-buffer@2.1.2: {}
 
@@ -8557,6 +8776,13 @@ snapshots:
       ansi-styles: 6.2.3
       is-fullwidth-code-point: 5.1.0
 
+  smart-buffer@4.2.0: {}
+
+  socks@2.8.7:
+    dependencies:
+      ip-address: 10.1.0
+      smart-buffer: 4.2.0
+
   sortablejs@1.10.2: {}
 
   source-map-js@1.2.1: {}
@@ -8585,7 +8811,6 @@ snapshots:
   string_decoder@1.3.0:
     dependencies:
       safe-buffer: 5.2.1
-    optional: true
 
   strip-ansi@6.0.1:
     dependencies:
@@ -8700,6 +8925,8 @@ snapshots:
 
   type@2.7.3: {}
 
+  typedarray@0.0.6: {}
+
   typescript@5.9.3: {}
 
   ufo@1.6.1: {}
@@ -9038,6 +9265,33 @@ snapshots:
 
   word-wrap@1.2.5: {}
 
+  worker-factory@7.0.46:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      fast-unique-numbers: 9.0.24
+      tslib: 2.8.1
+
+  worker-timers-broker@8.0.11:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      broker-factory: 3.1.10
+      fast-unique-numbers: 9.0.24
+      tslib: 2.8.1
+      worker-timers-worker: 9.0.11
+
+  worker-timers-worker@9.0.11:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      tslib: 2.8.1
+      worker-factory: 7.0.46
+
+  worker-timers@8.0.25:
+    dependencies:
+      '@babel/runtime': 7.28.4
+      tslib: 2.8.1
+      worker-timers-broker: 8.0.11
+      worker-timers-worker: 9.0.11
+
   wrap-ansi@7.0.0:
     dependencies:
       ansi-styles: 4.3.0
@@ -9052,8 +9306,7 @@ snapshots:
 
   wrappy@1.0.2: {}
 
-  ws@8.18.3:
-    optional: true
+  ws@8.18.3: {}
 
   xgplayer-subtitles@3.0.23(core-js@3.46.0):
     dependencies:

+ 14 - 6
src/assets/scss/reset.scss

@@ -1,9 +1,13 @@
-:root {
-  --p-content-background: transparent !important;
-  --p-datatable-header-cell-background: rgba(34, 98, 172) !important;
-  --p-datatable-row-color: #fff !important;
-  --p-datatable-header-cell-color: #fff !important;
-  --p-paginator-nav-button-selected-background: var(--p-blue-500) !important;
+.n-modal .n-data-table,
+.n-drawer .n-data-table {
+  --n-merged-th-color: var(--n-th-color);
+  --n-merged-td-color: var(--n-td-color);
+  --n-merged-border-color: var(--n-border-color) #007bff;
+  --n-merged-th-color-hover: var(--n-th-color-hover);
+  --n-merged-th-color-sorting: var(--n-th-color-sorting);
+  --n-merged-td-color-hover: var(--n-td-color-hover);
+  --n-merged-td-color-sorting: var(--n-td-color-sorting);
+  --n-merged-td-color-striped: var(--n-td-color-striped);
 }
 
 .p-dialog {
@@ -27,3 +31,7 @@
   left: 468px !important;
   top: 46px !important;
 }
+
+.n-modal-container {
+  z-index: 5000!important;
+}

+ 90 - 25
src/stores/modules/system.js

@@ -6,6 +6,8 @@ import { h } from 'vue'
 import { useOutsideHomeStore } from './home'
 import AlarmVideo from '../../views/VideoBox/components/AlarmVideo.vue'
 import { getAutofitScale } from '@/utils'
+import { Events } from '@/utils/enum'
+import mqtt from 'mqtt'
 
 const {
   API_PANORAMA_POST,
@@ -101,8 +103,8 @@ export const useSystemStore = defineStore('systemStore', {
       const useHomeStore = useOutsideHomeStore()
       const notification = useNotification()
       const alarmModel = useModal()
+      let flag = true
 
-      const eventTypes = { 1: '车牌', 2: '安全帽', 3: '定员' }
       // setInterval(() => {
       //   const data = {
       //     AlarmTime: 1709274691,
@@ -137,32 +139,35 @@ export const useSystemStore = defineStore('systemStore', {
           notification.destroyAll()
         }
       })
-      let websocket
+      // let websocket
       let that = this
       ;(() => {
-        websocket = new WebSocket(
-          `ws://${this.ipF.split('/api')[0]}/api/mr/api/PublicGroup/WebSocketAlarm`
-        )
-        websocket.onopen = function () {
-          console.log('Ai/Ai-Message 连接已经建立')
-        }
-        websocket.onmessage = function (e) {
-          const data = JSON.parse(e.data)
-          const d = { ...data, eventTypes }
+        let client = mqtt.connect('/mqtt', {
+          host: this.ipF.split('/api')[0].split(':')[0],
+          defaultProtocol: 'ws',
+          protocol: 'ws',
+          port: 8083
+        })
+        client.on('connect', () => {
+          console.log('mqtt连接成功')
+        })
+
+        client.on('message', (topic, message) => {
+          // message is Buffer
+          const data = JSON.parse(message.toString())
+          const d = { ...data, sn: data.device_id, eventTypes: Events[data.type] }
           that.alarmList.unshift(d)
 
           if (useHomeStore.temp != 'video') {
             notification.warning({
-              title: eventTypes[data.EventId] ? eventTypes[data.EventId] + '警告' : '其他警告',
+              title: Events[data.type],
               content: () =>
                 h('div', { class: 'flex justify-between' }, [
                   h('div', [
                     h('span', '时间:'),
                     h(
                       'span',
-                      dayjs(parseInt(`${data.HaveTime}`.padEnd(13, '0'))).format(
-                        'YYYY-MM-DD HH:mm:ss'
-                      )
+                      dayjs(parseInt(`${data.time}`.padEnd(13, '0'))).format('YYYY-MM-DD HH:mm:ss')
                     )
                   ]),
                   h(
@@ -171,9 +176,7 @@ export const useSystemStore = defineStore('systemStore', {
                       text: true,
                       onClick: () => {
                         alarmModel.create({
-                          title: d.eventTypes[d.EventId]
-                            ? d.eventTypes[d.EventId] + '警告视频'
-                            : '其他警告视频',
+                          title: d.eventTypes,
                           preset: 'card',
                           maskClosable: false,
                           style: {
@@ -200,13 +203,75 @@ export const useSystemStore = defineStore('systemStore', {
           if (that.alarmList.length >= 50) {
             that.alarmList.splice(30, 20)
           }
-        }
-        websocket.onerror = function () {
-          console.log('Ai/Alarm 发生错误')
-        }
-        websocket.onclose = function () {
-          console.log('Ai/Alarm 连接断开')
-        }
+        })
+        client.subscribe('RecordEvent')
+        // websocket = new WebSocket(
+        //   `ws://${this.ipF.split('/api')[0]}/api/mr/api/PublicGroup/WebSocketAlarm`
+        // )
+        // websocket.onopen = function () {
+        //   console.log('Ai/Ai-Message 连接已经建x立')
+        // }
+        // websocket.onmessage = function (e) {
+        //   const data = JSON.parse(e.data)
+        //   const d = { ...data, eventTypes }
+        //   that.alarmList.unshift(d)
+
+        //   if (useHomeStore.temp != 'video') {
+        //     notification.warning({
+        //       title: eventTypes[data.EventId] ? eventTypes[data.EventId] + '警告' : '其他警告',
+        //       content: () =>
+        //         h('div', { class: 'flex justify-between' }, [
+        //           h('div', [
+        //             h('span', '时间:'),
+        //             h(
+        //               'span',
+        //               dayjs(parseInt(`${data.HaveTime}`.padEnd(13, '0'))).format(
+        //                 'YYYY-MM-DD HH:mm:ss'
+        //               )
+        //             )
+        //           ]),
+        //           h(
+        //             NButton,
+        //             {
+        //               text: true,
+        //               onClick: () => {
+        //                 alarmModel.create({
+        //                   title: d.eventTypes[d.EventId]
+        //                     ? d.eventTypes[d.EventId] + '警告视频'
+        //                     : '其他警告视频',
+        //                   preset: 'card',
+        //                   maskClosable: false,
+        //                   style: {
+        //                     width: '50%',
+        //                     marginTop: '10%'
+        //                   },
+        //                   content: () =>
+        //                     h(AlarmVideo, {
+        //                       alarm: d
+        //                     })
+        //                 })
+        //               }
+        //             },
+        //             () =>
+        //               // h('div', {
+        //               //   class: 'i-fluent-eye-48-regular',
+        //               //   style: { width: '28px', height: '28px', padding: '5px' }
+        //               // })
+        //               '查看'
+        //           )
+        //         ])
+        //     })
+        //   }
+        //   if (that.alarmList.length >= 50) {
+        //     that.alarmList.splice(30, 20)
+        //   }
+        // }
+        // websocket.onerror = function () {
+        //   console.log('Ai/Alarm 发生错误')
+        // }
+        // websocket.onclose = function () {
+        //   console.log('Ai/Alarm 连接断开')
+        // }
       })()
     },
     async getStream(data = {}) {

+ 27 - 0
src/utils/enum.js

@@ -0,0 +1,27 @@
+const Severity = {
+  1: '正常',
+  2: '一般',
+  3: '较严重',
+  4: '严重',
+  5: '特别严重'
+}
+
+const Events = {
+  1: '门禁事件',
+  2: '人脸识别',
+  3: '重点关注人员',
+  128: '违规穿戴',
+  4049: '超员检测算法',
+  40410: '人员要求检测算法',
+  40411: '开门检测算法',
+  40412: '脱岗检测算法',
+  40413: '睡岗检测算法',
+  40414: '吸烟检测算法',
+  40415: '安全穿戴检测算法',
+  40416: '仪表指针检测算法',
+  40417: '接打电话检测算法',
+  40418: '跑冒滴漏检测算法',
+  40420: '拍照检测算法'
+}
+
+export { Severity, Events }

+ 4 - 7
src/views/VideoBox/components/topTools.vue

@@ -29,10 +29,8 @@
         >
           <template #header>
             <p class="text-14px">
-              {{ tfmt(item.HaveTime) }}
-              {{
-                item.eventTypes[item.EventId] ? item.eventTypes[item.EventId] + '警告' : '其他警告'
-              }}
+              {{ tfmt(item.time) }}
+              {{ item.eventTypes }}
             </p>
           </template>
         </n-alert>
@@ -46,6 +44,7 @@
   import { useModal, NSpin, NBadge, NPopover, NSpace, NAlert, NEmpty } from 'naive-ui'
   import { useOutsideHomeStore } from '@/stores/modules/home'
   import { useOutsideSystemStore } from '@/stores/modules/system.js'
+  import { Events } from '@/utils/enum'
   import AlarmVideo from './AlarmVideo.vue'
 
   const alarmModel = useModal()
@@ -63,9 +62,7 @@
 
   const openAlarmVideo = (item) => {
     alarmModel.create({
-      title: item.eventTypes[item.EventId]
-        ? item.eventTypes[item.EventId] + '警告视频'
-        : '其他警告视频',
+      title: item.eventTypes,
       preset: 'card',
       maskClosable: false,
       style: {

+ 18 - 21
src/views/home/leftbox/historyAlarm.vue

@@ -29,6 +29,8 @@
 
 <script setup>
   import { NButton, NModal, NDataTable, NPagination } from 'naive-ui'
+  import { Events } from '@/utils/enum'
+  import dayjs from 'dayjs'
 
   const { API_ALARM_HISTORY_GET } = useRequest()
   const showModal = ref(false)
@@ -36,35 +38,30 @@
   function createColumns({ handleSubmit }) {
     return [
       {
-        title: '设备序列号',
-        key: 'sn'
-      },
-      {
-        title: '设备名称',
-        key: 'name'
-      },
-      {
-        title: '设备状态',
-        key: 'status',
+        title: '事件名称',
+        key: 'eventTypeId',
         render(row) {
-          return h(
-            'span',
-            { class: row.status === 1 ? 'color-green' : 'color-red' },
-            row.status === 1 ? '在线' : '离线'
-          )
+          return h('span', Events[row.eventTypeId])
         }
       },
       {
-        title: '设备版本',
-        key: 'version'
+        title: '事件时间',
+        key: 'haveTime',
+        render(row) {
+          return dayjs(parseInt(`${row.haveTime}`.padEnd(13, '0'))).format('YYYY-MM-DD HH:mm:ss')
+        }
       },
       {
-        title: '设备IP',
-        key: 'ip_address'
+        title: '核验结果',
+        key: 'handled',
+        render(row) {
+          const t = { 0: '未处理', 1: '已处理', 2: '误报' }
+          return h('span', t[row.handled])
+        }
       },
       {
-        title: '设备端口',
-        key: 'port'
+        title: '可信度',
+        key: 'score'
       },
       {
         title: '操作',

+ 0 - 1
src/views/home/middleBottomBox/components/tour.vue

@@ -265,7 +265,6 @@
       }
       playerObj = null
     }
-    clearCom()
   }
   // 关闭线程
   const closeWorker = (index) => {