This commit is contained in:
chengdandan 2023-04-26 15:01:04 +08:00
commit 9679fd1a7e
25 changed files with 37744 additions and 15439 deletions

546
package-lock.json generated
View File

@ -866,7 +866,6 @@
"version": "7.20.6", "version": "7.20.6",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz", "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.20.6.tgz",
"integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==", "integrity": "sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==",
"dev": true,
"requires": { "requires": {
"regenerator-runtime": "^0.13.11" "regenerator-runtime": "^0.13.11"
} }
@ -1149,6 +1148,63 @@
"integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==",
"dev": true "dev": true
}, },
"@videojs/http-streaming": {
"version": "2.16.2",
"resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-2.16.2.tgz",
"integrity": "sha512-etPTUdCFu7gUWc+1XcbiPr+lrhOcBu3rV5OL1M+3PDW89zskScAkkcdqYzP4pFodBPye/ydamQoTDScOnElw5A==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "3.0.5",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "^0.22.1",
"mux.js": "6.0.1",
"video.js": "^6 || ^7"
},
"dependencies": {
"video.js": {
"version": "7.21.4",
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-7.21.4.tgz",
"integrity": "sha512-R5e57M/5uqxQMQpFpybNbd8GtiRwFJPqkHjrhv0QTJ2tqnesbjETbck5kU5dhFr1FevsJRFhjBG4hAnvRGnXbw==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.16.2",
"@videojs/vhs-utils": "^3.0.4",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.3",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.8.0",
"mpd-parser": "0.22.1",
"mux.js": "6.0.1",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.4"
}
}
}
},
"@videojs/vhs-utils": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
},
"@videojs/xhr": {
"version": "2.6.0",
"resolved": "https://registry.npmmirror.com/@videojs/xhr/-/xhr-2.6.0.tgz",
"integrity": "sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==",
"requires": {
"@babel/runtime": "^7.5.5",
"global": "~4.4.0",
"is-function": "^1.0.1"
}
},
"@vue/babel-helper-vue-jsx-merge-props": { "@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz", "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz",
@ -3000,6 +3056,11 @@
} }
} }
}, },
"@xmldom/xmldom": {
"version": "0.8.7",
"resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.7.tgz",
"integrity": "sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg=="
},
"@xtuc/ieee754": { "@xtuc/ieee754": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@ -3048,6 +3109,17 @@
"integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==", "integrity": "sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==",
"dev": true "dev": true
}, },
"aes-decrypter": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-3.1.3.tgz",
"integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
}
},
"ajv": { "ajv": {
"version": "6.12.6", "version": "6.12.6",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
@ -5559,6 +5631,11 @@
"entities": "^2.0.0" "entities": "^2.0.0"
} }
}, },
"dom-walk": {
"version": "0.1.2",
"resolved": "https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz",
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
},
"domain-browser": { "domain-browser": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz", "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz",
@ -5662,6 +5739,11 @@
} }
} }
}, },
"easy-player": {
"version": "2.2.7",
"resolved": "https://registry.npmmirror.com/easy-player/-/easy-player-2.2.7.tgz",
"integrity": "sha512-6FoTLoEzXPVogaFiSK/AqecekVtgo9dzT/5uUbaIyhUbwL2zxiVxU+D+ZSkpMKbjzbnGr0kFrxdd2S+m0H2bzQ=="
},
"easy-stack": { "easy-stack": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz", "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
@ -5904,6 +5986,11 @@
"is-symbol": "^1.0.2" "is-symbol": "^1.0.2"
} }
}, },
"es5-shim": {
"version": "4.6.7",
"resolved": "https://registry.npmmirror.com/es5-shim/-/es5-shim-4.6.7.tgz",
"integrity": "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ=="
},
"escalade": { "escalade": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz", "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
@ -6800,6 +6887,15 @@
} }
} }
}, },
"global": {
"version": "4.4.0",
"resolved": "https://registry.npmmirror.com/global/-/global-4.4.0.tgz",
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
},
"globals": { "globals": {
"version": "11.12.0", "version": "11.12.0",
"resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz", "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
@ -7493,6 +7589,11 @@
"integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
"dev": true "dev": true
}, },
"individual": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz",
"integrity": "sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g=="
},
"infer-owner": { "infer-owner": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz", "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz",
@ -7721,6 +7822,11 @@
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true "dev": true
}, },
"is-function": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/is-function/-/is-function-1.0.2.tgz",
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
},
"is-glob": { "is-glob": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
@ -8042,6 +8148,11 @@
"verror": "1.10.0" "verror": "1.10.0"
} }
}, },
"keycode": {
"version": "2.2.1",
"resolved": "https://registry.npmmirror.com/keycode/-/keycode-2.2.1.tgz",
"integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg=="
},
"killable": { "killable": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz", "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz",
@ -8288,6 +8399,16 @@
"yallist": "^4.0.0" "yallist": "^4.0.0"
} }
}, },
"m3u8-parser": {
"version": "4.8.0",
"resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-4.8.0.tgz",
"integrity": "sha512-UqA2a/Pw3liR6Df3gwxrqghCP17OpPlQj6RBPLYygf/ZSQ4MoSgvdvhvt35qV+3NaaA0FSZx93Ix+2brT1U7cA==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0"
}
},
"make-dir": { "make-dir": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz", "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
@ -8498,6 +8619,14 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true "dev": true
}, },
"min-document": {
"version": "2.19.0",
"resolved": "https://registry.npmmirror.com/min-document/-/min-document-2.19.0.tgz",
"integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
"requires": {
"dom-walk": "^0.1.0"
}
},
"mini-css-extract-plugin": { "mini-css-extract-plugin": {
"version": "2.7.2", "version": "2.7.2",
"resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz", "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz",
@ -8649,6 +8778,17 @@
} }
} }
}, },
"mpd-parser": {
"version": "0.22.1",
"resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-0.22.1.tgz",
"integrity": "sha512-fwBebvpyPUU8bOzvhX0VQZgSohncbgYwUyJJoTSNpmy7ccD2ryiCvM7oRkn/xQH5cv73/xU7rJSNCLjdGFor0Q==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"@xmldom/xmldom": "^0.8.3",
"global": "^4.4.0"
}
},
"mqtt": { "mqtt": {
"version": "4.3.7", "version": "4.3.7",
"resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz", "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz",
@ -8731,6 +8871,15 @@
"resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
"integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ=="
}, },
"mux.js": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-6.0.1.tgz",
"integrity": "sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==",
"requires": {
"@babel/runtime": "^7.11.2",
"global": "^4.4.0"
}
},
"mz": { "mz": {
"version": "2.7.0", "version": "2.7.0",
"resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
@ -9393,6 +9542,11 @@
} }
} }
}, },
"parse-headers": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz",
"integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
},
"parse-json": { "parse-json": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz", "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
@ -9558,6 +9712,14 @@
"pinkie": "^2.0.0" "pinkie": "^2.0.0"
} }
}, },
"pkcs7": {
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz",
"integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==",
"requires": {
"@babel/runtime": "^7.5.5"
}
},
"pkg-dir": { "pkg-dir": {
"version": "4.2.0", "version": "4.2.0",
"resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz", "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
@ -10841,6 +11003,11 @@
"renderkid": "^2.0.4" "renderkid": "^2.0.4"
} }
}, },
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
},
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@ -11298,8 +11465,7 @@
"regenerator-runtime": { "regenerator-runtime": {
"version": "0.13.11", "version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
"dev": true
}, },
"regenerator-transform": { "regenerator-transform": {
"version": "0.15.1", "version": "0.15.1",
@ -11626,11 +11792,27 @@
"aproba": "^1.1.1" "aproba": "^1.1.1"
} }
}, },
"rust-result": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/rust-result/-/rust-result-1.0.0.tgz",
"integrity": "sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==",
"requires": {
"individual": "^2.0.0"
}
},
"safe-buffer": { "safe-buffer": {
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}, },
"safe-json-parse": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
"integrity": "sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==",
"requires": {
"rust-result": "^1.0.0"
}
},
"safe-regex": { "safe-regex": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
@ -12957,6 +13139,11 @@
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}, },
"tsml": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/tsml/-/tsml-1.0.1.tgz",
"integrity": "sha512-3KmepnH9SUsoOVtg013CRrL7c+AK7ECaquAsJdvu4288EDJuraqBlP4PDXT/rLEJ9YDn4jqLAzRJsnFPx+V6lg=="
},
"tty-browserify": { "tty-browserify": {
"version": "0.0.0", "version": "0.0.0",
"resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz", "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz",
@ -13376,6 +13563,11 @@
"requires-port": "^1.0.0" "requires-port": "^1.0.0"
} }
}, },
"url-toolkit": {
"version": "2.2.5",
"resolved": "https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz",
"integrity": "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg=="
},
"use": { "use": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz", "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
@ -13465,6 +13657,322 @@
"extsprintf": "^1.2.0" "extsprintf": "^1.2.0"
} }
}, },
"video.js": {
"version": "8.0.4",
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-8.0.4.tgz",
"integrity": "sha512-fvvWauPanrKDps1HQGGL+9CIAK8G0YVwlNme0hvY0k3moXQryaRcJSLHIlPKV2j9ZFTHl32VbN43jL3TaUllfg==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "3.0.0",
"@videojs/vhs-utils": "^4.0.0",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "^4.0.1",
"global": "4.4.0",
"keycode": "2.2.0",
"m3u8-parser": "^6.0.0",
"mpd-parser": "^1.0.1",
"mux.js": "^6.2.0",
"safe-json-parse": "4.0.0",
"videojs-contrib-quality-levels": "3.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "0.15.4"
},
"dependencies": {
"@videojs/http-streaming": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.0.0.tgz",
"integrity": "sha512-AdKmY/W2dyeJP0uALgMRmhLa4pbHMvE4OMlg6yQvufnqsz6jDFo1DYnZRv2ENDYrmVdnPH58Ehgu59053+OIhQ==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "4.0.0",
"aes-decrypter": "4.0.1",
"global": "^4.4.0",
"m3u8-parser": "^6.0.0",
"mpd-parser": "^1.0.1",
"mux.js": "6.2.0",
"video.js": "^7 || ^8"
},
"dependencies": {
"mux.js": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-6.2.0.tgz",
"integrity": "sha512-SKuxIcbmK/aJoz78aQNuoXY8R/uEPm1gQMqWTXL6DNl7oF8UPjdt/AunXGkPQpBouGWKDgL/TzSl2VV5NuboRg==",
"requires": {
"@babel/runtime": "^7.11.2",
"global": "^4.4.0"
}
}
}
},
"@videojs/vhs-utils": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz",
"integrity": "sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg==",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
},
"aes-decrypter": {
"version": "4.0.1",
"resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-4.0.1.tgz",
"integrity": "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
},
"dependencies": {
"@videojs/vhs-utils": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
}
}
},
"keycode": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/keycode/-/keycode-2.2.0.tgz",
"integrity": "sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A=="
},
"m3u8-parser": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-6.0.0.tgz",
"integrity": "sha512-s3JfDtqhxTilZQf+P1m9dZc4ohL4O/aylP1VV6g9lhKuQNfAcVUzq7d2wgJ9nZR4ibjuXaP87QzGCV6vB0kV6g==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"global": "^4.4.0"
},
"dependencies": {
"@videojs/vhs-utils": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
}
}
},
"mpd-parser": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/mpd-parser/-/mpd-parser-1.1.1.tgz",
"integrity": "sha512-uZ/db5wQdlQn1L+OD49YXBhPI9UGeK1SeQE4D5EoaJIhf0WM9X3HDj8d+9PjoG06CgCvGZw3YW/wsHku+CH3yA==",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.5",
"@xmldom/xmldom": "^0.8.3",
"global": "^4.4.0"
},
"dependencies": {
"@videojs/vhs-utils": {
"version": "3.0.5",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
}
}
},
"mux.js": {
"version": "6.3.0",
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-6.3.0.tgz",
"integrity": "sha512-/QTkbSAP2+w1nxV+qTcumSDN5PA98P0tjrADijIzQHe85oBK3Akhy9AHlH0ne/GombLMz1rLyvVsmrgRxoPDrQ==",
"requires": {
"@babel/runtime": "^7.11.2",
"global": "^4.4.0"
}
}
}
},
"videojs-contrib-hls": {
"version": "5.15.0",
"resolved": "https://registry.npmmirror.com/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz",
"integrity": "sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw==",
"requires": {
"aes-decrypter": "1.0.3",
"global": "^4.3.0",
"m3u8-parser": "2.1.0",
"mux.js": "4.3.2",
"url-toolkit": "^2.1.3",
"video.js": "^5.19.1 || ^6.2.0",
"videojs-contrib-media-sources": "4.7.2",
"webwackify": "0.1.6"
},
"dependencies": {
"aes-decrypter": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/aes-decrypter/-/aes-decrypter-1.0.3.tgz",
"integrity": "sha512-rsx8pfx7wJsn+ziYbpJ8XA5c93hKAtBCrfydxJqJCMT+qfjipd/B5wC2xHtBcoxyvlqJcpeAo3K55t0lXOn9yQ==",
"requires": {
"pkcs7": "^0.2.3"
}
},
"m3u8-parser": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-2.1.0.tgz",
"integrity": "sha512-WbEpQ2FUaNGbJ0YanSeyj9D9ruu4FUvz+ZvebIzI2bSME+PUwcPXO1kKXZkjcPUAFruDikoOI5fWQNIA6JCCOQ=="
},
"mux.js": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-4.3.2.tgz",
"integrity": "sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ=="
},
"pkcs7": {
"version": "0.2.3",
"resolved": "https://registry.npmmirror.com/pkcs7/-/pkcs7-0.2.3.tgz",
"integrity": "sha512-kJRwmADEQUg+qJyRgWLtpEL9q9cFjZschejTEK3GRjKvnsU9G5WWoe/wKqRgbBoqWdVSeTUKP6vIA3Y72M3rWA=="
},
"process": {
"version": "0.5.2",
"resolved": "https://registry.npmmirror.com/process/-/process-0.5.2.tgz",
"integrity": "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA=="
},
"video.js": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-6.13.0.tgz",
"integrity": "sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg==",
"requires": {
"babel-runtime": "^6.9.2",
"global": "4.3.2",
"safe-json-parse": "4.0.0",
"tsml": "1.0.1",
"videojs-font": "2.1.0",
"videojs-ie8": "1.1.2",
"videojs-vtt.js": "0.12.6",
"xhr": "2.4.0"
},
"dependencies": {
"global": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/global/-/global-4.3.2.tgz",
"integrity": "sha512-/4AybdwIDU4HkCUbJkZdWpe4P6vuw/CUtu+0I1YlLIPe7OlUO7KNJ+q/rO70CW2/NW6Jc6I62++Hzsf5Alu6rQ==",
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
}
}
}
},
"videojs-font": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-2.1.0.tgz",
"integrity": "sha512-zFqWpLrXf1q8NtYx5qtZhMC6SLUFScDmR6j+UGPogobxR21lvXShhnzcNNMdOxJUuFLiToJ/BPpFUQwX4xhpvA=="
},
"videojs-vtt.js": {
"version": "0.12.6",
"resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz",
"integrity": "sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ==",
"requires": {
"global": "^4.3.1"
}
}
}
},
"videojs-contrib-media-sources": {
"version": "4.7.2",
"resolved": "https://registry.npmmirror.com/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz",
"integrity": "sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ==",
"requires": {
"global": "^4.3.0",
"mux.js": "4.3.2",
"video.js": "^5.17.0 || ^6.2.0",
"webwackify": "0.1.6"
},
"dependencies": {
"mux.js": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/mux.js/-/mux.js-4.3.2.tgz",
"integrity": "sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ=="
},
"process": {
"version": "0.5.2",
"resolved": "https://registry.npmmirror.com/process/-/process-0.5.2.tgz",
"integrity": "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA=="
},
"video.js": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/video.js/-/video.js-6.13.0.tgz",
"integrity": "sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg==",
"requires": {
"babel-runtime": "^6.9.2",
"global": "4.3.2",
"safe-json-parse": "4.0.0",
"tsml": "1.0.1",
"videojs-font": "2.1.0",
"videojs-ie8": "1.1.2",
"videojs-vtt.js": "0.12.6",
"xhr": "2.4.0"
},
"dependencies": {
"global": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/global/-/global-4.3.2.tgz",
"integrity": "sha512-/4AybdwIDU4HkCUbJkZdWpe4P6vuw/CUtu+0I1YlLIPe7OlUO7KNJ+q/rO70CW2/NW6Jc6I62++Hzsf5Alu6rQ==",
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
}
}
}
},
"videojs-font": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-2.1.0.tgz",
"integrity": "sha512-zFqWpLrXf1q8NtYx5qtZhMC6SLUFScDmR6j+UGPogobxR21lvXShhnzcNNMdOxJUuFLiToJ/BPpFUQwX4xhpvA=="
},
"videojs-vtt.js": {
"version": "0.12.6",
"resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz",
"integrity": "sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ==",
"requires": {
"global": "^4.3.1"
}
}
}
},
"videojs-contrib-quality-levels": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-3.0.0.tgz",
"integrity": "sha512-sNx38EYUx+Q+gmup1gVTv9P9/sPs28rM7gZOx1sedaHoKxEdYB+ysOGfHj6MSELBMNGMj6ZspdrpSiWguGvGxA==",
"requires": {
"global": "^4.4.0"
}
},
"videojs-font": {
"version": "3.2.0",
"resolved": "https://registry.npmmirror.com/videojs-font/-/videojs-font-3.2.0.tgz",
"integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA=="
},
"videojs-ie8": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/videojs-ie8/-/videojs-ie8-1.1.2.tgz",
"integrity": "sha512-0Zb2T4MLkpfZbeGMK/Z93b8Lrepr+rLFoHgQV1CoDeFqXvH7b+Vsd/VHoILGxQrgCSHFQ7mAODR6oyMjuiD4/g==",
"requires": {
"es5-shim": "^4.5.1"
}
},
"videojs-vtt.js": {
"version": "0.15.4",
"resolved": "https://registry.npmmirror.com/videojs-vtt.js/-/videojs-vtt.js-0.15.4.tgz",
"integrity": "sha512-r6IhM325fcLb1D6pgsMkTQT1PpFdUdYZa1iqk7wJEu+QlibBwATPfPc9Bg8Jiym0GE5yP1AG2rMLu+QMVWkYtA==",
"requires": {
"global": "^4.3.1"
}
},
"vm-browserify": { "vm-browserify": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz", "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
@ -14134,6 +14642,11 @@
"resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz", "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==" "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
}, },
"webwackify": {
"version": "0.1.6",
"resolved": "https://registry.npmmirror.com/webwackify/-/webwackify-0.1.6.tgz",
"integrity": "sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA=="
},
"which": { "which": {
"version": "1.3.1", "version": "1.3.1",
"resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz", "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
@ -14240,6 +14753,33 @@
"async-limiter": "~1.0.0" "async-limiter": "~1.0.0"
} }
}, },
"xhr": {
"version": "2.4.0",
"resolved": "https://registry.npmmirror.com/xhr/-/xhr-2.4.0.tgz",
"integrity": "sha512-TUbBsdAuJbX8olk9hsDwGK8P1ri1XlV+PdEWkYw+HQQbpkiBR8PLgD1F3kQDPBs9l4Px34hP9rCYAZOCCAENbw==",
"requires": {
"global": "~4.3.0",
"is-function": "^1.0.1",
"parse-headers": "^2.0.0",
"xtend": "^4.0.0"
},
"dependencies": {
"global": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/global/-/global-4.3.2.tgz",
"integrity": "sha512-/4AybdwIDU4HkCUbJkZdWpe4P6vuw/CUtu+0I1YlLIPe7OlUO7KNJ+q/rO70CW2/NW6Jc6I62++Hzsf5Alu6rQ==",
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
}
},
"process": {
"version": "0.5.2",
"resolved": "https://registry.npmmirror.com/process/-/process-0.5.2.tgz",
"integrity": "sha512-oNpcutj+nYX2FjdEW7PGltWhXulAnFlM0My/k48L90hARCOJtvBbQXc/6itV2jDvU5xAAtonP+r6wmQgCcbAUA=="
}
}
},
"xtend": { "xtend": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",

View File

@ -7,6 +7,7 @@
"build": "vue-cli-service build" "build": "vue-cli-service build"
}, },
"dependencies": { "dependencies": {
"@videojs/http-streaming": "^2.16.2",
"amfe-flexible": "^2.2.1", "amfe-flexible": "^2.2.1",
"axios": "^1.1.3", "axios": "^1.1.3",
"core-js": "^2.6.5", "core-js": "^2.6.5",
@ -22,6 +23,8 @@
"postcss-px2rem-exclude": "^0.0.6", "postcss-px2rem-exclude": "^0.0.6",
"semver": "^7.4.0", "semver": "^7.4.0",
"v-fit-columns": "^0.2.0", "v-fit-columns": "^0.2.0",
"video.js": "^8.0.4",
"videojs-contrib-hls": "^5.15.0",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-pdf": "4.2.0", "vue-pdf": "4.2.0",
"vue-router": "^3.0.3", "vue-router": "^3.0.3",

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,44 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>H5 PC测试</title>
<link href="css/video-js.css" rel="stylesheet">
<script src="js/video.min.js"></script>
<script src="js/videojs-contrib-hls.js"></script>
<style>
body{background-color: #191919}
#example-video{
margin: 0 auto;
width: 80%;
height:600px;
}
</style>
</head>
<body>
<div>
<h1 style="color: white; text-align: center;">HLS测试</h1>
<video id="example-video" class="video-js" autoplay="autoplay" controls preload="auto"
width="600" height="800" >
<!-- <source src="http://193.112.101.157:8080/hls/test.m3u8" type="application/x-mpegURL" /> -->
<!-- <source src="http://60.190.97.190:83/openUrl/LpSobcI/live.m3u8" type="application/x-mpegURL"> -->
<source :src="url" type="application/x-mpegURL">
</video>
</div>
</body>
<script>
window.onload = function() {
var player = videojs('example-video');
player.play();
},
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^'']*)(&|$)", "i");
// var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
console.log();
</script>
</html>

1
public/camera/js/hls.min.js vendored Normal file

File diff suppressed because one or more lines are too long

8
public/camera/js/video.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

1
public/camera/js/videojs-ie8.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -87,10 +87,16 @@
var r = window.location.search.substr(1).match(reg); var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null; if (r != null) return unescape(r[2]); return null;
} }
function getCameraList(name) {
var reg = new RegExp("(^|&)" + name + "=([^'']*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
// var videoBack = 'ws://192.168.105.213:9999/play?stream=rtsp://10.16.56.21:554/openUrl/EKndeuY?beginTime=20220709T141558&endTime=20220710T141558' // var videoBack = 'ws://192.168.105.213:9999/play?stream=rtsp://10.16.56.21:554/openUrl/EKndeuY?beginTime=20220709T141558&endTime=20220710T141558'
// $('#player').attr('video-url',videoBack); // $('#player').attr('video-url',videoBack);
$('#player').attr('video-url',getQueryString('src')); $('#player').attr('video-url',getQueryString('src'));
// $('#player').attr('video-url',"video.mp4");
// $('#player').attr('video-url',"http://138.227.200.2:83/openUrl/GNzyMUM/live.m3u8");
// 截图 // 截图
// function snapshot(){ // function snapshot(){
// if(document.getElementsByClassName("easy-video-player-inner")[0]){ // if(document.getElementsByClassName("easy-video-player-inner")[0]){
@ -114,8 +120,10 @@
//点击事件 //点击事件
$('#appc').click(function(){ $('#appc').click(function(){
let val = getQueryString('src') let val = getQueryString('src')
let code = getCameraList('code')
window.parent.postMessage({ window.parent.postMessage({
val val,
code
}, '*'); // * 通配符 匹配所有地址; content 表示传递过去嵌套iframe页面的数据 }, '*'); // * 通配符 匹配所有地址; content 表示传递过去嵌套iframe页面的数据
}) })
</script> </script>

View File

@ -28,55 +28,77 @@
</div> </div>
<div class="menu"> <div class="menu">
<div class="menuList"> <div class="menuList">
<div class="menuBtn" v-for="(item, index) in menuBtn" :key="index" @click="menuChange(index,item.name)" :class="{menuAc : menuAc == index}"> <div
class="menuBtn"
v-for="(item, index) in menuBtn"
:key="index"
@click="menuChange(index, item.name)"
:class="{ menuAc: menuAc == index }"
>
<!-- <img :src="item.icon" :style="{'wdith':menuAc == index ? '75%':'55%','height':menuAc == index ? '85%':'71%'}"/> --> <!-- <img :src="item.icon" :style="{'wdith':menuAc == index ? '75%':'55%','height':menuAc == index ? '85%':'71%'}"/> -->
<img :src="item.icon" :style="{'wdith':menuAc == index ? '75%':'55%','height':menuAc == index ? '85%':'85%'}"/> <img
<div style="font-size: 0.55rem;margin-top: 5%;">{{ item.name }}</div> :src="item.icon"
:style="{
wdith: menuAc == index ? '75%' : '55%',
height: menuAc == index ? '85%' : '85%',
}"
/>
<div style="font-size: 0.55rem; margin-top: 5%">{{ item.name }}</div>
</div> </div>
</div> </div>
</div> </div>
<div class="content"> <div class="content">
<keep-alive>
<router-view /> <router-view />
</keep-alive>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import pdf from 'vue-pdf' import pdf from "vue-pdf";
import axios from "axios" import axios from "axios";
import {getData} from './api/index.js' import { getData } from "./api/index.js";
export default { export default {
data(){ data() {
return{ return {
screenWidth: screenWidth:
window.innerWidth || window.innerWidth ||
document.documentElement.clientWidth || document.documentElement.clientWidth ||
document.body.clientWidth, document.body.clientWidth,
time:'', time: "",
weekList:['星期日','星期一','星期二','星期三','星期四','星期五','星期六'], weekList: [
week:'', "星期日",
floorAct:0, "星期一",
floorList:[ "星期二",
"星期三",
"星期四",
"星期五",
"星期六",
],
week: "",
floorAct: 0,
floorList: [
{ {
name:'楼顶', name: "楼顶",
}, },
{ {
name:'F5', name: "F5",
}, },
{ {
name:'F4', name: "F4",
}, },
{ {
name:'F3', name: "F3",
}, },
{ {
name:'F2', name: "F2",
}, },
{ {
name:'F1', name: "F1",
}, },
{ {
name:'B1', name: "B1",
}, },
], ],
menuBtn: [ menuBtn: [
@ -105,87 +127,87 @@ import {getData} from './api/index.js'
icon: require("./assets/images/gaoJing.png"), icon: require("./assets/images/gaoJing.png"),
}, },
], ],
menuAc:0, // menuAc: 0, //
timer:null, timer: null,
} };
}, },
created() { created() {
this.fun(); this.fun();
}, },
mounted() { mounted() {
window.goPage = this.goPage() window.goPage = this.goPage();
this.menuChange(0,this.menuBtn[0].name) this.menuChange(0, this.menuBtn[0].name);
let week = new Date(this.$moment().format("YYYY-MM-DD")).getDay() let week = new Date(this.$moment().format("YYYY-MM-DD")).getDay();
this.week = this.weekList[week] this.week = this.weekList[week];
window.setInterval(()=>{ window.setInterval(() => {
this.time = this.$moment().format("YYYY-MM-DD HH:mm:ss") this.time = this.$moment().format("YYYY-MM-DD HH:mm:ss");
},100) }, 100);
const that = this; const that = this;
window.onresize = () => { window.onresize = () => {
return (() => { return () => {
(window.screenWidth = (window.screenWidth =
window.innerWidth || window.innerWidth ||
document.documentElement.clientWidth || document.documentElement.clientWidth ||
document.body.clientWidth), document.body.clientWidth),
(that.screenWidth = window.screenWidth); (that.screenWidth = window.screenWidth);
that.fun(); that.fun();
}); };
}; };
}, },
methods:{ methods: {
// //
menuChange(index,name){ menuChange(index, name) {
this.goPage(name) this.goPage(name);
this.menuAc = index this.menuAc = index;
this.menuBtn.forEach((item,index) => { this.menuBtn.forEach((item, index) => {
if (index == 0) { if (index == 0) {
item.icon = require("./assets/images/shouYe.png") item.icon = require("./assets/images/shouYe.png");
}else if (index == 1) { } else if (index == 1) {
item.icon = require("./assets/images/faTing.png") item.icon = require("./assets/images/faTing.png");
}else if (index == 2) { } else if (index == 2) {
item.icon = require("./assets/images/jieNeng.png") item.icon = require("./assets/images/jieNeng.png");
}else if (index == 3) { } else if (index == 3) {
item.icon = require("./assets/images/anFang.png") item.icon = require("./assets/images/anFang.png");
}else if (index == 4) { } else if (index == 4) {
item.icon = require("./assets/images/yunWei.png") item.icon = require("./assets/images/yunWei.png");
}else if (index == 5) { } else if (index == 5) {
item.icon = require("./assets/images/gaoJing.png") item.icon = require("./assets/images/gaoJing.png");
} }
}); });
if (index == 0) { if (index == 0) {
this.menuBtn[index].icon = require("./assets/images/shouYeAc.png") this.menuBtn[index].icon = require("./assets/images/shouYeAc.png");
this.$router.push('/') this.$router.push("/");
}else if (index == 1) { } else if (index == 1) {
this.menuBtn[index].icon = require("./assets/images/faTingAc.png") this.menuBtn[index].icon = require("./assets/images/faTingAc.png");
this.$router.push('court') this.$router.push("court");
}else if (index == 2) { } else if (index == 2) {
this.menuBtn[index].icon = require("./assets/images/jieNengAc.png") this.menuBtn[index].icon = require("./assets/images/jieNengAc.png");
this.$router.push('energySaving') this.$router.push("energySaving");
}else if (index == 3) { } else if (index == 3) {
this.menuBtn[index].icon = require("./assets/images/anFangAc.png") this.menuBtn[index].icon = require("./assets/images/anFangAc.png");
this.$router.push('security') this.$router.push("security");
}else if (index == 4) { } else if (index == 4) {
this.menuBtn[index].icon = require("./assets/images/yunWeiAc.png") this.menuBtn[index].icon = require("./assets/images/yunWeiAc.png");
this.$router.push('operationMaintenance') this.$router.push("operationMaintenance");
}else if (index == 5) { } else if (index == 5) {
this.menuBtn[index].icon = require("./assets/images/gaoJingAc.png") this.menuBtn[index].icon = require("./assets/images/gaoJingAc.png");
this.$router.push('alarm') this.$router.push("alarm");
} }
}, },
goPage(name){ goPage(name) {
console.log(name) console.log(name);
}, },
// //
floorChange(index){ floorChange(index) {
this.floorAct = index this.floorAct = index;
}, },
// html 使rem // html 使rem
fun() { fun() {
const that = this; const that = this;
var htmlobj = document.getElementsByTagName("html")[0]; var htmlobj = document.getElementsByTagName("html")[0];
htmlobj.style.fontSize = (that.screenWidth / 1920) * 20 + "px"; htmlobj.style.fontSize = (that.screenWidth / 1920) * 20 + "px";
} },
}, },
watch: { watch: {
screenWidth(val) { screenWidth(val) {
@ -201,15 +223,14 @@ import {getData} from './api/index.js'
} }
}, },
}, },
components: { components: {},
}, };
}
</script> </script>
<style lang="less"> <style lang="less">
/*将大屏设置为1920*1080,设置缩放的方向*/ /*将大屏设置为1920*1080,设置缩放的方向*/
#app { #app {
font-family:'微软雅黑' ; font-family: "微软雅黑";
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
text-align: center; text-align: center;
@ -217,7 +238,6 @@ import {getData} from './api/index.js'
height: 1080px; height: 1080px;
transition: all 0.2s linear; transition: all 0.2s linear;
transform-origin: left top; transform-origin: left top;
} }
</style> </style>
<style lang="less" scoped> <style lang="less" scoped>
@ -323,8 +343,8 @@ import {getData} from './api/index.js'
justify-content: space-evenly; justify-content: space-evenly;
color: white; color: white;
} }
.menuAc{ .menuAc {
color: rgb(0,229,189); color: rgb(0, 229, 189);
// width: 15%; // width: 15%;
// height: 100%; // height: 100%;
width: 15%; width: 15%;

7
src/api/haikang.js Normal file
View File

@ -0,0 +1,7 @@
import axios from 'axios'
//根据等级获取报警数据
export const getHikvision = (data) => {
return axios.post('/video/cameras/hikvision/',
data
)
};

View File

@ -33,9 +33,9 @@ export const getBuildinginfos = (params) => {
}; };
// 获取分项用能信息接口 // 获取分项用能信息接口
export const getSubitemList = (data) => { export const getSubitemList = (data) => {
return axios.post('ecs-server/services/ecm/subitemList', { return axios.post('ecs-server/services/ecm/subitemList',
data data
}) )
}; };
// 获取所有设备信息 // 获取所有设备信息
export const getAllDevices = (params) => { export const getAllDevices = (params) => {
@ -45,13 +45,14 @@ export const getAllDevices = (params) => {
}; };
// 获取设备实时数据信息 // 获取设备实时数据信息
export const getRealData = (data) => { export const getRealData = (data) => {
return axios.post('ecs-server/services/getRealData', { return axios.post('ecs-server/services/getRealData',
data data
}) )
}; };
// 获取区域用能数据信息 // 获取区域用能数据信息
export const getAreaList = (data) => { export const getAreaList = (data) => {
return axios.post('ecs-server/services/ecm/areaList', { return axios.post('ecs-server/services/ecm/areaList',
data data
}) // headers:{'Content-Type':'application/json;charset=utf-8'}
)
}; };

View File

@ -37,7 +37,7 @@ class mqttHandle {
const { host, port, endpoint, ...options } = this.connect; const { host, port, endpoint, ...options } = this.connect;
console.log("this.connect.host", this.connect.host) console.log("this.connect.host", this.connect.host)
// const connectUrl = 'ws://138.227.111.141:8083/mqtt'; // const connectUrl = 'ws://138.227.111.141:8083/mqtt';
const connectUrl = 'ws://172.16.1.253:1884/mqtt'; const connectUrl = 'ws://138.227.208.100:1884/mqtt';
// const connectUrl = `ws://${this.connect.host}:${this.connect.port}`; // const connectUrl = `ws://${this.connect.host}:${this.connect.port}`;
// if (!client.connected) { // if (!client.connected) {
// client.on('connect', function () { // client.on('connect', function () {

101
src/views/camera/camera.vue Normal file
View File

@ -0,0 +1,101 @@
<template>
<div class="Camera">
<video
:ref="'video' + videoId"
:id="'video' + videoId"
class="video-js vjs-default-skin"
width="100%"
height="100%"
object-fit:cover
preload="auto"
style="overflow: hidden;"
>
<source :src="videoUrlList" type="application/x-mpegURL" />
</video>
</div>
</template>
<script>
import videojs from "video.js";
import "videojs-contrib-hls";
import "@videojs/http-streaming";
import "video.js/dist/video-js.min.css";
export default {
name:'camera',
props: {
videoUrl: {
type: String,
default: "",
},
id: {
type: Number,
default: 0,
},
},
data() {
return {
videoUrlList:'',
videoId : 0,
};
},
mounted(){
this.videoId = this.id
},
watch: {
videoUrl: {
deep: true,
handler(newVal) {
this.$nextTick(()=>{
this.clickSurveillance(newVal)
})
}
},
id: {
deep: true,
handler(newVal,oldVal) {
this.videoId = newVal
}
},
},
methods: {
//
clickSurveillance(newVal) {
this.player = null
let that = this
//
setTimeout(() => {
this.player = videojs(
'video'+this.videoId,
{
bigPlayButton: false,
controlBar: false,
notSupportedMessage: "此视频暂无法播放,请稍后再试",
},
function () {
this.play();
}
);
//
this.videoUrlList = newVal;
this.player.src(this.videoUrlList);
videojs('video' + this.videoId).ready(function () {
this.player = this;
this.player.play();
});
}, 500);
},
//
closeVideo() {
this.player.dispose();
},
},
};
</script>
<style lang="less" scoped>
.video-js{
width: 100%;
height: 100%;
}
</style>

View File

@ -0,0 +1,89 @@
<template>
<div class="Camera">
<video
ref="video"
id="video"
class="video-js vjs-default-skin"
width="100%"
height="100%"
object-fit:cover
preload="auto"
style="overflow: hidden;"
>
<source :src="videoUrlList" type="application/x-mpegURL" />
</video>
</div>
</template>
<script>
import videojs from "video.js";
import "videojs-contrib-hls";
import "@videojs/http-streaming";
import "video.js/dist/video-js.min.css";
export default {
name:'cameraBig',
props: {
cameraBig:{
type: String,
default: "",
},
},
data() {
return {
videoUrlList:'',
};
},
mounted(){
this.clickSurveillance(this.cameraBig)
},
watch: {
// cameraBig: {
// deep: true,
// handler(newVal) {
// console.log(newVal,'wwwwwwwwww');
// this.clickSurveillance(newVal)
// }
// },
},
methods: {
//
clickSurveillance(newVal) {
let that = this
//
setTimeout(() => {
this.player = videojs(
'video',
{
bigPlayButton: false,
controlBar: false,
notSupportedMessage: "此视频暂无法播放,请稍后再试",
},
function () {
this.play();
}
);
//
this.videoUrlList = newVal;
this.player.src(this.videoUrlList);
videojs('video').ready(function () {
this.player = this;
this.player.play();
});
}, 400);
},
//
closeVideo() {
console.log('关闭');
this.player.dispose();
},
},
};
</script>
<style lang="less" scoped>
.video-js{
width: 100%;
height: 100%;
}
</style>

View File

@ -1,3 +1,5 @@
const { color } = require("echarts")
<template> <template>
<div class="energy"> <div class="energy">
<div class="left"> <div class="left">
@ -35,7 +37,7 @@
> >
<div v-for="(i, k) in item" :key="k" class="equipmentEnergyChild"> <div v-for="(i, k) in item" :key="k" class="equipmentEnergyChild">
<div class="equipmentList"> <div class="equipmentList">
<span>{{ i.count }}</span> <span>{{ i.data }}</span>
<span style="color: rgb(225, 177, 25); font-size: 0.4rem" <span style="color: rgb(225, 177, 25); font-size: 0.4rem"
>KWH</span >KWH</span
> >
@ -350,19 +352,19 @@ export default {
{ {
name: "今日发电量", name: "今日发电量",
icon: require("../assets/images/jieNengImg/energy.png"), icon: require("../assets/images/jieNengImg/energy.png"),
count: "", count: "0",
unit: "kWh", unit: "kWh",
}, },
{ {
name: "总发电量", name: "总发电量",
icon: require("../assets/images/jieNengImg/energy.png"), icon: require("../assets/images/jieNengImg/energy.png"),
count: "", count: "0",
unit: "kWh", unit: "kWh",
}, },
{ {
name: "有功功率", name: "有功功率",
icon: require("../assets/images/jieNengImg/power.png"), icon: require("../assets/images/jieNengImg/power.png"),
count: "", count: "0",
unit: "kWh", unit: "kWh",
}, },
{ {
@ -374,7 +376,7 @@ export default {
{ {
name: "运行时间", name: "运行时间",
icon: require("../assets/images/jieNengImg/runTime.png"), icon: require("../assets/images/jieNengImg/runTime.png"),
count: "", count: "0",
unit: "h", unit: "h",
}, },
{ {
@ -389,25 +391,28 @@ export default {
alarmFirstLevel:[], alarmFirstLevel:[],
alarmSecondLevel:[], alarmSecondLevel:[],
alarmThirdLevel:[], alarmThirdLevel:[],
equipmentList2: [],
}; };
}, },
mounted() { mounted() {
this.getAllDevicesInfo();
window.setInterval(() => {
this.getAllDevicesInfo();
}, 10000);
this.getMqttData() this.getMqttData()
window.alarmSecondLevel= this.alarmSecondLevel window.alarmSecondLevel= this.alarmSecondLevel
window.alarmThirdLevel= this.alarmThirdLevel window.alarmThirdLevel= this.alarmThirdLevel
window.alarmAllLevel= this.alarmAllLevel window.alarmAllLevel= this.alarmAllLevel
this.changeWarn(0); this.changeWarn(0);
// //
for (let i = 0; i < this.equipmentList.length; i += 8) { // for (let i = 0; i < this.equipmentList.length; i += 8) {
this.equipmentList1.push(this.equipmentList.slice(i, i + 8)); // this.equipmentList1.push(this.equipmentList.slice(i, i + 8));
} // }
// this.calculateEcharts(); // this.calculateEcharts();
this.getQOQ() this.getQOQ()
this.getYOY() this.getYOY()
this.calculateEchartsTwo();
// window.createMqtt = this.createMqtt(); // window.createMqtt = this.createMqtt();
this.getAllDevicesInfo();
}, },
watch: { watch: {
alarmFirstLevel(val) { alarmFirstLevel(val) {
@ -434,62 +439,13 @@ export default {
// //
getQOQ() { getQOQ() {
let dataList = { let dataList = {
buildingId: "79", pbuildingId: "79",
customerId: "12345678", customerId: "12345678",
date: this.$moment().format("YYYYMM"), date: this.$moment().format("YYYYMM"),
dateType: "2", dateType: "2",
meterType: "1", meterType: "1",
pbuildingId: "-1", // pbuildingId: "-1",
}; };
//
// let resData = {
// values: [
// {
// dateDetail: "13",
// val: 380.29,
// tqVal: 0,
// hqVal: 0,
// },
// {
// dateDetail: "14",
// val: 0.18,
// tqVal: 0,
// hqVal: 380.29,
// },
// {
// dateDetail: "26",
// val: 70.31,
// tqVal: 0,
// hqVal: 0.18,
// },
// {
// dateDetail: "27",
// val: 12.02,
// tqVal: 0,
// hqVal: 70.31,
// },
// {
// dateDetail: "28",
// val: 18.3,
// tqVal: 0,
// hqVal: 12.02,
// },
// {
// dateDetail: "29",
// val: 7.88,
// tqVal: 0,
// hqVal: 18.3,
// },
// ],
// child: [
// {
// val: 489.02,
// buildName: "",
// buildId: 79,
// },
// ],
// };
// this.calculateEcharts(resData.child)
getAreaList(dataList).then((res)=>{ getAreaList(dataList).then((res)=>{
this.calculateEcharts(res.data.data.child); this.calculateEcharts(res.data.data.child);
}) })
@ -504,58 +460,9 @@ export default {
meterType: "1", meterType: "1",
pbuildingId: "-1", pbuildingId: "-1",
}; };
//
// let resData = {
// values: [
// {
// dateDetail: "13",
// val: 380.29,
// tqVal: 0,
// hqVal: 0,
// },
// {
// dateDetail: "14",
// val: 0.18,
// tqVal: 0,
// hqVal: 380.29,
// },
// {
// dateDetail: "26",
// val: 70.31,
// tqVal: 0,
// hqVal: 0.18,
// },
// {
// dateDetail: "27",
// val: 12.02,
// tqVal: 0,
// hqVal: 70.31,
// },
// {
// dateDetail: "28",
// val: 18.3,
// tqVal: 0,
// hqVal: 12.02,
// },
// {
// dateDetail: "29",
// val: 7.88,
// tqVal: 0,
// hqVal: 18.3,
// },
// ],
// child: [
// {
// val: 489.02,
// buildName: "",
// buildId: 79,
// },
// ],
// };
// this.calculateEchartsTwo(resData.values)
// //
getAreaList(dataList).then((res)=>{ getAreaList(dataList).then((res)=>{
this.calculateEcharts(res.data.data.values); this.calculateEchartsTwo(res.data.data.values);
}) })
}, },
// //mqtt // //mqtt
@ -615,33 +522,24 @@ export default {
}, },
// mqtt // mqtt
getDataByMqtt(url, topic) { getDataByMqtt(url, topic) {
const clientId = "test_id_" + String(new Date().getTime()); // const clientId = Number(new Date()).toString(); //
const host = url; // urlws://broker.emqx.io:8083/mqtt // const host = url; // urlws://broker.emqx.io:8083/mqtt
const options = { const options = {
// endpoint: "/mqtt",
// IP clean: true, //
// host: host, cleanSession: true,
// port: port, connectTimeout: 7000, //
reconnectPeriod: 7000, //
keepalive: 60, // 60s0 host: '138.227.111.141',
username: 'test', // port: '8083',
password: 1234, // //
clientId: clientId, // ID clientId: Number(new Date()).toString(),
protocolId: "MQTT", // clientId: 'JBFY',
protocolVersion: 4, username: "admin",
clean: true, // false线QoS12 password: "123456",
reconnectPeriod: 2000, // 1000
connectTimeout: 30 * 1000, // CONNACK
will: {
// Broker
topic: topic, //
payload: "[MQTT-TEST] 遗嘱消息:连接异常断开!", //
qos: 0, // QoS(Quality of Service)QoS0QoS11QoS21
retain: false, //
},
}; };
if (this.mqttClient == undefined) { if (this.mqttClient == undefined) {
this.mqttClient = mqtt.connect(host, options); // this.mqttClient = mqtt.connect(url, options); //
// const client = mqtt.connect(host, options); // // const client = mqtt.connect(host, options); //
// const client = mqtt.connect(host) // // const client = mqtt.connect(host) //
// //
@ -655,15 +553,9 @@ export default {
}); });
// //
this.mqttClient.on("connect", () => { this.mqttClient.on("connect", () => {
// console.log(
// "[MQTT-TEST] ID: " + this.models[cIdNum].cName
// );
}); });
// //
this.mqttClient.on("message", (topic, message, packet) => { this.mqttClient.on("message", (topic, message, packet) => {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date());
// //
let that = this; let that = this;
if (topic.indexOf("device/publish/FB80") != -1) { if (topic.indexOf("device/publish/FB80") != -1) {
@ -694,207 +586,6 @@ export default {
}, },
// //
getAllDevicesInfo() { getAllDevicesInfo() {
//
// let allDevicesInfo = [
// {
// gatwayId: "1",
// metername: "A-VZCP2-2",
// meteraddress: "7",
// installtime: 1681363621,
// metercode: "320100A208001002",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP2-3",
// meteraddress: "8",
// installtime: 1681363633,
// metercode: "320100A208001003",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP2-4",
// meteraddress: "9",
// installtime: 1681363646,
// metercode: "320100A208001004",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP2-5",
// meteraddress: "10",
// installtime: 1681363658,
// metercode: "320100A208001005",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP1-1",
// meteraddress: "1",
// installtime: 1681363536,
// metercode: "320100A208001101",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP1-2",
// meteraddress: "2",
// installtime: 1681363554,
// metercode: "320100A208001102",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP1-3",
// meteraddress: "3",
// installtime: 1681363569,
// metercode: "320100A208001103",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP1-4",
// meteraddress: "4",
// installtime: 1681363584,
// metercode: "320100A208001104",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-FACP1-5",
// meteraddress: "5",
// installtime: 1681363597,
// metercode: "320100A208001105",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-FACP2-6",
// meteraddress: "11",
// installtime: 1681363670,
// metercode: "320100A208001006",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "C1-04ACP1-1",
// meteraddress: "1",
// installtime: 1681363682,
// metercode: "320100A208003001",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "C1-04ACP1-2",
// meteraddress: "1",
// installtime: 1681363692,
// metercode: "320100A208003002",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "C1-04ACP1-3",
// meteraddress: "1",
// installtime: 1681363704,
// metercode: "320100A208003003",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "C1-04ACP1-4",
// meteraddress: "1",
// installtime: 1681363714,
// metercode: "320100A208003004",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "C1-04ACP1-5",
// meteraddress: "1",
// installtime: 1681363725,
// metercode: "320100A208003005",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "1",
// metername: "A-VZCP2-1",
// meteraddress: "6",
// installtime: 1681363608,
// metercode: "320100A208001001",
// meterstatus: "1",
// metermodel: "MODBUS_ZFY",
// },
// {
// gatwayId: "2",
// metername: "1",
// meteraddress: "1",
// installtime: 1681279847,
// metercode: "320100A208003006",
// meterstatus: "1",
// metermodel: "188_ZFY",
// },
// {
// gatwayId: "2",
// metername: "2",
// meteraddress: "1",
// installtime: 1681279855,
// metercode: "320100A208003007",
// meterstatus: "1",
// metermodel: "188_ZFY",
// },
// ];
// this.equipmentList = Object.keys(allDevicesInfo).map((item, index) => {
// return {
// name: allDevicesInfo[index].metername,
// code: allDevicesInfo[index].metercode,
// };
// });
// let realInfo = [
// {
// collectType: "1",
// idata: "1579.53",
// id: "320100A208001002",
// },
// {
// collectType: "1",
// idata: "669.48",
// id: "320100A208001003",
// },
// {
// collectType: "1",
// idata: "341.37",
// id: "320100A208001004",
// },
// ];
// let realData = [];
// for (let i = 0; i < this.equipmentList.length; i++) {
// realInfo.forEach((item, index) => {
// if (this.equipmentList[i].code == item.id) {
// realData.push({
// data: item.idata,
// name: this.equipmentList[i].name,
// value: "",
// });
// }
// });
// }
// console.log(this.equipmentList, "=================", realData);
// //
let allDevicesCode = []; let allDevicesCode = [];
getAllDevices().then((res) => { getAllDevices().then((res) => {
@ -908,28 +599,32 @@ export default {
); );
res.data.dataResults.forEach((item, index) => { res.data.dataResults.forEach((item, index) => {
allDevicesCode.push(item.metercode); allDevicesCode.push(item.metercode);
});
getRealData({ getRealData({
metercodes: allDevicesCode, metercodes: allDevicesCode,
}).then((response) => { }).then((response) => {
console.log(response, "实时设备数据"); let resList = []
// console.log(allDevicesCode,response.data.dataResults, "ssssssssssss");
for (const key in response.data.dataResults) {
resList = response.data.dataResults[1]
}
for (let i = 0; i < this.equipmentList.length; i++) { for (let i = 0; i < this.equipmentList.length; i++) {
response.data.dataResults.forEach((is, k) => { resList.forEach((is, k) => {
if (this.equipmentList[i].code == is.id) { if (this.equipmentList[i].code == is.id) {
this.equipmentList.push({ this.equipmentList2.push({
data: item.idata, data: parseInt(is.idata),
name: this.equipmentList[i].name, name: this.equipmentList[i].name,
value: "", value: "",
}); });
} }
}); });
} }
});
});
console.log(this.equipmentList, "设备用能统计");
// //
for (let i = 0; i < this.equipmentList.length; i += 8) { for (let i = 0; i < this.equipmentList2.length; i += 8) {
this.equipmentList1.push(this.equipmentList.slice(i, i + 8)); this.equipmentList1.push(this.equipmentList2.slice(i, i + 8));
} }
});
}); });
}, },
// //
@ -1030,22 +725,12 @@ export default {
}); });
}, },
calculateEcharts(val) { calculateEcharts(val) {
// console.log(val,'=================s');
let imgSrc = "/img/car.png"; let imgSrc = "/img/car.png";
let chartData = [ let chartData = [];
{
value: 42,
name: "主楼",
},
{
value: 24,
name: "辅楼",
},
];
chartData = Object.keys(val).map((item,index)=>{ chartData = Object.keys(val).map((item,index)=>{
return {value:val[item].val,name:val[item].buildName} return {value:val[item].val,name:val[item].buildName}
}) })
let colorList = ["red", "rgb(255,122,0)"]; let colorList = ["red", "rgb(255,122,0)","rgb(3, 255, 150)","rgb(0,215,245)"];
let sum = chartData.reduce((per, cur) => per + cur.value, 0); let sum = chartData.reduce((per, cur) => per + cur.value, 0);
let gap = (1 * sum) / 100; let gap = (1 * sum) / 100;
let pieData1 = []; let pieData1 = [];
@ -1066,7 +751,6 @@ export default {
}, },
}); });
pieData1.push(gapData); pieData1.push(gapData);
// //
pieData2.push({ pieData2.push({
...chartData[i], ...chartData[i],
@ -1243,8 +927,8 @@ export default {
val.forEach((item,index) => { val.forEach((item,index) => {
dataX.push(item.dateDetail) dataX.push(item.dateDetail)
tqData.push(item.tqVal) tqData.push(item.tqVal)
bqData.push(item.val) bqData.push(item.hqVal)
tbData.push(item.tqVal) tbData.push(item.val)
}); });
var myChart = this.$echarts.init( var myChart = this.$echarts.init(
document.getElementById("calculateEchartsTwo") document.getElementById("calculateEchartsTwo")
@ -1255,8 +939,9 @@ export default {
grid: { containLabel: true, top: 30, right: 15, bottom: 0, left: 15 }, grid: { containLabel: true, top: 30, right: 15, bottom: 0, left: 15 },
legend: { legend: {
show: true, show: true,
data: ["同期", "本期", "同比"], // data: ["", "", ""],
textStyle: { fontSize: "0.9rem", color: "#ffffff" }, data: ["同期", "环期", "用量数值"],
textStyle: { fontSize: "0.7rem", color: "#ffffff" },
}, },
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
@ -1273,7 +958,7 @@ export default {
show: false, show: false,
}, },
axisLabel: { axisLabel: {
interval: 0, // interval: 0,
show: true, show: true,
fontSize: "0.9rem", fontSize: "0.9rem",
color: "#ffffff", color: "#ffffff",
@ -1282,6 +967,7 @@ export default {
}, },
yAxis: [ yAxis: [
{ {
name:'单位kWh',
axisLine: { show: false }, axisLine: { show: false },
axisTick: { show: false }, axisTick: { show: false },
axisLabel: { axisLabel: {
@ -1289,11 +975,15 @@ export default {
fontSize: "0.9rem", fontSize: "0.9rem",
color: "#ffffff", color: "#ffffff",
fontFamily: "SourceHanSansCN-Normal, SourceHanSansCN", fontFamily: "SourceHanSansCN-Normal, SourceHanSansCN",
formatter: "{value}%", formatter: "{value}",
}, },
splitLine: { show: false }, splitLine: { show: false },
}, },
{ {
name:'比率',
textStyle:{
color:'#fff'
},
axisLine: { show: false }, axisLine: { show: false },
axisTick: { show: false }, axisTick: { show: false },
axisLabel: { axisLabel: {
@ -1301,7 +991,7 @@ export default {
fontSize: "0.9rem", fontSize: "0.9rem",
color: "#ffffff", color: "#ffffff",
fontFamily: "SourceHanSansCN-Normal, SourceHanSansCN", fontFamily: "SourceHanSansCN-Normal, SourceHanSansCN",
formatter: "{value} %", formatter: "{value}",
}, },
splitLine: { show: false }, splitLine: { show: false },
}, },
@ -1326,7 +1016,7 @@ export default {
data: tqData, data: tqData,
}, },
{ {
name: "期", name: "期",
type: "bar", type: "bar",
barWidth: "25%", barWidth: "25%",
showBackground: true, showBackground: true,
@ -1350,7 +1040,7 @@ export default {
data: bqData, data: bqData,
}, },
{ {
name: "同比", name: "用量数值",
type: "line", type: "line",
yAxisIndex: 1, yAxisIndex: 1,
itemStyle: { itemStyle: {
@ -1676,7 +1366,7 @@ export default {
background: url("../assets/images/jieNengImg/energyBack.png") no-repeat; background: url("../assets/images/jieNengImg/energyBack.png") no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
color: #fff; color: #fff;
font-size: 1.3rem; font-size: 1rem;
font-weight: 500; font-weight: 500;
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -30,7 +30,7 @@
v-for="(item, index) in wisdomMonArr" v-for="(item, index) in wisdomMonArr"
:key="index" :key="index"
> >
<div style="width: 100%;font-size: 0.6rem;"> <div style="width: 100%; font-size: 0.6rem">
<span>{{ item.name }}:</span> <span>{{ item.name }}:</span>
<span style="color: rgb(225, 177, 25); margin-left: 5%">{{ <span style="color: rgb(225, 177, 25); margin-left: 5%">{{
item.count item.count
@ -79,7 +79,7 @@
flex-direction: column; flex-direction: column;
align-items: flex-start; align-items: flex-start;
margin-left: 3%; margin-left: 3%;
width:100% width: 100%;
" "
> >
<span>报警时间:{{ item.time }}</span> <span>报警时间:{{ item.time }}</span>
@ -88,12 +88,11 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-top: 2%; margin-top: 2%;
width:100% width: 100%;
" "
> >
<span>报警原因:{{ item.cause }}</span> <span style="text-align: left">报警原因:{{ item.cause }}</span>
<span style="margin-right:5%">风险等级:{{ item.risk }}</span <span style="margin-right: 5%">风险等级:{{ item.risk }}</span>
>
</div> </div>
</div> </div>
</div> </div>
@ -211,32 +210,56 @@
@click="changeCamera(item.video)" @click="changeCamera(item.video)"
> >
<!-- <img :src="item.icon" style="width: 100%; height: 100%" /> --> <!-- <img :src="item.icon" style="width: 100%; height: 100%" /> -->
<iframe <!-- <iframe
:src="item.video+'video.mp4'" :src="item.video"
ref="iframeRef" ref="iframeRef"
frameborder="0" frameborder="0"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
></iframe> ></iframe> -->
<camera
style="width: 100%; height: 100%"
:videoUrl="item.video"
:id="index"
/>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="camersBig" v-show="cameraBigShow"> <div class="camersBig" v-if="cameraBigShow">
<!-- <img :src="cameraBig" style="width:100%;height:100%"/> --> <!-- <img :src="cameraBig" style="width:100%;height:100%"/> -->
<iframe <!-- <iframe
:src="cameraBig" :src="cameraBig"
ref="iframeRef" ref="iframeRef"
frameborder="0" frameborder="0"
style="width: 100%; height: 100%" style="width: 100%; height: 100%"
></iframe> ></iframe> -->
<cameraBig
style="width: 100%; height: 100%"
:cameraBig="cameraBigUrl"
ref="camersBig"
/>
<div class="close" @click="closeCamer"></div> <div class="close" @click="closeCamer"></div>
<div class="remoteControl"> <div class="remoteControl">
<img src="../assets/images/add.png" style="width:20%;height:24%;cursor: pointer;z-index: 99"/> <img
<img src="../assets/images/reduce.png" style="width:20%;height:24%;cursor: pointer;z-index: 99"/> src="../assets/images/add.png"
style="width: 20%; height: 24%; cursor: pointer; z-index: 99"
@click="addZoom"
/>
<img
src="../assets/images/reduce.png"
style="width: 20%; height: 24%; cursor: pointer; z-index: 99"
@click="reduceZoom"
/>
</div> </div>
<div class="remoteControl1"> <div class="remoteControl1">
<img src="../assets/images/leftBtn.png" style="width:20%;height:24%;cursor: pointer;"/> <img
<img src="../assets/images/rightBtn.png" style="width:20%;height:24%;cursor: pointer;"/> src="../assets/images/leftBtn.png"
style="width: 20%; height: 24%; cursor: pointer"
/>
<img
src="../assets/images/rightBtn.png"
style="width: 20%; height: 24%; cursor: pointer"
/>
</div> </div>
</div> </div>
</div> </div>
@ -250,6 +273,9 @@ import {
getBuildinginfos, getBuildinginfos,
getAreaList, getAreaList,
} from "../api/index"; } from "../api/index";
import { getHikvision } from "../api/haikang";
import camera from "./camera/camera.vue";
import cameraBig from "./camera/cameraBig.vue";
export default { export default {
data() { data() {
return { return {
@ -348,22 +374,39 @@ export default {
value: "1", value: "1",
}, },
], ],
cameraList: [], // cameraList: [
cameraBig: "", {
video: "",
},
{
video: "",
},
{
video: "",
},
{
video: "",
},
], //
cameraBigUrl: "",
cameraBigShow: false, cameraBigShow: false,
buildingList: [], buildingList: [],
alarmAllLevel:[], alarmAllLevel: [],
alarmFirstLevel:[], alarmFirstLevel: [],
alarmSecondLevel:[], alarmSecondLevel: [],
alarmThirdLevel:[], alarmThirdLevel: [],
camersCode: "",
}; };
}, },
mounted() { mounted() {
this.getCamera();
//id
this.getBuildingData();
let that = this; let that = this;
window.alarmFirstLevel = this.alarmFirstLevel window.alarmFirstLevel = this.alarmFirstLevel;
window.alarmSecondLevel= this.alarmSecondLevel window.alarmSecondLevel = this.alarmSecondLevel;
window.alarmThirdLevel= this.alarmThirdLevel window.alarmThirdLevel = this.alarmThirdLevel;
window.alarmAllLevel= this.alarmAllLevel window.alarmAllLevel = this.alarmAllLevel;
this.warningOne(); this.warningOne();
this.warningTwo(); this.warningTwo();
this.maintenanceLeft(); this.maintenanceLeft();
@ -371,36 +414,60 @@ export default {
// this.energyEcharts(); // this.energyEcharts();
this.selectDataList(this.selectDate); this.selectDataList(this.selectDate);
// window.createMqtt = this.createMqtt(); // window.createMqtt = this.createMqtt();
window.addEventListener("message", function (e) { // window.addEventListener("message", function (e) {
let val = e.data.val; // let val = e.data.val;
if (val != null) { // if (val != null) {
that.changeCamera("video/video.html?src=" + e.data.val); // that.changeCamera("video/video.html?src=" + e.data.val);
} // that.camersCode = e.data.code
}); // }
let camera = [ // });
{ // let camera = [
icon: require("../assets/images/camera.png"), // {
video: "video/video.html?src=", // icon: require("../assets/images/camera.png"),
}, // video: "video/video.html?src=",
{ // },
icon: require("../assets/images/camera.png"), // {
video: "video/video.html?src=", // icon: require("../assets/images/camera.png"),
}, // video: "video/video.html?src=",
{ // },
icon: require("../assets/images/camera.png"), // {
video: "video/video.html?src=", // icon: require("../assets/images/camera.png"),
}, // video: "video/video.html?src=",
{ // },
icon: require("../assets/images/camera.png"), // {
video: "video/video.html?src=", // icon: require("../assets/images/camera.png"),
}, // video: "video/video.html?src=",
]; // },
setTimeout(() => { // ];
this.cameraList = camera; // setTimeout(() => {
}, 1000); // this.cameraList = camera;
// }, 1000);
this.warnSelect(0); this.warnSelect(0);
//id },
this.getBuildingData(); watch: {
alarmAllLevel(val) {
// resize使
console.log("alarmAllLevel", val);
this.upmqttData(val);
},
alarmFirstLevel(val) {
// resize使
console.log("alarmFirstLevel", val);
if (val.length != 0) {
this.upmqttData(val);
}
},
alarmSecondLevel(val) {
// resize使
console.log("alarmSecondLevel", val);
this.upmqttData(val);
},
alarmThirdLevel(val) {
// resize使
console.log("alarmThirdLevel", val);
this.upmqttData(val);
},
}, },
watch: { watch: {
alarmAllLevel(val) { alarmAllLevel(val) {
@ -430,126 +497,131 @@ export default {
}, },
}, },
methods: { methods: {
//
addZoom() {
console.log(this.camersCode, "sssssssssssss");
let dataList = {
path: "/artemis/api/video/v1/ptzs/controlling",
data: {
cameraIndexCode: this.camersCode,
action: "0",
command: "ZOOM_IN",
speed: "50",
},
};
getHikvision(dataList).then((res) => {
console.log(res, "=============");
});
},
//
reduceZoom() {
console.log(this.camersCode, "sssssssssssss");
let dataList = {
path: "/artemis/api/video/v1/ptzs/controlling",
data: {
cameraIndexCode: this.camersCode,
action: "0",
command: "ZOOM_OUT",
speed: "50",
},
};
getHikvision(dataList).then((res) => {
console.log(res, "=============");
});
},
//
getCamera() {
this.cameraList[0].video =
"https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8";
this.cameraList[1].video =
"https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8";
this.cameraList[2].video =
"http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8";
this.cameraList[3].video =
"http://playertest.longtailvideo.com/adaptive/bipbop/gear4/prog_index.m3u8";
let pathUrl = "/artemis/api/video/v2/cameras/previewURLs";
let dataList = {
path: pathUrl,
data: {
protocol: "hls",
cameraIndexCode: "620804559ecf4ade8f13b17337ea8bfa",
},
};
getHikvision(dataList).then((res) => {
this.cameraList[0].video =
"video/video.html?src=" +
res.data.result.data.url +
"&code=" +
dataList.data.cameraIndexCode;
});
let dataList1 = {
path: pathUrl,
data: {
protocol: "hls",
cameraIndexCode: "3efe8f887f164548a5db4266590a05ca",
},
};
getHikvision(dataList1).then((res) => {
this.cameraList[1].video =
"video/video.html?src=" +
res.data.result.data.url +
"&code=" +
dataList1.data.cameraIndexCode;
});
let dataList2 = {
path: pathUrl,
data: {
protocol: "hls",
cameraIndexCode: "f103ede0eb2b470f84e26ceec42486bc",
},
};
getHikvision(dataList2).then((res) => {
this.cameraList[2].video =
"video/video.html?src=" +
res.data.result.data.url +
"&code=" +
dataList2.data.cameraIndexCode;
});
let dataList3 = {
path: pathUrl,
data: {
protocol: "hls",
cameraIndexCode: "bf16be84f6f8410c8dca2dfc5369a532",
},
};
getHikvision(dataList3).then((res) => {
this.cameraList[3].video =
"video/video.html?src=" +
res.data.result.data.url +
"&code=" +
dataList3.data.cameraIndexCode;
});
},
//Id //Id
getBuildingData() { getBuildingData() {
// getBuildinginfos().then((res) => { getBuildinginfos().then((res) => {
// //
// this.buildingList = res.data.dataResults this.buildingList = res.data.dataResults;
this.buildingList = [ let buildArr = [];
{ // this.options =
name: "江北新区法院", Object.keys(this.buildingList).map((item, index) => {
id: "79", if (this.buildingList[index].name.indexOf("水") == -1) {
parentId: "-1", buildArr[buildArr.length] = this.buildingList[index];
}, }
{ // return {
name: "辅楼一层水表1", // label: buildNameList,
id: "104", // value: this.buildingList[index].id,
parentId: "79", // parentId: this.buildingList[index].parentId,
}, // };
{ });
name: "辅楼一层水表2", this.options = Object.keys(buildArr).map((item, index) => {
id: "105",
parentId: "79",
},
{
name: "主楼用电",
id: "106",
parentId: "79",
},
{
name: "辅楼用电",
id: "107",
parentId: "79",
},
{
name: "A-FACP1-1",
id: "108",
parentId: "106",
},
{
name: "A-FACP1-2",
id: "109",
parentId: "106",
},
{
name: "A-FACP1-3",
id: "110",
parentId: "106",
},
{
name: "A-FACP1-4",
id: "111",
parentId: "106",
},
{
name: "A-FACP1-5",
id: "112",
parentId: "106",
},
{
name: "A-FACP2-1",
id: "113",
parentId: "106",
},
{
name: "A-FACP2-2",
id: "114",
parentId: "106",
},
{
name: "A-FACP2-3",
id: "116",
parentId: "106",
},
{
name: "A-FACP2-4",
id: "117",
parentId: "106",
},
{
name: "A-FACP2-5",
id: "118",
parentId: "106",
},
{
name: "A-FACP2-6",
id: "119",
parentId: "106",
},
{
name: "C1-04ACP1-1",
id: "120",
parentId: "107",
},
{
name: "C1-04ACP1-2",
id: "121",
parentId: "107",
},
{
name: "C1-04ACP1-3",
id: "122",
parentId: "107",
},
{
name: "C1-04ACP1-4",
id: "123",
parentId: "107",
},
{
name: "C1-04ACP1-5",
id: "124",
parentId: "107",
},
];
this.options = Object.keys(this.buildingList).map((item, index) => {
return { return {
label: this.buildingList[index].name, label: buildArr[index].name,
value: this.buildingList[index].id, value: this.buildingList[index].id,
parentId: this.buildingList[index].parentId, parentId: this.buildingList[index].parentId,
}; };
}); });
// }); });
}, },
// //
selectDataList(val) { selectDataList(val) {
@ -594,16 +666,18 @@ export default {
}; };
// //
getAreaList(data).then((res) => { getAreaList(data).then((res) => {
console.log(res.data.data, "sssssssssssssss");
this.energyEcharts(res.data.data); this.energyEcharts(res.data.data);
}); });
}, },
// //
changeCamera(path) { changeCamera(path) {
this.cameraBig = path; this.cameraBigUrl = path;
this.cameraBigShow = true; this.cameraBigShow = true;
}, },
closeCamer() { closeCamer() {
this.cameraBigShow = false; this.cameraBigShow = false;
this.$refs.camersBig.closeVideo();
}, },
// //
warnSelect(index) { warnSelect(index) {
@ -663,7 +737,7 @@ export default {
//mqtt //mqtt
upmqttData(val) { upmqttData(val) {
let icon = null; let icon = null;
var warnListMqtt = [] var warnListMqtt = [];
warnListMqtt = Object.keys(val).map((item, index) => { warnListMqtt = Object.keys(val).map((item, index) => {
if (val[index].AlarmLevel == 1) { if (val[index].AlarmLevel == 1) {
val[index].AlarmLevel = "一级"; val[index].AlarmLevel = "一级";
@ -686,9 +760,9 @@ export default {
risk: val[index].AlarmLevel, risk: val[index].AlarmLevel,
}; };
}); });
console.log("warnListMqtt",warnListMqtt) console.log("warnListMqtt", warnListMqtt);
for (let i = 0; i < warnListMqtt.length; i++) { for (let i = 0; i < warnListMqtt.length; i++) {
this.warnList.splice(0,0,warnListMqtt[i]); this.warnList.splice(0, 0, warnListMqtt[i]);
} }
}, },
// //
@ -1374,7 +1448,10 @@ export default {
} }
}, },
}, },
components: {}, components: {
camera,
cameraBig,
},
}; };
</script> </script>
@ -1546,9 +1623,8 @@ export default {
background: url(../assets/images/warnDottedLine.png) no-repeat; background: url(../assets/images/warnDottedLine.png) no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
overflow: auto; overflow: auto;
.warnListContent { .warnListContent {
height: 25%; height: 27%;
width: 100%; width: 100%;
border: 1px dashed #fff; border: 1px dashed #fff;
color: #fff; color: #fff;

View File

@ -40,9 +40,9 @@
:key="index" :key="index"
class="equipmentEnergy" class="equipmentEnergy"
> >
<img src="../assets/images/anFangAc.png" class="securityImg"/> <img src="../assets/images/anFangAc.png" class="securityImg" />
<!-- <div class="securitySupervision">安防监管</div> --> <!-- <div class="securitySupervision">安防监管</div> -->
<div class="securitySupervision">{{item.tit}}</div> <div class="securitySupervision">{{ item.tit }}</div>
<div class="securityCount"> <div class="securityCount">
<div <div
class="securityList" class="securityList"
@ -56,7 +56,6 @@
</el-carousel-item> </el-carousel-item>
</el-carousel> </el-carousel>
<!-- </div> --> <!-- </div> -->
</div> </div>
<div class="leftTwo"> <div class="leftTwo">
<div class="title" style="height: 8%">预警视频监控联动</div> <div class="title" style="height: 8%">预警视频监控联动</div>
@ -160,8 +159,15 @@
width: 100%; width: 100%;
justify-content: flex-start; justify-content: flex-start;
" "
>设备内容:<span ><span style="white-space: nowrap">设备内容:</span
style="color: rgb(0, 255, 255); margin-left: 5%" ><span
style="
color: rgb(0, 255, 255);
margin-left: 5%;
display: flex;
justify-content: flex-end;
text-align: left;
"
>{{ item.position }}</span >{{ item.position }}</span
></span ></span
> >
@ -186,15 +192,17 @@
</template> </template>
<script> <script>
import { GetLevelAlarm , getSecurityAlarmCount} from "../api/index"; import { GetLevelAlarm, getSecurityAlarmCount } from "../api/index";
import { getHikvision } from "../api/haikang";
export default { export default {
name: "security", name: "security",
data() { data() {
return { return {
securityList: [ securityList: [
{ {
tit:'摄像头监管', tit: "摄像头监管",
security:[{ security: [
{
name: "", name: "",
count: "", count: "",
}, },
@ -218,11 +226,12 @@ export default {
name: "摄像头昨日报警数", name: "摄像头昨日报警数",
count: "0", count: "0",
}, },
] ],
}, },
{ {
tit:'门禁监管', tit: "门禁监管",
security:[{ security: [
{
name: "", name: "",
count: "", count: "",
}, },
@ -246,8 +255,9 @@ export default {
name: "门禁昨日报警数", name: "门禁昨日报警数",
count: "0", count: "0",
}, },
] ],
} },
], ],
warnCameraList: [ warnCameraList: [
@ -326,21 +336,43 @@ export default {
status: "已解除", status: "已解除",
}, },
], ],
alarmFirstLevel:[], alarmFirstLevel: [],
alarmSecondLevel:[], alarmSecondLevel: [],
alarmThirdLevel:[], alarmThirdLevel: [],
}; };
}, },
mounted() { mounted() {
this.getAnfang();
// //
this.getFireWarnList() this.getPoliceList();
this.getFireWarnList();
// //
this.getPoliceList()
// //
this.getAlarmCount() this.getAlarmCount();
window.alarmFirstLevel = this.alarmFirstLevel window.alarmFirstLevel = this.alarmFirstLevel;
window.alarmSecondLevel= this.alarmSecondLevel window.alarmSecondLevel = this.alarmSecondLevel;
window.alarmThirdLevel= this.alarmThirdLevel window.alarmThirdLevel = this.alarmThirdLevel;
},
watch: {
alarmFirstLevel(val) {
// resize使
console.log("alarmFirstLevel", val);
if (val.length != 0) {
this.upmqttData(val);
}
},
alarmSecondLevel(val) {
// resize使
console.log("alarmSecondLevel", val);
this.upmqttData(val);
},
alarmThirdLevel(val) {
// resize使
console.log("alarmThirdLevel", val);
this.upmqttData(val);
},
}, },
watch: { watch: {
alarmFirstLevel(val) { alarmFirstLevel(val) {
@ -365,11 +397,92 @@ export default {
}, },
methods: { methods: {
// //
getAlarmCount(){ getAlarmCount() {
getSecurityAlarmCount().then((res)=>{ getSecurityAlarmCount().then((res) => {
this.securityList[0].security[4].count = res.data.data.TodayCount this.securityList[0].security[4].count = res.data.data.VideoTodayCount;
this.securityList[0].security[5].count = res.data.data.YesterdayCount this.securityList[0].security[5].count =
}) res.data.data.VideoYesterdayCount;
this.securityList[1].security[4].count = res.data.data.DoorTodayCount;
this.securityList[1].security[5].count =
res.data.data.DoorYesterdayCount;
});
},
//线线
getAnfang() {
var indexcode = [
"13222435-8646-4006-982a-76febb4dd8a2",
"fd91efcf-9d11-4b3e-ad69-6e6c1069f4ec",
"e3043e94-c8d9-49b2-9627-7a10f15cf079",
"f5790df0-60e9-4a1f-be2f-e75d6331467d",
"05859fa6-6440-401e-950f-37ba61094c4d",
"21ff542a-ca97-4974-88e7-d52408b8a412",
"608d4d1d-a69a-4d07-82da-553914616b1d",
"5b5b43cd-a722-4eb4-b3f2-3b60fd1357ad",
"f524c8df-42f9-4f89-8594-cad8e3cdb37f",
"71ced52a-f04e-4d74-834c-8e329485106b",
"8763ebb7-4bc6-4022-80df-a38804f58d39",
"f349ab39-aa64-4e4f-ae85-585f30321325",
"8ca45d1f-5919-47df-be93-8c6c4efb81a4",
"1223f3b3-3fa3-4df2-b03a-058fcb62b4c9",
"1fc85a1e-1084-4cc2-91a4-ec2b5e74c5a2",
"b7bb3c6c-ceeb-4fc9-a37e-c7d075fd4ede",
"beac672d-7555-49fc-bc97-d873fcc8eb48",
"5a9e819d-af8d-45ea-9a77-bd36a2168e20",
"17e8a2a0-079b-4e70-bde6-24911980e1b2",
"d16fe1ce-4251-4cfb-8316-9380196942e1",
"266a956e-cb4f-47f4-8ab8-ecbbb6f4a3f7",
"a2038008-e1db-4666-8902-c69af1d7cc50",
"9273528b-9fa9-4877-8eb0-1595e3accf83",
"be26abf3-c2dd-41d3-ace1-b8a2006d663c",
"46ba67a9-e4d0-48ab-b837-255bb963860a",
"fe6e6dab-4ec7-47c1-a286-8ff661f8b8f6",
];
let dataList = {
path: "/artemis/api/resource/v2/door/search",
data: {
regionIndexCodes: indexcode,
pageNo: 1,
pageSize: 1000,
},
};
let indexCodeList = [];
getHikvision(dataList).then((res) => {
console.log("getHikvision", res.data.result.data.list);
res.data.result.data.list.forEach((item, index) => {
indexCodeList.push(item.indexCode);
});
let doorStatusList = {
path: "/artemis/api/acs/v1/door/states",
data: {
doorIndexCodes: indexCodeList,
},
};
let doorTotal = 0;
let doorOnLine = 0;
let offLine = 0;
let doorTotalList = [];
let doorOnLineList = [];
let offLineList = [];
getHikvision(doorStatusList).then((res) => {
console.log(res.data.authDoorList, "门禁状态数量");
for (let i = 0; i < res.data.authDoorList.length; i++) {
//
doorTotalList.push(res.data.authDoorList);
if (res.data.authDoorList[i].doorState == 3) {
//线
offLineList.push(res.data.authDoorList[i].doorState);
}
}
//
doorTotal = doorTotalList.length;
//线
offLine = offLineList.length;
//线
doorOnLine = doorTotal - offLine;
console.log(doorTotal, offLine, doorOnLine, "门禁数量==========");
});
});
}, },
videoChange(index) { videoChange(index) {
this.warnCameraList.forEach((item, i) => { this.warnCameraList.forEach((item, i) => {
@ -379,72 +492,79 @@ export default {
index index
].icon = require("../assets/images/anFang/videoAc.png"); ].icon = require("../assets/images/anFang/videoAc.png");
}, },
// //
getFireWarnList(){ getFireWarnList() {
let params = { let params = {
AlarmLevel: "", AlarmLevel: "",
DeviceTypes:'消防' DeviceTypes: "消防",
} };
GetLevelAlarm(params).then((res) => { GetLevelAlarm(params).then((res) => {
let icon = null let icon = null;
this.fireWarnList = Object.keys(res.data.data).map((item, index) => { this.fireWarnList = Object.keys(res.data.data).map((item, index) => {
if (res.data.data[index].Status == 0) { if (res.data.data[index].Status == 0) {
res.data.data[index].Status = "未处理"; res.data.data[index].Status = "未处理";
icon = require("../assets/images/jieNengImg/warnWhite.png") icon = require("../assets/images/jieNengImg/warnWhite.png");
}else{ } else {
res.data.data[index].Status = "已处理"; res.data.data[index].Status = "已处理";
icon = require("../assets/images/jieNengImg/warnBlue.png") icon = require("../assets/images/jieNengImg/warnBlue.png");
} }
return { return {
icon: icon, icon: icon,
time: this.$moment(res.data.data[index].AlarmTime).format("YYYY-MM-DD HH:mm:ss"), time: this.$moment(res.data.data[index].AlarmTime).format(
"YYYY-MM-DD HH:mm:ss"
),
DeviceType: res.data.data[index].DeviceType, DeviceType: res.data.data[index].DeviceType,
// position: res.data.data[index].DeviceType, // position: res.data.data[index].DeviceType,
position: res.data.data[index].AlarmName, position: res.data.data[index].AlarmName,
// status: res.data.data[index].AlarmLevel, // status: res.data.data[index].AlarmLevel,
status: res.data.data[index].Status, status: res.data.data[index].Status,
AlarmLevel: res.data.data[index].AlarmLevel,
}; };
}); });
}); });
}, },
// //
getPoliceList(){ getPoliceList() {
let params = { let params = {
AlarmLevel: "", AlarmLevel: "",
DeviceTypes:'门禁,视频监控' DeviceTypes: "门禁,视频监控",
} };
GetLevelAlarm(params).then((res) => { GetLevelAlarm(params).then((res) => {
let icon = null let icon = null;
this.policeList = Object.keys(res.data.data).map((item, index) => { this.policeList = Object.keys(res.data.data).map((item, index) => {
if (res.data.data[index].Status == 0) { if (res.data.data[index].Status == 0) {
res.data.data[index].Status = "未处理"; res.data.data[index].Status = "未处理";
icon = require("../assets/images/jieNengImg/warnWhite.png") icon = require("../assets/images/jieNengImg/warnWhite.png");
}else{ } else {
res.data.data[index].Status = "已处理"; res.data.data[index].Status = "已处理";
icon = require("../assets/images/jieNengImg/warnBlue.png") icon = require("../assets/images/jieNengImg/warnBlue.png");
} }
return { return {
icon: icon, icon: icon,
time: this.$moment(res.data.data[index].AlarmTime).format("YYYY-MM-DD HH:mm:ss"), time: this.$moment(res.data.data[index].AlarmTime).format(
"YYYY-MM-DD HH:mm:ss"
),
DeviceType: res.data.data[index].DeviceType, DeviceType: res.data.data[index].DeviceType,
position: res.data.data[index].AlarmName, position: res.data.data[index].AlarmName,
// status: res.data.data[index].AlarmLevel, // status: res.data.data[index].AlarmLevel,
status: res.data.data[index].Status, status: res.data.data[index].Status,
AlarmLevel: res.data.data[index].AlarmLevel,
}; };
}); });
}); });
}, },
//mqtt //mqtt
upmqttData(val) { upmqttData(val) {
let icon = null let icon = null;
var warnListMqtt = [] var warnListMqtt = [];
warnListMqtt = Object.keys(val).map((item, index) => { warnListMqtt = Object.keys(val).map((item, index) => {
if (val[index].Status == 0) { if (val[index].Status == 0) {
val[index].Status = "未处理"; val[index].Status = "未处理";
icon = require("../assets/images/jieNengImg/warnWhite.png") icon = require("../assets/images/jieNengImg/warnWhite.png");
}else{ } else {
val[index].Status = "已处理"; val[index].Status = "已处理";
icon = require("../assets/images/jieNengImg/warnBlue.png") icon = require("../assets/images/jieNengImg/warnBlue.png");
} }
if (val[index].AlarmLevel == 1) { if (val[index].AlarmLevel == 1) {
val[index].AlarmLevel = "一级"; val[index].AlarmLevel = "一级";
@ -455,20 +575,23 @@ export default {
} }
return { return {
icon: icon, icon: icon,
time: this.$moment(val[index].AlarmTime).format("YYYY-MM-DD HH:mm:ss"), time: this.$moment(val[index].AlarmTime).format(
"YYYY-MM-DD HH:mm:ss"
),
position: val[index].AlarmName, position: val[index].AlarmName,
DeviceType: val[index].DeviceType, DeviceType: val[index].DeviceType,
status: val[index].Status, status: val[index].Status,
AlarmLevel: val[index].AlarmLevel,
}; };
}); });
console.log("warnListMqtt",warnListMqtt) console.log("warnListMqtt", warnListMqtt);
for (let i = 0; i < warnListMqtt.length; i++) { for (let i = 0; i < warnListMqtt.length; i++) {
if(warnListMqtt[i].AlarmLevel=='三级'){ if (warnListMqtt[i].AlarmLevel == "三级") {
this.policeList.splice(0,0,warnListMqtt[i]); this.policeList.splice(0, 0, warnListMqtt[i]);
this.getAlarmCount() this.getAlarmCount();
} }
if(warnListMqtt[i].DeviceType=='消防'){ if (warnListMqtt[i].DeviceType == "消防") {
this.fireWarnList.splice(0,0,warnListMqtt[i]); this.fireWarnList.splice(0, 0, warnListMqtt[i]);
} }
} }
}, },
@ -522,9 +645,9 @@ export default {
/deep/ .el-carousel__indicators--horizontal { /deep/ .el-carousel__indicators--horizontal {
display: none; display: none;
} }
.securityImg{ .securityImg {
position: absolute; position: absolute;
left:10%; left: 10%;
} }
.securitySupervision { .securitySupervision {
width: 50%; width: 50%;
@ -651,6 +774,7 @@ export default {
padding-right: 20%; padding-right: 20%;
box-sizing: border-box; box-sizing: border-box;
color: #fff; color: #fff;
font-size: 0.7rem;
} }
} }
::-webkit-scrollbar { ::-webkit-scrollbar {

View File

@ -16,6 +16,7 @@ module.exports = {
proxy: { proxy: {
'/api': { //代理的名字 '/api': { //代理的名字
target:'http://172.16.1.253:12308/api/', target:'http://172.16.1.253:12308/api/',
// target:'http://138.227.208.100:12308/api/',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite:{ pathRewrite:{
@ -31,7 +32,8 @@ module.exports = {
} }
}, },
'/video': { //代理的名字 '/video': { //代理的名字
target:'http://172.16.1.253:12308/api/', // target:'http://172.16.1.253:12308/api/',
target:'http://138.227.208.100:12307/',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite:{ pathRewrite:{