Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
holo-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xinkong
holo-web
Commits
6ba2997c
Commit
6ba2997c
authored
Sep 20, 2024
by
ninglx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
按需求改动超限 & 处理bug
parent
2dc3308f
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
743 additions
and
397 deletions
+743
-397
package-lock.json
wj-manage-web/package-lock.json
+321
-85
loopVideo.vue
wj-manage-web/src/components/Standard/loopVideo.vue
+2
-1
messageBoxes.vue
wj-manage-web/src/views/situation/floatData/messageBoxes.vue
+104
-63
index.vue
wj-manage-web/src/views/situation/index.vue
+196
-166
vehicleDetail.vue
wj-manage-web/src/views/situation/mapPopup/vehicleDetail.vue
+13
-0
index.vue
wj-manage-web/src/views/situation/sigalTraceVideos/index.vue
+107
-82
No files found.
wj-manage-web/package-lock.json
View file @
6ba2997c
...
@@ -422,19 +422,17 @@
...
@@ -422,19 +422,17 @@
}
}
},
},
"node_modules/@babel/helper-string-parser": {
"node_modules/@babel/helper-string-parser": {
"version": "7.22.5",
"version": "7.24.8",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"dev": true,
"engines": {
"engines": {
"node": ">=6.9.0"
"node": ">=6.9.0"
}
}
},
},
"node_modules/@babel/helper-validator-identifier": {
"node_modules/@babel/helper-validator-identifier": {
"version": "7.22.5",
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"dev": true,
"engines": {
"engines": {
"node": ">=6.9.0"
"node": ">=6.9.0"
}
}
...
@@ -505,9 +503,12 @@
...
@@ -505,9 +503,12 @@
}
}
},
},
"node_modules/@babel/parser": {
"node_modules/@babel/parser": {
"version": "7.22.10",
"version": "7.25.6",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.6.tgz",
"integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==",
"integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
"dependencies": {
"@babel/types": "^7.25.6"
},
"bin": {
"bin": {
"parser": "bin/babel-parser.js"
"parser": "bin/babel-parser.js"
},
},
...
@@ -1813,13 +1814,12 @@
...
@@ -1813,13 +1814,12 @@
}
}
},
},
"node_modules/@babel/types": {
"node_modules/@babel/types": {
"version": "7.22.10",
"version": "7.25.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.6.tgz",
"integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==",
"integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
"dev": true,
"dependencies": {
"dependencies": {
"@babel/helper-string-parser": "^7.2
2.5
",
"@babel/helper-string-parser": "^7.2
4.8
",
"@babel/helper-validator-identifier": "^7.2
2.5
",
"@babel/helper-validator-identifier": "^7.2
4.7
",
"to-fast-properties": "^2.0.0"
"to-fast-properties": "^2.0.0"
},
},
"engines": {
"engines": {
...
@@ -1940,9 +1940,9 @@
...
@@ -1940,9 +1940,9 @@
}
}
},
},
"node_modules/@jridgewell/sourcemap-codec": {
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.
4.15
",
"version": "1.
5.0
",
"resolved": "https://registry.npm
js.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15
.tgz",
"resolved": "https://registry.npm
mirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0
.tgz",
"integrity": "sha512-
eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg
==",
"integrity": "sha512-
gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ
==",
"dev": true
"dev": true
},
},
"node_modules/@jridgewell/trace-mapping": {
"node_modules/@jridgewell/trace-mapping": {
...
@@ -2926,14 +2926,76 @@
...
@@ -2926,14 +2926,76 @@
"node": ">=4"
"node": ">=4"
}
}
},
},
"node_modules/@vue/compiler-core": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
"integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@babel/parser": "^7.24.7",
"@vue/shared": "3.4.38",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-core/node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"optional": true,
"peer": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
"integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@vue/compiler-core": "3.4.38",
"@vue/shared": "3.4.38"
}
},
"node_modules/@vue/compiler-sfc": {
"node_modules/@vue/compiler-sfc": {
"version": "2.7.14",
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
"integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
"integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"dependencies": {
"@babel/parser": "^7.18.4",
"@babel/parser": "^7.24.7",
"postcss": "^8.4.14",
"@vue/compiler-core": "3.4.38",
"source-map": "^0.6.1"
"@vue/compiler-dom": "3.4.38",
"@vue/compiler-ssr": "3.4.38",
"@vue/shared": "3.4.38",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.10",
"postcss": "^8.4.40",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
"integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@vue/compiler-dom": "3.4.38",
"@vue/shared": "3.4.38"
}
}
},
},
"node_modules/@vue/component-compiler-utils": {
"node_modules/@vue/component-compiler-utils": {
...
@@ -3013,6 +3075,14 @@
...
@@ -3013,6 +3075,14 @@
"webpack": ">=4.0.0"
"webpack": ">=4.0.0"
}
}
},
},
"node_modules/@vue/shared": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.38.tgz",
"integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
"dev": true,
"optional": true,
"peer": true
},
"node_modules/@vue/web-component-wrapper": {
"node_modules/@vue/web-component-wrapper": {
"version": "1.3.0",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
"resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
...
@@ -3982,6 +4052,15 @@
...
@@ -3982,6 +4052,15 @@
"node": ">=8"
"node": ">=8"
}
}
},
},
"node_modules/bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"dependencies": {
"file-uri-to-path": "1.0.0"
}
},
"node_modules/blob.js": {
"node_modules/blob.js": {
"version": "1.0.1",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/blob.js/-/blob.js-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/blob.js/-/blob.js-1.0.1.tgz",
...
@@ -7070,6 +7149,14 @@
...
@@ -7070,6 +7149,14 @@
"node": ">=4.0"
"node": ">=4.0"
}
}
},
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true,
"optional": true,
"peer": true
},
"node_modules/esutils": {
"node_modules/esutils": {
"version": "2.0.3",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
...
@@ -7526,6 +7613,12 @@
...
@@ -7526,6 +7613,12 @@
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
},
"node_modules/file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
"node_modules/filesize": {
"node_modules/filesize": {
"version": "3.6.1",
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
...
@@ -10025,6 +10118,17 @@
...
@@ -10025,6 +10118,17 @@
"npm": ">=5"
"npm": ">=5"
}
}
},
},
"node_modules/magic-string": {
"version": "0.30.11",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz",
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/make-dir": {
"node_modules/make-dir": {
"version": "3.1.0",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
...
@@ -10503,10 +10607,16 @@
...
@@ -10503,10 +10607,16 @@
"thenify-all": "^1.0.0"
"thenify-all": "^1.0.0"
}
}
},
},
"node_modules/nan": {
"version": "2.20.0",
"resolved": "https://registry.npmmirror.com/nan/-/nan-2.20.0.tgz",
"integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
"optional": true
},
"node_modules/nanoid": {
"node_modules/nanoid": {
"version": "3.3.
6
",
"version": "3.3.
7
",
"resolved": "https://registry.npm
js.org/nanoid/-/nanoid-3.3.6
.tgz",
"resolved": "https://registry.npm
mirror.com/nanoid/-/nanoid-3.3.7
.tgz",
"integrity": "sha512-
BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA
==",
"integrity": "sha512-
eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g
==",
"funding": [
"funding": [
{
{
"type": "github",
"type": "github",
...
@@ -11250,9 +11360,9 @@
...
@@ -11250,9 +11360,9 @@
"dev": true
"dev": true
},
},
"node_modules/picocolors": {
"node_modules/picocolors": {
"version": "1.0.
0
",
"version": "1.0.
1
",
"resolved": "https://registry.npm
js.org/picocolors/-/picocolors-1.0.0
.tgz",
"resolved": "https://registry.npm
mirror.com/picocolors/-/picocolors-1.0.1
.tgz",
"integrity": "sha512-
1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ
=="
"integrity": "sha512-
anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew
=="
},
},
"node_modules/picomatch": {
"node_modules/picomatch": {
"version": "2.3.1",
"version": "2.3.1",
...
@@ -11361,9 +11471,9 @@
...
@@ -11361,9 +11471,9 @@
}
}
},
},
"node_modules/postcss": {
"node_modules/postcss": {
"version": "8.4.
28
",
"version": "8.4.
41
",
"resolved": "https://registry.npm
js.org/postcss/-/postcss-8.4.28
.tgz",
"resolved": "https://registry.npm
mirror.com/postcss/-/postcss-8.4.41
.tgz",
"integrity": "sha512-
Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw
==",
"integrity": "sha512-
TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ
==",
"funding": [
"funding": [
{
{
"type": "opencollective",
"type": "opencollective",
...
@@ -11379,9 +11489,9 @@
...
@@ -11379,9 +11489,9 @@
}
}
],
],
"dependencies": {
"dependencies": {
"nanoid": "^3.3.
6
",
"nanoid": "^3.3.
7
",
"picocolors": "^1.0.
0
",
"picocolors": "^1.0.
1
",
"source-map-js": "^1.
0.2
"
"source-map-js": "^1.
2.0
"
},
},
"engines": {
"engines": {
"node": "^10 || ^12 || >=14"
"node": "^10 || ^12 || >=14"
...
@@ -14179,9 +14289,9 @@
...
@@ -14179,9 +14289,9 @@
}
}
},
},
"node_modules/source-map-js": {
"node_modules/source-map-js": {
"version": "1.
0.2
",
"version": "1.
2.0
",
"resolved": "https://registry.npm
js.org/source-map-js/-/source-map-js-1.0.2
.tgz",
"resolved": "https://registry.npm
mirror.com/source-map-js/-/source-map-js-1.2.0
.tgz",
"integrity": "sha512-
R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw
==",
"integrity": "sha512-
itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg
==",
"engines": {
"engines": {
"node": ">=0.10.0"
"node": ">=0.10.0"
}
}
...
@@ -15004,7 +15114,6 @@
...
@@ -15004,7 +15114,6 @@
"version": "2.0.0",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"dev": true,
"engines": {
"engines": {
"node": ">=4"
"node": ">=4"
}
}
...
@@ -15895,6 +16004,16 @@
...
@@ -15895,6 +16004,16 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
"dev": true
},
},
"node_modules/vue/node_modules/@vue/compiler-sfc": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
"integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
"dependencies": {
"@babel/parser": "^7.18.4",
"postcss": "^8.4.14",
"source-map": "^0.6.1"
}
},
"node_modules/vuex": {
"node_modules/vuex": {
"version": "3.6.2",
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz",
...
@@ -17264,16 +17383,14 @@
...
@@ -17264,16 +17383,14 @@
}
}
},
},
"@babel/helper-string-parser": {
"@babel/helper-string-parser": {
"version": "7.22.5",
"version": "7.24.8",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
"integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
"integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ=="
"dev": true
},
},
"@babel/helper-validator-identifier": {
"@babel/helper-validator-identifier": {
"version": "7.22.5",
"version": "7.24.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
"integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
"integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
"dev": true
},
},
"@babel/helper-validator-option": {
"@babel/helper-validator-option": {
"version": "7.22.5",
"version": "7.22.5",
...
@@ -17328,9 +17445,12 @@
...
@@ -17328,9 +17445,12 @@
}
}
},
},
"@babel/parser": {
"@babel/parser": {
"version": "7.22.10",
"version": "7.25.6",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.25.6.tgz",
"integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ=="
"integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==",
"requires": {
"@babel/types": "^7.25.6"
}
},
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.22.5",
"version": "7.22.5",
...
@@ -18204,13 +18324,12 @@
...
@@ -18204,13 +18324,12 @@
}
}
},
},
"@babel/types": {
"@babel/types": {
"version": "7.22.10",
"version": "7.25.6",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.25.6.tgz",
"integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==",
"integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==",
"dev": true,
"requires": {
"requires": {
"@babel/helper-string-parser": "^7.2
2.5
",
"@babel/helper-string-parser": "^7.2
4.8
",
"@babel/helper-validator-identifier": "^7.2
2.5
",
"@babel/helper-validator-identifier": "^7.2
4.7
",
"to-fast-properties": "^2.0.0"
"to-fast-properties": "^2.0.0"
}
}
},
},
...
@@ -18306,9 +18425,9 @@
...
@@ -18306,9 +18425,9 @@
"dev": true
"dev": true
},
},
"@jridgewell/sourcemap-codec": {
"@jridgewell/sourcemap-codec": {
"version": "1.
4.15
",
"version": "1.
5.0
",
"resolved": "https://registry.npm
js.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15
.tgz",
"resolved": "https://registry.npm
mirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0
.tgz",
"integrity": "sha512-
eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg
==",
"integrity": "sha512-
gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ
==",
"dev": true
"dev": true
},
},
"@jridgewell/trace-mapping": {
"@jridgewell/trace-mapping": {
...
@@ -19127,14 +19246,72 @@
...
@@ -19127,14 +19246,72 @@
}
}
}
}
},
},
"@vue/compiler-core": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.38.tgz",
"integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"@babel/parser": "^7.24.7",
"@vue/shared": "3.4.38",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
},
"dependencies": {
"entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"optional": true,
"peer": true
}
}
},
"@vue/compiler-dom": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz",
"integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"@vue/compiler-core": "3.4.38",
"@vue/shared": "3.4.38"
}
},
"@vue/compiler-sfc": {
"@vue/compiler-sfc": {
"version": "2.7.14",
"version": "3.4.38",
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz",
"integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
"integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"requires": {
"@babel/parser": "^7.18.4",
"@babel/parser": "^7.24.7",
"postcss": "^8.4.14",
"@vue/compiler-core": "3.4.38",
"source-map": "^0.6.1"
"@vue/compiler-dom": "3.4.38",
"@vue/compiler-ssr": "3.4.38",
"@vue/shared": "3.4.38",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.10",
"postcss": "^8.4.40",
"source-map-js": "^1.2.0"
}
},
"@vue/compiler-ssr": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz",
"integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"@vue/compiler-dom": "3.4.38",
"@vue/shared": "3.4.38"
}
}
},
},
"@vue/component-compiler-utils": {
"@vue/component-compiler-utils": {
...
@@ -19201,6 +19378,14 @@
...
@@ -19201,6 +19378,14 @@
"dev": true,
"dev": true,
"requires": {}
"requires": {}
},
},
"@vue/shared": {
"version": "3.4.38",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.38.tgz",
"integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==",
"dev": true,
"optional": true,
"peer": true
},
"@vue/web-component-wrapper": {
"@vue/web-component-wrapper": {
"version": "1.3.0",
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
"resolved": "https://registry.npmjs.org/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
...
@@ -19974,6 +20159,15 @@
...
@@ -19974,6 +20159,15 @@
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"optional": true
"optional": true
},
},
"bindings": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
},
"blob.js": {
"blob.js": {
"version": "1.0.1",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/blob.js/-/blob.js-1.0.1.tgz",
"resolved": "https://registry.npmjs.org/blob.js/-/blob.js-1.0.1.tgz",
...
@@ -22435,6 +22629,14 @@
...
@@ -22435,6 +22629,14 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="
},
},
"estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true,
"optional": true,
"peer": true
},
"esutils": {
"esutils": {
"version": "2.0.3",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
...
@@ -22803,6 +23005,12 @@
...
@@ -22803,6 +23005,12 @@
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz",
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
"integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
},
},
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
"filesize": {
"filesize": {
"version": "3.6.1",
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
"resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz",
...
@@ -24717,6 +24925,17 @@
...
@@ -24717,6 +24925,17 @@
}
}
}
}
},
},
"magic-string": {
"version": "0.30.11",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.11.tgz",
"integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"make-dir": {
"make-dir": {
"version": "3.1.0",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
...
@@ -25098,10 +25317,16 @@
...
@@ -25098,10 +25317,16 @@
"thenify-all": "^1.0.0"
"thenify-all": "^1.0.0"
}
}
},
},
"nan": {
"version": "2.20.0",
"resolved": "https://registry.npmmirror.com/nan/-/nan-2.20.0.tgz",
"integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==",
"optional": true
},
"nanoid": {
"nanoid": {
"version": "3.3.
6
",
"version": "3.3.
7
",
"resolved": "https://registry.npm
js.org/nanoid/-/nanoid-3.3.6
.tgz",
"resolved": "https://registry.npm
mirror.com/nanoid/-/nanoid-3.3.7
.tgz",
"integrity": "sha512-
BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA
=="
"integrity": "sha512-
eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g
=="
},
},
"nanomatch": {
"nanomatch": {
"version": "1.2.13",
"version": "1.2.13",
...
@@ -25692,9 +25917,9 @@
...
@@ -25692,9 +25917,9 @@
"dev": true
"dev": true
},
},
"picocolors": {
"picocolors": {
"version": "1.0.
0
",
"version": "1.0.
1
",
"resolved": "https://registry.npm
js.org/picocolors/-/picocolors-1.0.0
.tgz",
"resolved": "https://registry.npm
mirror.com/picocolors/-/picocolors-1.0.1
.tgz",
"integrity": "sha512-
1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ
=="
"integrity": "sha512-
anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew
=="
},
},
"picomatch": {
"picomatch": {
"version": "2.3.1",
"version": "2.3.1",
...
@@ -25775,13 +26000,13 @@
...
@@ -25775,13 +26000,13 @@
"integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg=="
"integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg=="
},
},
"postcss": {
"postcss": {
"version": "8.4.
28
",
"version": "8.4.
41
",
"resolved": "https://registry.npm
js.org/postcss/-/postcss-8.4.28
.tgz",
"resolved": "https://registry.npm
mirror.com/postcss/-/postcss-8.4.41
.tgz",
"integrity": "sha512-
Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw
==",
"integrity": "sha512-
TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ
==",
"requires": {
"requires": {
"nanoid": "^3.3.
6
",
"nanoid": "^3.3.
7
",
"picocolors": "^1.0.
0
",
"picocolors": "^1.0.
1
",
"source-map-js": "^1.
0.2
"
"source-map-js": "^1.
2.0
"
}
}
},
},
"postcss-calc": {
"postcss-calc": {
...
@@ -28058,9 +28283,9 @@
...
@@ -28058,9 +28283,9 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
},
"source-map-js": {
"source-map-js": {
"version": "1.
0.2
",
"version": "1.
2.0
",
"resolved": "https://registry.npm
js.org/source-map-js/-/source-map-js-1.0.2
.tgz",
"resolved": "https://registry.npm
mirror.com/source-map-js/-/source-map-js-1.2.0
.tgz",
"integrity": "sha512-
R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw
=="
"integrity": "sha512-
itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg
=="
},
},
"source-map-resolve": {
"source-map-resolve": {
"version": "0.5.3",
"version": "0.5.3",
...
@@ -28727,8 +28952,7 @@
...
@@ -28727,8 +28952,7 @@
"to-fast-properties": {
"to-fast-properties": {
"version": "2.0.0",
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
"integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
"dev": true
},
},
"to-object-path": {
"to-object-path": {
"version": "0.3.0",
"version": "0.3.0",
...
@@ -29304,6 +29528,18 @@
...
@@ -29304,6 +29528,18 @@
"requires": {
"requires": {
"@vue/compiler-sfc": "2.7.14",
"@vue/compiler-sfc": "2.7.14",
"csstype": "^3.1.0"
"csstype": "^3.1.0"
},
"dependencies": {
"@vue/compiler-sfc": {
"version": "2.7.14",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
"integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
"requires": {
"@babel/parser": "^7.18.4",
"postcss": "^8.4.14",
"source-map": "^0.6.1"
}
}
}
}
},
},
"vue-clipboard2": {
"vue-clipboard2": {
wj-manage-web/src/components/Standard/loopVideo.vue
View file @
6ba2997c
...
@@ -61,7 +61,8 @@ export default {
...
@@ -61,7 +61,8 @@ export default {
starttime
:
this
.
replaceTimeGap
(
this
.
timeModel
.
startTime
),
starttime
:
this
.
replaceTimeGap
(
this
.
timeModel
.
startTime
),
endtime
:
this
.
replaceTimeGap
(
this
.
timeModel
.
endTime
),
endtime
:
this
.
replaceTimeGap
(
this
.
timeModel
.
endTime
),
});
});
console
.
log
(
"
video response
"
,
response
);
console
.
log
(
"
video response 请求完成
"
,
response
);
this
.
$emit
(
'
loadEnd
'
)
this
.
videoUrl
=
response
.
content
;
this
.
videoUrl
=
response
.
content
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$refs
.
loopVideoPlayer
.
load
();
this
.
$refs
.
loopVideoPlayer
.
load
();
...
...
wj-manage-web/src/views/situation/floatData/messageBoxes.vue
View file @
6ba2997c
...
@@ -24,17 +24,17 @@
...
@@ -24,17 +24,17 @@
</div>
-->
</div>
-->
</div>
</div>
<div
class=
"left_box aside"
:class=
"[
{ hide_left: !show }]">
<div
class=
"left_box aside"
:class=
"[
{ hide_left: !show }]">
<regional-index
class=
"item"
/>
<regional-index
class=
"item"
/>
<traffic-flow
class=
"item"
/>
<traffic-flow
class=
"item"
/>
<ped-and-no-vehicles
class=
"item"
/>
<ped-and-no-vehicles
class=
"item"
/>
</div>
</div>
<div
class=
"right_box aside"
:class=
"[
{ hide_right: !show }]">
<div
class=
"right_box aside"
:class=
"[
{ hide_right: !show }]">
<in-transit
class=
"item"
/>
<in-transit
class=
"item"
/>
<traffic-event
class=
"item"
/>
<traffic-event
class=
"item"
/>
<msg-card
class=
"item item-warningData"
title=
"告警信息"
>
<msg-card
class=
"item item-warningData"
title=
"告警信息"
>
<div
class=
"full-w full-h"
v-loading=
"alarmLoading"
element-loading-spinner=
"el-icon-loading"
<div
class=
"full-w full-h"
v-loading=
"alarmLoading"
element-loading-spinner=
"el-icon-loading"
element-loading-background=
"rgba(0, 0, 0, 0.8)"
>
element-loading-background=
"rgba(0, 0, 0, 0.8)"
>
<el-tabs
@
tab-click=
'tabClick'
v-model=
'activeName'
style=
"height: 100%;"
>
<el-tabs
v-model=
'activeName'
style=
"height: 100%;"
>
<el-tab-pane
name=
'11'
key=
"1"
style=
"height: 100%;"
>
<el-tab-pane
name=
'11'
key=
"1"
style=
"height: 100%;"
>
<template
slot=
"label"
>
<template
slot=
"label"
>
<div
style=
"display: flex"
>
<div
style=
"display: flex"
>
...
@@ -51,9 +51,9 @@
...
@@ -51,9 +51,9 @@
</
template
>
</
template
>
<div
class=
"traffics"
>
<div
class=
"traffics"
>
<vue-seamless-scroll
ref=
'11'
class=
"warningMsg"
:data=
"warningData"
:class-option=
"optionSetting"
<vue-seamless-scroll
ref=
'11'
class=
"warningMsg"
:data=
"warningData"
:class-option=
"optionSetting"
v-show=
"warningData.length"
>
v-show=
"warningData.length"
>
<li
v-for=
"(item, index) of warningData"
:key=
"index"
@
mouseover=
"addWarningPopup(item)"
<li
v-for=
"(item, index) of warningData"
:key=
"index"
@
mouseover=
"addWarningPopup(item)"
@
mouseout=
"delWarningPopup(item)"
>
@
mouseout=
"delWarningPopup(item)"
>
<div
class=
"warningItem"
>
<div
class=
"warningItem"
>
<div
class=
"left-type"
:class=
"[
<div
class=
"left-type"
:class=
"[
{ acci: item.eventType === '疑似事故' },
{ acci: item.eventType === '疑似事故' },
...
@@ -85,7 +85,7 @@
...
@@ -85,7 +85,7 @@
</li>
</li>
</vue-seamless-scroll>
</vue-seamless-scroll>
<div
class=
"emptyText"
v-show=
"!warningData.length"
>
<div
class=
"emptyText"
v-show=
"!warningData.length"
>
<img
:src=
"require('../../../assets/images/holo/svg/noWarning.svg')"
/>
<img
:src=
"require('../../../assets/images/holo/svg/noWarning.svg')"
/>
<div>
暂无告警信息
</div>
<div>
暂无告警信息
</div>
</div>
</div>
</div>
</div>
...
@@ -104,21 +104,21 @@
...
@@ -104,21 +104,21 @@
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<div
class=
"traffics"
>
<div
class=
"traffics
s
"
>
<vue-seamless-scroll
ref=
'22'
class=
"warningMsg"
:data=
"overData"
:class-option=
"optionSetting1"
<!-- <vue-seamless-scroll ref='22' class="warningMsg" :data="overData" :class-option="optionSetting1"-->
v-show=
"overData.length"
>
<!-- v-show="overData.length">--
>
<
li
@
click=
"playOverHistoryTrace(item)"
v-for=
"(item, index) of overData"
class=
"overItem"
<
div
@
click=
"playOverHistoryTrace(item)"
v-for=
"(item, index) of overData"
class=
"overItem"
:key=
"index"
>
:key=
"index"
>
<div
class=
'topLicense'
>
<span>
预警时间:
</span>
{{ item.timeStamp }}
</div>
<div
class=
'topLicense'
><span>
预警时间:
</span>
{{ item.timeStamp }}
</div>
<div
class=
'detailMsg'
>
<div
class=
'detailMsg'
>
<div><span>
车牌:
</span>
{{ item.plateNo }}
</div>
<div><span>
车牌:
</span>
{{ item.plateNo }}
</div>
<div
:title=
'item.inDirName'
><span>
行驶方向:
</span>
{{ item.inDirName }}
</div>
<div
:title=
'item.inDirName'
><span>
行驶方向:
</span>
{{ item.inDirName }}
</div>
<div><span>
超限类型:
</span>
{{
item.type
}}
</div>
<div><span>
超限类型:
</span>
{{
dict.overCarType[item.type]
}}
</div>
</div>
</div>
</
li
>
</
div
>
</vue-seamless-scroll
>
<!-- </vue-seamless-scroll>--
>
<div
class=
"emptyText"
v-show=
"!overData.length"
>
<div
class=
"emptyText"
v-show=
"!overData.length"
>
<img
:src=
"require('../../../assets/images/holo/svg/noWarning.svg')"
/>
<img
:src=
"require('../../../assets/images/holo/svg/noWarning.svg')"
/>
<div>
暂无超限信息
</div>
<div>
暂无超限信息
</div>
</div>
</div>
</div>
</div>
...
@@ -134,8 +134,8 @@
...
@@ -134,8 +134,8 @@
import
dict
from
"
@/config/holo/dictionary
"
;
import
dict
from
"
@/config/holo/dictionary
"
;
import
msgCard
from
"
../../../components/Standard/msg-card.vue
"
;
import
msgCard
from
"
../../../components/Standard/msg-card.vue
"
;
import
vueSeamlessScroll
from
'
vue-seamless-scroll
'
import
vueSeamlessScroll
from
'
vue-seamless-scroll
'
import
{
eventAlarm
,
getAlarmOverDatas
,
getOverDatas
}
from
"
../../../dao/situation
"
;
import
{
eventAlarm
,
getAlarmOverDatas
,
getOverDatas
}
from
"
../../../dao/situation
"
;
import
{
initWs
}
from
"
../../../config/holo/websocket
"
;
import
{
initWs
}
from
"
../../../config/holo/websocket
"
;
import
RegionalIndex
from
"
./msgLeft/regionalIndex.vue
"
;
import
RegionalIndex
from
"
./msgLeft/regionalIndex.vue
"
;
import
TrafficFlow
from
"
./msgLeft/trafficFlow.vue
"
;
import
TrafficFlow
from
"
./msgLeft/trafficFlow.vue
"
;
import
pedAndNoVehicles
from
"
./msgLeft/pedAndNoVehicles.vue
"
;
import
pedAndNoVehicles
from
"
./msgLeft/pedAndNoVehicles.vue
"
;
...
@@ -158,16 +158,29 @@ export default {
...
@@ -158,16 +158,29 @@ export default {
dict
,
dict
,
activeName
:
'
11
'
,
activeName
:
'
11
'
,
overData
:
[
overData
:
[
{
"
plateNo
"
:
"
京A895413
"
,
"
inDirName
"
:
"
东向西
"
,
"
type
"
:
"
201
"
,
"
timeStamp
"
:
"
2024-08-27 15:39:18
"
},
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "504", "timeStamp": "2024-08-27 15:39:18" },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "504", "timeStamp": "2024-08-27 15:39:18" },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "504", "timeStamp": "2024-08-27 15:39:18" },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
// { "plateNo": "京A895413", "inDirName": "东向西", "type": "105", "timeStamp": "2024-08-27 15:39:18",length:10 },
],
],
alarmLoading
:
true
,
alarmLoading
:
true
,
overLoading
:
true
,
overLoading
:
true
,
init
:
true
,
init
:
true
,
// 告警信息
// 告警信息
warningData
:
[],
warningData
:
[
// {id:1},
// {id:1},
// {id:1},
// {id:1},
// {id:1},
// {id:1},
// {id:1},
// {id:1},
// {id:1},
],
lastWarningData
:
[],
lastWarningData
:
[],
topDataSecond
:
{},
topDataSecond
:
{},
topDataMin
:
{},
topDataMin
:
{},
...
@@ -190,7 +203,7 @@ export default {
...
@@ -190,7 +203,7 @@ export default {
},
},
optionSetting1
()
{
optionSetting1
()
{
return
{
return
{
step
:
0
.5
,
// 数值越大速度滚动越快
step
:
0
,
// 数值越大速度滚动越快
limitMoveNum
:
4
,
// 开始无缝滚动的数据量 this.dataList.length
limitMoveNum
:
4
,
// 开始无缝滚动的数据量 this.dataList.length
hoverStop
:
true
,
// 是否开启鼠标悬停stop
hoverStop
:
true
,
// 是否开启鼠标悬停stop
direction
:
1
,
// 0向下 1向上 2向左 3向右
direction
:
1
,
// 0向下 1向上 2向左 3向右
...
@@ -235,27 +248,33 @@ export default {
...
@@ -235,27 +248,33 @@ export default {
let
year
,
month
,
day
,
hour
,
min
,
sec
;
let
year
,
month
,
day
,
hour
,
min
,
sec
;
year
=
time
.
getFullYear
();
year
=
time
.
getFullYear
();
month
=
month
=
time
.
getMonth
()
+
1
<
10
time
.
getMonth
()
+
1
<
10
?
"
0
"
+
(
time
.
getMonth
()
+
1
)
?
"
0
"
+
(
time
.
getMonth
()
+
1
)
:
time
.
getMonth
()
+
1
;
:
time
.
getMonth
()
+
1
;
day
=
time
.
getDate
()
<
10
?
"
0
"
+
time
.
getDate
()
:
time
.
getDate
();
day
=
time
.
getDate
()
<
10
?
"
0
"
+
time
.
getDate
()
:
time
.
getDate
();
hour
=
time
.
getHours
()
<
10
?
"
0
"
+
time
.
getHours
()
:
time
.
getHours
();
hour
=
time
.
getHours
()
<
10
?
"
0
"
+
time
.
getHours
()
:
time
.
getHours
();
min
=
min
=
time
.
getMinutes
()
<
10
?
"
0
"
+
time
.
getMinutes
()
:
time
.
getMinutes
();
time
.
getMinutes
()
<
10
?
"
0
"
+
time
.
getMinutes
()
:
time
.
getMinutes
();
sec
=
sec
=
time
.
getSeconds
()
<
10
?
"
0
"
+
time
.
getSeconds
()
:
time
.
getSeconds
();
time
.
getSeconds
()
<
10
?
"
0
"
+
time
.
getSeconds
()
:
time
.
getSeconds
();
let
dateTime
=
`
${
year
}
-
${
month
}
-
${
day
}
${
hour
}
:
${
min
}
:
${
sec
}
`
;
//+year + month + day + hour + min + sec;
let
dateTime
=
`
${
year
}
-
${
month
}
-
${
day
}
${
hour
}
:
${
min
}
:
${
sec
}
`
;
//+year + month + day + hour + min + sec;
return
dateTime
;
return
dateTime
;
},
},
playOverHistoryTrace
(
row
)
{
playOverHistoryTrace
(
row
)
{
let
wsSend
=
{
let
wsSend
=
{
"
dataType
"
:
"
OVER_RUN
"
,
//数据类型【固定值】
"
dataType
"
:
"
OVER_RUN
"
,
//数据类型【固定值】
"
timeStamp
"
:
row
.
timeStamp
,
//时间
"
timeStamp
"
:
this
.
timeFormat
(
new
Date
(
new
Date
(
row
.
timeStamp
).
getTime
()
-
1000
*
10
)),
'
endTime
'
:
this
.
timeFormat
(
new
Date
(
new
Date
(
row
.
timeStamp
).
getTime
()
+
1000
*
10
)),
'
endTime
'
:
this
.
timeFormat
(
new
Date
(
new
Date
(
row
.
timeStamp
).
getTime
()
+
1000
*
10
)),
"
globalId
"
:
row
.
globalId
,
//车辆ID
"
globalId
"
:
row
.
globalId
,
//车辆ID
"
overType
"
:
row
.
type
//超限类型
"
overType
"
:
row
.
type
,
//超限类型
'
urls
'
:
row
.
videoUrls
,
// 'urls': ['video/1.mp4','video/1.mp4'],
}
if
(
row
.
type
==
'
105
'
)
{
wsSend
.
vehicleHeight
=
row
.
length
}
else
{
wsSend
.
vehicleWidth
=
row
.
length
}
}
console
.
log
(
'
close real time
'
,
row
,
wsSend
);
this
.
$emit
(
"
playOverHistoryTrace
"
,
wsSend
)
this
.
$emit
(
"
playOverHistoryTrace
"
,
wsSend
)
},
},
// 获取超限列表
// 获取超限列表
...
@@ -272,9 +291,6 @@ export default {
...
@@ -272,9 +291,6 @@ export default {
}
}
})
})
},
},
tabClick
(
e
)
{
this
.
$refs
[
e
.
name
].
reset
()
},
initHelMetSocket
()
{
initHelMetSocket
()
{
this
.
helMetSocket
=
initWs
({
this
.
helMetSocket
=
initWs
({
name
:
"
callHelmet
"
,
name
:
"
callHelmet
"
,
...
@@ -306,7 +322,7 @@ export default {
...
@@ -306,7 +322,7 @@ export default {
return
match
?.
name
||
"
未定义
"
;
return
match
?.
name
||
"
未定义
"
;
},
},
addWarningPopup
(
item
)
{
addWarningPopup
(
item
)
{
this
.
$emit
(
"
addWarningPopup
"
,
item
,
{
type
:
"
hover
"
});
this
.
$emit
(
"
addWarningPopup
"
,
item
,
{
type
:
"
hover
"
});
},
},
delWarningPopup
(
item
)
{
delWarningPopup
(
item
)
{
this
.
$emit
(
"
delWarningPopup
"
,
item
.
eventSerialNumber
);
this
.
$emit
(
"
delWarningPopup
"
,
item
.
eventSerialNumber
);
...
@@ -314,21 +330,21 @@ export default {
...
@@ -314,21 +330,21 @@ export default {
diff
(
oldData
,
newData
)
{
diff
(
oldData
,
newData
)
{
// id 只在 newData 中存在且不在 oldData 中存在的即为 add
// id 只在 newData 中存在且不在 oldData 中存在的即为 add
return
newData
.
filter
(
return
newData
.
filter
(
(
e
)
=>
!
oldData
.
find
((
c
)
=>
c
.
startTime
===
e
.
startTime
)
(
e
)
=>
!
oldData
.
find
((
c
)
=>
c
.
startTime
===
e
.
startTime
)
);
);
},
},
getEventAlarm
()
{
getEventAlarm
()
{
// this.alarmLoading = true
// this.alarmLoading = true
eventAlarm
().
then
((
res
)
=>
{
eventAlarm
().
then
((
res
)
=>
{
this
.
alarmLoading
=
false
this
.
alarmLoading
=
false
//
console.log("事件告警", res.content);
console
.
log
(
"
事件告警
"
,
res
.
content
);
this
.
warningData
=
res
.
content
;
this
.
warningData
=
res
.
content
;
if
(
!
this
.
init
)
{
if
(
!
this
.
init
)
{
if
(
this
.
lastWarningData
.
length
!==
res
.
content
.
length
)
{
if
(
this
.
lastWarningData
.
length
!==
res
.
content
.
length
)
{
// 最新发生的告警信息
// 最新发生的告警信息
let
newMegs
=
this
.
diff
(
this
.
lastWarningData
,
this
.
warningData
);
let
newMegs
=
this
.
diff
(
this
.
lastWarningData
,
this
.
warningData
);
for
(
let
item
of
newMegs
)
{
for
(
let
item
of
newMegs
)
{
this
.
$emit
(
"
addWarningPopup
"
,
item
,
{
type
:
"
auto
"
});
this
.
$emit
(
"
addWarningPopup
"
,
item
,
{
type
:
"
auto
"
});
}
}
}
}
}
}
...
@@ -337,14 +353,14 @@ export default {
...
@@ -337,14 +353,14 @@ export default {
});
});
},
},
getOverDataTopSecond
()
{
getOverDataTopSecond
()
{
getOverDatas
({
type
:
1
}).
then
((
res
)
=>
{
getOverDatas
({
type
:
1
}).
then
((
res
)
=>
{
if
(
res
.
content
)
{
if
(
res
.
content
)
{
this
.
topDataSecond
=
res
.
content
;
this
.
topDataSecond
=
res
.
content
;
}
}
});
});
},
},
getOverDataTopMin
()
{
getOverDataTopMin
()
{
getOverDatas
({
type
:
2
}).
then
((
res
)
=>
{
getOverDatas
({
type
:
2
}).
then
((
res
)
=>
{
if
(
res
.
content
)
{
if
(
res
.
content
)
{
this
.
topDataMin
=
res
.
content
;
this
.
topDataMin
=
res
.
content
;
}
}
...
@@ -473,8 +489,27 @@ export default {
...
@@ -473,8 +489,27 @@ export default {
display: flex;
display: flex;
align-items: center;
align-items: center;
justify-content: center;
justify-content: center;
overflow: auto;
width: 100%;
width: 100%;
height: 100%;
height: 100%;
.warningMsg {
overflow: hidden;
}
}
.trafficss {
color: rgba(155, 177, 212, 1);
//display: flex;
//align-items: center;
//justify-content: center;
overflow: auto;
width: 100%;
height: 100%;
.warningMsg {
overflow: auto;
}
}
}
::v-deep .el-tabs__item {
::v-deep .el-tabs__item {
...
@@ -488,9 +523,9 @@ export default {
...
@@ -488,9 +523,9 @@ export default {
::v-deep .el-tabs__active-bar {
::v-deep .el-tabs__active-bar {
background: linear-gradient(90deg,
background: linear-gradient(90deg,
transparent 0%,
transparent 0%,
rgba(41, 110, 194, 1) 50%,
rgba(41, 110, 194, 1) 50%,
transparent 100%);
transparent 100%);
}
}
::v-deep .el-tabs__header {
::v-deep .el-tabs__header {
...
@@ -535,6 +570,8 @@ export default {
...
@@ -535,6 +570,8 @@ export default {
display: flex;
display: flex;
align-items: center;
align-items: center;
justify-content: center;
justify-content: center;
background-color: rgba(24, 144, 255, 0.4);
color: rgba(24, 144, 255, 1);
span {
span {
display: inline-block;
display: inline-block;
...
@@ -595,6 +632,7 @@ export default {
...
@@ -595,6 +632,7 @@ export default {
}
}
.message {
.message {
border: 1px solid rgba(24, 144, 255, 0.4);
padding: 0 0 0 10px;
padding: 0 0 0 10px;
// border: 1px solid rgba(60, 27, 37, 1);
// border: 1px solid rgba(60, 27, 37, 1);
display: flex;
display: flex;
...
@@ -691,6 +729,9 @@ export default {
...
@@ -691,6 +729,9 @@ export default {
}
}
}
}
}
}
.overItem:last-child{
margin-bottom: 0;
}
}
}
.map-mask {
.map-mask {
...
@@ -702,19 +743,19 @@ export default {
...
@@ -702,19 +743,19 @@ export default {
z-index: 10;
z-index: 10;
pointer-events: none;
pointer-events: none;
background-image: linear-gradient(90deg,
background-image: linear-gradient(90deg,
rgba(3, 11, 25, 1) 0%,
rgba(3, 11, 25, 1) 0%,
rgba(3, 11, 25, 0.2) 8%,
rgba(3, 11, 25, 0.2) 8%,
rgba(3, 11, 25, 0) 12%,
rgba(3, 11, 25, 0) 12%,
rgba(3, 11, 25, 0) 50%,
rgba(3, 11, 25, 0) 50%,
rgba(3, 11, 25, 0) 88%,
rgba(3, 11, 25, 0) 88%,
rgba(3, 11, 25, 0.2) 92%,
rgba(3, 11, 25, 0.2) 92%,
rgba(3, 11, 25, 1) 100%),
rgba(3, 11, 25, 1) 100%),
linear-gradient(0deg,
linear-gradient(0deg,
rgba(3, 11, 25, 1) 0%,
rgba(3, 11, 25, 1) 0%,
rgba(3, 11, 25, 0.2) 8%,
rgba(3, 11, 25, 0.2) 8%,
rgba(3, 11, 25, 0) 12%,
rgba(3, 11, 25, 0) 12%,
rgba(3, 11, 25, 0) 80%,
rgba(3, 11, 25, 0) 80%,
rgba(3, 11, 25, 0.5) 95%,
rgba(3, 11, 25, 0.5) 95%,
rgba(3, 11, 25, 1) 100%);
rgba(3, 11, 25, 1) 100%);
}
}
</
style
>
</
style
>
wj-manage-web/src/views/situation/index.vue
View file @
6ba2997c
<
template
>
<
template
>
<div
class=
"main situation"
v-loading.fullscreen.lock=
"loading"
element-loading-text=
"数据加载中..."
<div
class=
"main situation"
v-loading.fullscreen.lock=
"loading"
element-loading-text=
"数据加载中..."
element-loading-spinner=
"el-icon-loading"
element-loading-background=
"rgba(0, 0, 0, 0.8)"
>
element-loading-spinner=
"el-icon-loading"
element-loading-background=
"rgba(0, 0, 0, 0.8)"
>
<track-switcher
:detetors=
"detetorsArray"
:boxShow=
"boxesShow"
@
timeChange=
"timeChange"
v-show=
"trackSwitcherVis"
<track-switcher
:detetors=
"detetorsArray"
:boxShow=
"boxesShow"
@
timeChange=
"timeChange"
v-show=
"trackSwitcherVis"
@
closeRealTime=
"closeRealTime"
@
openRealTime=
"openRealTime"
></track-switcher>
@
closeRealTime=
"closeRealTime"
@
openRealTime=
"openRealTime"
></track-switcher>
<situation-time
v-show=
"currentCheck === 'first' && timeState"
class=
"situationTime"
:time=
"situationTimeVal"
/>
<situation-time
v-show=
"currentCheck === 'first' && timeState"
class=
"situationTime"
:time=
"situationTimeVal"
/>
<wMap
:mapId=
"'situation-map'"
ref=
"wMap"
/>
<wMap
:mapId=
"'situation-map'"
ref=
"wMap"
/>
<!--左右图表组件-->
<!--左右图表组件-->
<message-boxes
@
playOverHistoryTrace=
"playOverHistoryTrace"
@
delWarningPopup=
"delWarningPopup"
<message-boxes
@
playOverHistoryTrace=
"playOverHistoryTrace"
@
delWarningPopup=
"delWarningPopup"
@
addWarningPopup=
"addWarningPopup"
:show=
"boxesShow"
/>
@
addWarningPopup=
"addWarningPopup"
:show=
"boxesShow"
/>
<!--图层切换按钮-->
<!--图层切换按钮-->
<layers-switch
ref=
"switch"
:show=
"boxesShow"
@
changeCheck=
"changeCheck"
@
visibleChange=
"visibleChange"
<layers-switch
ref=
"switch"
:show=
"boxesShow"
@
changeCheck=
"changeCheck"
@
visibleChange=
"visibleChange"
:class=
"boxesShow ? 'generalSwitch' : 'rightSwitch'"
/>
:class=
"boxesShow ? 'generalSwitch' : 'rightSwitch'"
/>
<!--视频播放组件-->
<!--视频播放组件-->
<video-list
ref=
"videoList"
v-if=
"showCameras.length"
@
updateCamera=
"updateCameraCPB"
@
resetCamera=
"resetCamera"
<video-list
ref=
"videoList"
v-if=
"showCameras.length"
@
updateCamera=
"updateCameraCPB"
@
resetCamera=
"resetCamera"
@
delVideo=
"deleteVideo"
:showCameras=
"showCameras"
/>
@
delVideo=
"deleteVideo"
:showCameras=
"showCameras"
/>
<!--路口详情-->
<!--路口详情-->
<cross-detail
v-if=
"dialogVisible.crossDetail"
@
actionFinished=
"actionFinished"
dialogId=
"crossDetail"
<cross-detail
v-if=
"dialogVisible.crossDetail"
@
actionFinished=
"actionFinished"
dialogId=
"crossDetail"
:crossDetailData=
"crossDetailData"
/>
:crossDetailData=
"crossDetailData"
/>
<!--底部交通事件趋势分析-->
<!--底部交通事件趋势分析-->
<traffic-events-tend
@
updateHeatMap=
"refreshEventLayer"
v-if=
"currentCheck === 'third'"
/>
<traffic-events-tend
@
updateHeatMap=
"refreshEventLayer"
v-if=
"currentCheck === 'third'"
/>
<!--设备图例控制-->
<!--设备图例控制-->
<equipment-switch
@
equipmentChange=
"equipmentChange"
v-if=
"currentCheck === 'fourth'"
/>
<equipment-switch
@
equipmentChange=
"equipmentChange"
v-if=
"currentCheck === 'fourth'"
/>
<!--单车超限历史轨迹视频-->
<!--单车超限历史轨迹视频-->
<sigalTraceVideos
:key=
"sigalKey"
v-if=
"showHisVid"
:timeDuration=
"timeDuration"
></sigalTraceVideos>
<sigalTraceVideos
@
isReady=
"singalHistoryVideoReady"
:urls=
"hisUrls"
:key=
"sigalKey"
v-if=
"showHisVid"
></sigalTraceVideos>
</div>
</div>
</
template
>
</
template
>
...
@@ -34,7 +35,7 @@ import MessageBoxes from "./floatData/messageBoxes.vue";
...
@@ -34,7 +35,7 @@ import MessageBoxes from "./floatData/messageBoxes.vue";
import
CrossDetail
from
"
./crossDetail.vue
"
;
import
CrossDetail
from
"
./crossDetail.vue
"
;
import
VideoList
from
"
./floatData/videoList.vue
"
;
import
VideoList
from
"
./floatData/videoList.vue
"
;
import
TrafficEventsTend
from
"
./floatData/trafficEventsTend.vue
"
;
import
TrafficEventsTend
from
"
./floatData/trafficEventsTend.vue
"
;
import
{
initWs
}
from
"
../../config/holo/websocket
"
;
import
{
initWs
}
from
"
../../config/holo/websocket
"
;
import
dict
from
"
../../config/holo/dictionary
"
;
import
dict
from
"
../../config/holo/dictionary
"
;
import
mapAssets
from
"
../../config/holo/mapAssets
"
;
import
mapAssets
from
"
../../config/holo/mapAssets
"
;
import
*
as
mapTools
from
"
../../utils/mapboxTools
"
;
import
*
as
mapTools
from
"
../../utils/mapboxTools
"
;
...
@@ -59,7 +60,7 @@ import {
...
@@ -59,7 +60,7 @@ import {
equip_radar
,
equip_radar
,
getDetetors
,
getDetetors
,
}
from
"
../../dao/situation
"
;
}
from
"
../../dao/situation
"
;
import
{
convertPointsToGeo
,
convertPointsWktToGeo
,
convertToLineWithWkt
}
from
"
../../utils/mapboxTools
"
;
import
{
convertPointsToGeo
,
convertPointsWktToGeo
,
convertToLineWithWkt
}
from
"
../../utils/mapboxTools
"
;
const
VehiclePopup
=
Vue
.
extend
(
vehicleDetail
);
const
VehiclePopup
=
Vue
.
extend
(
vehicleDetail
);
const
EquipmentPopup
=
Vue
.
extend
(
equipmentPopup
);
const
EquipmentPopup
=
Vue
.
extend
(
equipmentPopup
);
...
@@ -68,11 +69,11 @@ const AlarmPopup = Vue.extend(alarmPopup)
...
@@ -68,11 +69,11 @@ const AlarmPopup = Vue.extend(alarmPopup)
let
pulsingDots
=
[];
let
pulsingDots
=
[];
const
canvasImages
=
[
const
canvasImages
=
[
{
size
:
250
,
color
:
"
252, 1, 26
"
},
{
size
:
250
,
color
:
"
252, 1, 26
"
},
{
size
:
400
,
color
:
"
255,235,59
"
},
{
size
:
400
,
color
:
"
255,235,59
"
},
{
size
:
400
,
color
:
"
255, 141, 26
"
},
{
size
:
400
,
color
:
"
255, 141, 26
"
},
{
size
:
400
,
color
:
"
227, 5, 5
"
},
{
size
:
400
,
color
:
"
227, 5, 5
"
},
{
size
:
400
,
color
:
"
24, 144, 255
"
},
{
size
:
400
,
color
:
"
24, 144, 255
"
},
];
];
for
(
let
i
=
0
;
i
<
canvasImages
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
canvasImages
.
length
;
i
++
)
{
let
size
=
canvasImages
[
i
].
size
;
let
size
=
canvasImages
[
i
].
size
;
...
@@ -108,18 +109,18 @@ for (let i = 0; i < canvasImages.length; i++) {
...
@@ -108,18 +109,18 @@ for (let i = 0; i < canvasImages.length; i++) {
pulsingDots
.
push
(
pulsingDot
);
pulsingDots
.
push
(
pulsingDot
);
}
}
let
map
,
let
map
,
equipPopup
=
null
,
// 设备弹窗
equipPopup
=
null
,
// 设备弹窗
popupInstance
=
null
,
// 设备弹窗组件实例 用来更新数据与销毁
popupInstance
=
null
,
// 设备弹窗组件实例 用来更新数据与销毁
vehiclePopups
=
{},
vehiclePopups
=
{},
popupVises
=
{},
popupVises
=
{},
vehiclePopupInstances
=
{},
vehiclePopupInstances
=
{},
licenseLabel
=
{},
// 车牌号label
licenseLabel
=
{},
// 车牌号label
vehicleModels
=
{},
// 车辆model
vehicleModels
=
{},
// 车辆model
vehicleModelTypes
=
{},
vehicleModelTypes
=
{},
lastFrameTime
=
null
,
lastFrameTime
=
null
,
noTrackMsg
=
null
,
noTrackMsg
=
null
,
AlarmPopupIns
=
{},
AlarmPopupIns
=
{},
trackTimer
=
null
;
// 轨迹心跳检测
trackTimer
=
null
;
// 轨迹心跳检测
export
default
{
export
default
{
mixins
:
[
mixins
:
[
...
@@ -154,10 +155,11 @@ export default {
...
@@ -154,10 +155,11 @@ export default {
return
{
return
{
sigalKey
:
''
,
sigalKey
:
''
,
showHisVid
:
false
,
showHisVid
:
false
,
timeDuration
:
{
hisUrls
:
[],
startTime
:
""
,
// timeDuration: {
endTime
:
""
,
// startTime: "",
},
// endTime: "",
// },
// Mixin 公用数据
// Mixin 公用数据
crossGeo
:
null
,
//所有路口lnglat geojson集合
crossGeo
:
null
,
//所有路口lnglat geojson集合
sockets
:
[],
sockets
:
[],
...
@@ -206,6 +208,7 @@ export default {
...
@@ -206,6 +208,7 @@ export default {
cLocation
:
""
,
cLocation
:
""
,
overCarsPoints
:
{},
// 储存超限车辆动态经纬度
overCarsPoints
:
{},
// 储存超限车辆动态经纬度
backToRealTimer
:
null
,
// 存储回到实时车流倒计时器
backToRealTimer
:
null
,
// 存储回到实时车流倒计时器
historyWsToSend
:
null
,
};
};
},
},
watch
:
{
watch
:
{
...
@@ -213,18 +216,35 @@ export default {
...
@@ -213,18 +216,35 @@ export default {
boxesShow
(
val
)
{
boxesShow
(
val
)
{
if
(
val
)
{
if
(
val
)
{
document
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-bottom-right
"
)[
0
]
.
getElementsByClassName
(
"
mapboxgl-ctrl-bottom-right
"
)[
0
]
.
classList
.
remove
(
"
mapboxgl-ctrl-bottom-right-hide-box
"
);
.
classList
.
remove
(
"
mapboxgl-ctrl-bottom-right-hide-box
"
);
}
else
{
}
else
{
document
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-bottom-right
"
)[
0
]
.
getElementsByClassName
(
"
mapboxgl-ctrl-bottom-right
"
)[
0
]
.
classList
.
add
(
"
mapboxgl-ctrl-bottom-right-hide-box
"
);
.
classList
.
add
(
"
mapboxgl-ctrl-bottom-right-hide-box
"
);
}
}
},
},
},
},
created
()
{
created
()
{
},
},
mounted
()
{
mounted
()
{
this
.
$EventBus
.
$on
(
"
emitPopupClose
"
,
({
id
,
overRun
})
=>
{
console
.
log
(
'
eventbus event received...
'
,
id
)
vehiclePopups
[
`popup
${
id
}
`
]?.
remove
();
delete
vehiclePopups
[
`popup
${
id
}
`
];
delete
this
.
highLightCarTracks
[
id
]
delete
this
.
overCarsPoints
[
id
]
popupVises
[
`popup
${
id
}
`
]
=
false
;
// 如果当前正在播放超限历史轨迹 则停止
if
(
this
.
showHisVid
&&
overRun
)
{
console
.
log
(
'
close his ws...
'
)
clearTimeout
(
this
.
backToRealTimer
)
this
.
backToRealTimer
=
null
this
.
closeWs
(
'
callCar1
'
).
then
(()
=>
{
this
.
openRealTime
()
})
}
})
getDetetors
().
then
((
res
)
=>
{
getDetetors
().
then
((
res
)
=>
{
this
.
detetorsArray
=
res
.
content
;
this
.
detetorsArray
=
res
.
content
;
});
});
...
@@ -241,9 +261,9 @@ export default {
...
@@ -241,9 +261,9 @@ export default {
];
];
for
(
let
item
of
needDicts
)
{
for
(
let
item
of
needDicts
)
{
queue
.
push
(
queue
.
push
(
this
.
$store
.
dispatch
(
"
QUERY_DICT
"
,
{
this
.
$store
.
dispatch
(
"
QUERY_DICT
"
,
{
type
:
item
,
type
:
item
,
})
})
);
);
}
}
Promise
.
all
(
queue
).
then
(()
=>
{
Promise
.
all
(
queue
).
then
(()
=>
{
...
@@ -276,7 +296,7 @@ export default {
...
@@ -276,7 +296,7 @@ export default {
// 重度拥堵: 3,
// 重度拥堵: 3,
// 疑似事故: 4,
// 疑似事故: 4,
// };
// };
let
resItem
=
Object
.
assign
({},
item
,
{
longitude
:
item
.
lng
,
latitude
:
item
.
lat
,
type
:
3
})
let
resItem
=
Object
.
assign
({},
item
,
{
longitude
:
item
.
lng
,
latitude
:
item
.
lat
,
type
:
3
})
mapTools
.
addOrUpdateWarningWave
(
map
,
[
resItem
],
item
.
eventSerialNumber
);
mapTools
.
addOrUpdateWarningWave
(
map
,
[
resItem
],
item
.
eventSerialNumber
);
// 上报产生的告警 弹窗提醒 定时销毁
// 上报产生的告警 弹窗提醒 定时销毁
let
popup
=
new
mapboxgl
.
Popup
({
let
popup
=
new
mapboxgl
.
Popup
({
...
@@ -285,10 +305,10 @@ export default {
...
@@ -285,10 +305,10 @@ export default {
offset
:
[
0
,
0
],
offset
:
[
0
,
0
],
});
});
popup
popup
.
setLngLat
([
item
.
lng
,
item
.
lat
])
.
setLngLat
([
item
.
lng
,
item
.
lat
])
.
setHTML
(
'
<div id="alarm_popup"></div>
'
)
.
setHTML
(
'
<div id="alarm_popup"></div>
'
)
.
addTo
(
map
)
.
addTo
(
map
)
.
addClassName
(
"
alarmPopup
"
);
.
addClassName
(
"
alarmPopup
"
);
new
AlarmPopup
({
new
AlarmPopup
({
propsData
:
{
propsData
:
{
model
:
item
,
model
:
item
,
...
@@ -325,61 +345,73 @@ export default {
...
@@ -325,61 +345,73 @@ export default {
this
.
lastLocation
=
[];
this
.
lastLocation
=
[];
});
});
},
},
// 视频就绪后开始播放轨迹
singalHistoryVideoReady
()
{
console
.
log
(
'
视频请求完成,开始播放单车历史轨迹。。。
'
);
this
.
loading
=
false
// 播放单车历史ws
let
socket
=
initWs
({
name
:
"
callCar1
"
,
url
:
`ws://
${
window
.
wsHost
}
/holows/subscribe`
,
callback
:
this
.
callCar
,
});
socket
.
ws
.
onopen
=
()
=>
{
if
(
this
.
backToRealTimer
)
{
clearTimeout
(
this
.
backToRealTimer
)
this
.
backToRealTimer
=
null
}
this
.
backToRealTimer
=
setTimeout
(()
=>
{
// vehiclePopups[`popup${id}`]?.remove();
// delete vehiclePopups[`popup${id}`];
// delete this.highLightCarTracks[id]
// delete this.overCarsPoints[id]
// popupVises[`popup${id}`] = false;
this
.
closeWs
(
'
callCar1
'
).
then
(()
=>
{
this
.
removeVehiclePopup
()
this
.
overCarsPoints
=
{}
this
.
openRealTime
()
})
this
.
backToRealTimer
=
null
},
1000
*
20
)
if
(
socket
.
ws
.
readyState
===
1
)
{
this
.
showHisVid
=
true
this
.
sockets
.
push
(
socket
);
delete
this
.
historyWsToSend
.
urls
let
msg
=
JSON
.
stringify
(
this
.
historyWsToSend
)
socket
.
ws
.
send
(
msg
);
// socket.ws.send('{"dataType":"OVER_RUN","timeStamp":"2024-09-13 16:44:30.000","endTime":"2024-09-13 16:44:40.000","globalId":"10552117","vehicleHeight":6,"vehicleWidth":2.55,"overType":1}')
}
};
},
playOverHistoryTrace
(
sendMsg
)
{
playOverHistoryTrace
(
sendMsg
)
{
this
.
historyWsToSend
=
sendMsg
if
(
this
.
backToRealTimer
)
{
if
(
this
.
backToRealTimer
)
{
clearTimeout
(
this
.
backToRealTimer
)
clearTimeout
(
this
.
backToRealTimer
)
this
.
backToRealTimer
=
null
this
.
backToRealTimer
=
null
}
}
Promise
.
all
([
this
.
closeWs
(
'
callCar
'
),
this
.
closeWs
(
'
callCar1
'
)]).
then
(()
=>
{
Promise
.
all
([
this
.
closeWs
(
'
callCar
'
),
this
.
closeWs
(
'
callCar1
'
)]).
then
(()
=>
{
console
.
log
(
'
closed all...
'
);
console
.
log
(
'
closed all...
'
);
// todo 清除popups
this
.
removeVehiclePopup
()
this
.
overCarsPoints
=
{}
this
.
removeAllRadars
()
this
.
removeAllRadars
()
this
.
radarShow
=
false
this
.
radarShow
=
false
this
.
clearTrackTimer
();
this
.
clearTrackTimer
();
window
.
tb
?.
clear
(
null
,
true
);
window
.
tb
?.
clear
(
null
,
true
);
window
.
tb
?.
update
();
window
.
tb
?.
update
();
this
.
lastLocation
=
[];
this
.
lastLocation
=
[];
this
.
timeDuration
=
{
// 开始请求视频
startTime
:
sendMsg
.
timeStamp
,
this
.
sigalKey
=
sendMsg
.
globalId
endTime
:
sendMsg
.
endTime
,
this
.
hisUrls
=
sendMsg
.
urls
||
[]
};
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
// 播放单车历史ws
if
(
this
.
hisUrls
.
length
)
{
let
socket
=
initWs
({
this
.
loading
=
true
name
:
"
callCar1
"
,
}
else
{
url
:
`ws://
${
window
.
wsHost
}
/holows/subscribe`
,
this
.
singalHistoryVideoReady
()
callback
:
this
.
callCar
,
}
});
socket
.
ws
.
onopen
=
()
=>
{
if
(
this
.
backToRealTimer
)
{
clearTimeout
(
this
.
backToRealTimer
)
this
.
backToRealTimer
=
null
}
this
.
backToRealTimer
=
setTimeout
(()
=>
{
this
.
closeWs
(
'
callCar1
'
).
then
(()
=>
{
this
.
openRealTime
()
this
.
showHisVid
=
false
})
this
.
backToRealTimer
=
null
},
1000
*
10
)
if
(
socket
.
ws
.
readyState
===
1
)
{
this
.
sockets
.
push
(
socket
);
this
.
showHisVid
=
true
this
.
sigalKey
=
sendMsg
.
globalId
// socket.ws.send('{ dataType: "1"}');
// socket.ws.send('{"dataType":"OVER_RUN","timeStamp":"2024-09-06 15:01:17.000","endTime":"2024-09-06 15:01:27.000","globalId":"10547041","vehicleHeight":6,"vehicleWidth":2.55,"overType":1}')
socket
.
ws
.
send
(
JSON
.
stringify
(
sendMsg
));
}
};
// socket.ws.onclose = () => {
// // this.closeRealTime()
// if(this.showHisVid){
// this.showHisVid = false
// this.openRealTime()
// }
// };
})
})
})
})
},
},
openRealTime
()
{
openRealTime
()
{
this
.
registerListener
();
this
.
registerListener
();
...
@@ -393,9 +425,9 @@ export default {
...
@@ -393,9 +425,9 @@ export default {
for
(
let
item
of
equips
)
{
for
(
let
item
of
equips
)
{
if
(
map
.
getLayer
(
item
.
label
))
{
if
(
map
.
getLayer
(
item
.
label
))
{
map
.
setLayoutProperty
(
map
.
setLayoutProperty
(
item
.
label
,
item
.
label
,
"
visibility
"
,
"
visibility
"
,
item
.
check
?
"
visible
"
:
"
none
"
item
.
check
?
"
visible
"
:
"
none
"
);
);
}
}
}
}
...
@@ -450,10 +482,10 @@ export default {
...
@@ -450,10 +482,10 @@ export default {
offsetLength
=
offsetLength
+
Number
(
cameraItem
.
installHeight
);
offsetLength
=
offsetLength
+
Number
(
cameraItem
.
installHeight
);
}
}
let
translatedPoint
=
turf
.
destination
(
let
translatedPoint
=
turf
.
destination
(
this
.
cLocation
,
this
.
cLocation
,
offsetLength
,
// 相机向前偏移距离
offsetLength
,
// 相机向前偏移距离
this
.
cBearing
,
this
.
cBearing
,
{
units
:
"
meters
"
}
{
units
:
"
meters
"
}
).
geometry
.
coordinates
;
).
geometry
.
coordinates
;
map
.
flyTo
({
map
.
flyTo
({
center
:
translatedPoint
,
center
:
translatedPoint
,
...
@@ -505,14 +537,14 @@ export default {
...
@@ -505,14 +537,14 @@ export default {
}
}
for
(
let
i
=
0
;
i
<
pulsingDots
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
pulsingDots
.
length
;
i
++
)
{
if
(
map
&&
!
map
.
hasImage
(
`pulsingDot
${
i
}
`
))
if
(
map
&&
!
map
.
hasImage
(
`pulsingDot
${
i
}
`
))
map
.
addImage
(
`pulsingDot
${
i
}
`
,
pulsingDots
[
i
],
{
pixelRatio
:
2
});
map
.
addImage
(
`pulsingDot
${
i
}
`
,
pulsingDots
[
i
],
{
pixelRatio
:
2
});
}
}
// 添加map icons图片资源 ---end
// 添加map icons图片资源 ---end
this
.
loading
=
false
;
this
.
loading
=
false
;
this
.
mixDraw
(
map
);
this
.
mixDraw
(
map
);
map
.
addControl
(
map
.
addControl
(
new
mapboxgl
.
NavigationControl
({
showZoom
:
false
}),
new
mapboxgl
.
NavigationControl
({
showZoom
:
false
}),
"
bottom-right
"
"
bottom-right
"
);
);
this
.
refreshBounds
();
this
.
refreshBounds
();
// 快捷键
// 快捷键
...
@@ -522,24 +554,24 @@ export default {
...
@@ -522,24 +554,24 @@ export default {
if
(
event
.
altKey
&&
event
.
keyCode
===
82
)
{
if
(
event
.
altKey
&&
event
.
keyCode
===
82
)
{
this
.
rulerStatus
=
!
this
.
rulerStatus
;
this
.
rulerStatus
=
!
this
.
rulerStatus
;
this
.
rulerStatus
this
.
rulerStatus
?
mapTools
.
addCalibrationTail
(
map
)
?
mapTools
.
addCalibrationTail
(
map
)
:
this
.
removeLayers
(
"
calibrationTailLine,chunkSymbol,chunkText
"
);
:
this
.
removeLayers
(
"
calibrationTailLine,chunkSymbol,chunkText
"
);
}
}
// alt + x 显示隐藏绘制工具
// alt + x 显示隐藏绘制工具
if
(
event
.
altKey
&&
event
.
keyCode
===
88
)
{
if
(
event
.
altKey
&&
event
.
keyCode
===
88
)
{
this
.
boxesShow
=
false
;
this
.
boxesShow
=
false
;
if
(
if
(
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
)[
0
]
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
)[
0
]
.
style
.
display
===
"
none
"
||
.
style
.
display
===
"
none
"
||
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
)[
0
]
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
)[
0
]
.
style
.
display
===
""
.
style
.
display
===
""
)
{
)
{
document
.
getElementsByClassName
(
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
"
mapboxgl-ctrl-top-right
"
)[
0
].
style
.
display
=
"
unset
"
;
)[
0
].
style
.
display
=
"
unset
"
;
}
else
{
}
else
{
document
.
getElementsByClassName
(
document
.
getElementsByClassName
(
"
mapboxgl-ctrl-top-right
"
"
mapboxgl-ctrl-top-right
"
)[
0
].
style
.
display
=
"
none
"
;
)[
0
].
style
.
display
=
"
none
"
;
}
}
}
}
...
@@ -622,7 +654,7 @@ export default {
...
@@ -622,7 +654,7 @@ export default {
type
:
"
gltf
"
,
type
:
"
gltf
"
,
units
:
"
meters
"
,
units
:
"
meters
"
,
scale
:
0.8
,
scale
:
0.8
,
adjustment
:
{
x
:
0.5
,
y
:
1
,
z
:
-
0.5
},
adjustment
:
{
x
:
0.5
,
y
:
1
,
z
:
-
0.5
},
bbox
:
true
,
bbox
:
true
,
};
};
window
.
tb
.
loadObj
(
options
,
(
model
)
=>
{
window
.
tb
.
loadObj
(
options
,
(
model
)
=>
{
...
@@ -719,7 +751,7 @@ export default {
...
@@ -719,7 +751,7 @@ export default {
let
centerP
=
turf
.
point
([
map
.
getCenter
().
lng
,
map
.
getCenter
().
lat
]);
let
centerP
=
turf
.
point
([
map
.
getCenter
().
lng
,
map
.
getCenter
().
lat
]);
// 取最近点的crossId
// 取最近点的crossId
let
nearest
=
turf
.
nearestPoint
(
centerP
,
this
.
crossGeo
);
let
nearest
=
turf
.
nearestPoint
(
centerP
,
this
.
crossGeo
);
this
.
firstCrossClick
({
features
:
[
nearest
]
})
this
.
firstCrossClick
({
features
:
[
nearest
]
})
}
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
// 注册车辆实时ws
// 注册车辆实时ws
...
@@ -732,6 +764,7 @@ export default {
...
@@ -732,6 +764,7 @@ export default {
socket
.
ws
.
onopen
=
()
=>
{
socket
.
ws
.
onopen
=
()
=>
{
console
.
log
(
'
ws open callCar
'
)
console
.
log
(
'
ws open callCar
'
)
if
(
socket
.
ws
.
readyState
===
1
)
{
if
(
socket
.
ws
.
readyState
===
1
)
{
this
.
showHisVid
=
false
socket
.
ws
.
send
(
'
{ dataType: "1"}
'
);
socket
.
ws
.
send
(
'
{ dataType: "1"}
'
);
this
.
sockets
.
push
(
socket
);
this
.
sockets
.
push
(
socket
);
}
}
...
@@ -749,10 +782,10 @@ export default {
...
@@ -749,10 +782,10 @@ export default {
offset
:
[
0
,
-
30
],
offset
:
[
0
,
-
30
],
});
});
eventPopup
eventPopup
.
setLngLat
([
data
.
lng
,
data
.
lat
])
.
setLngLat
([
data
.
lng
,
data
.
lat
])
.
setHTML
(
'
<div id="event_popup"></div>
'
)
.
setHTML
(
'
<div id="event_popup"></div>
'
)
.
addTo
(
map
)
.
addTo
(
map
)
.
addClassName
(
"
eventPopup
"
);
.
addClassName
(
"
eventPopup
"
);
new
EventPopup
({
new
EventPopup
({
propsData
:
{
propsData
:
{
model
:
data
,
model
:
data
,
...
@@ -761,7 +794,7 @@ export default {
...
@@ -761,7 +794,7 @@ export default {
},
},
// 交通事件热力图 & 点
// 交通事件热力图 & 点
refreshEventLayer
(
type
)
{
refreshEventLayer
(
type
)
{
eventInfo
({
dayType
:
type
}).
then
((
res
)
=>
{
eventInfo
({
dayType
:
type
}).
then
((
res
)
=>
{
// 热力图 - 如果还未创建 先创建图层 赋值
// 热力图 - 如果还未创建 先创建图层 赋值
if
(
this
.
currentCheck
===
"
third
"
)
{
if
(
this
.
currentCheck
===
"
third
"
)
{
mapTools
.
addOrUpdateEventHeat
(
map
,
res
.
content
);
mapTools
.
addOrUpdateEventHeat
(
map
,
res
.
content
);
...
@@ -833,12 +866,12 @@ export default {
...
@@ -833,12 +866,12 @@ export default {
distance
=
80
;
distance
=
80
;
}
}
let
bearing
=
map
.
getBearing
();
// 平移方向,0 表示正北方向
let
bearing
=
map
.
getBearing
();
// 平移方向,0 表示正北方向
let
options
=
{
units
:
"
meters
"
};
let
options
=
{
units
:
"
meters
"
};
let
translatedPoint
=
turf
.
destination
(
let
translatedPoint
=
turf
.
destination
(
prop
.
wkt
.
split
(
"
,
"
),
prop
.
wkt
.
split
(
"
,
"
),
distance
,
distance
,
bearing
,
bearing
,
options
options
);
);
// 将地图中心点设置为平移后的点
// 将地图中心点设置为平移后的点
map
.
flyTo
({
map
.
flyTo
({
...
@@ -850,14 +883,14 @@ export default {
...
@@ -850,14 +883,14 @@ export default {
offset
:
[
0
,
-
20
],
offset
:
[
0
,
-
20
],
});
});
equipPopup
equipPopup
.
setLngLat
(
prop
.
wkt
.
split
(
"
,
"
))
.
setLngLat
(
prop
.
wkt
.
split
(
"
,
"
))
.
setHTML
(
'
<div id="equipment_popup"></div>
'
)
.
setHTML
(
'
<div id="equipment_popup"></div>
'
)
.
addTo
(
map
)
.
addTo
(
map
)
.
setMaxWidth
(
"
500
"
)
.
setMaxWidth
(
"
500
"
)
.
addClassName
(
"
equipmentPopup
"
);
.
addClassName
(
"
equipmentPopup
"
);
popupInstance
=
new
EquipmentPopup
({
popupInstance
=
new
EquipmentPopup
({
propsData
:
{
propsData
:
{
model
:
{
equip_type
:
type
,
...
prop
},
model
:
{
equip_type
:
type
,
...
prop
},
},
},
});
});
popupInstance
.
$mount
(
"
#equipment_popup
"
);
popupInstance
.
$mount
(
"
#equipment_popup
"
);
...
@@ -884,12 +917,12 @@ export default {
...
@@ -884,12 +917,12 @@ export default {
this
.
$refs
.
videoList
?.
destroyAll
();
this
.
$refs
.
videoList
?.
destroyAll
();
this
.
hideTb
();
this
.
hideTb
();
this
.
closeAllWs
()
this
.
closeAllWs
()
.
then
(()
=>
{
.
then
(()
=>
{
this
.
hideTb
();
this
.
hideTb
();
this
[
`switch
${
checkItem
.
label
}
`
]();
this
[
`switch
${
checkItem
.
label
}
`
]();
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
});
});
}
else
{
}
else
{
if
(
beforeLabel
===
"
fourth
"
)
{
if
(
beforeLabel
===
"
fourth
"
)
{
equipPopup
?.
remove
();
equipPopup
?.
remove
();
...
@@ -915,15 +948,15 @@ export default {
...
@@ -915,15 +948,15 @@ export default {
return
item
.
code
==
options
.
originalColor
;
return
item
.
code
==
options
.
originalColor
;
});
});
let
realColor
=
colorDesc
let
realColor
=
colorDesc
?
dict
.
colorMatch
[
colorDesc
.
name
]
?
dict
.
colorMatch
[
colorDesc
.
name
]
:
"
#fff
"
;
:
"
#fff
"
;
child
.
material
.
color
.
set
(
realColor
);
child
.
material
.
color
.
set
(
realColor
);
}
}
});
});
}
}
model
.
setCoords
([
options
.
longitude
,
options
.
latitude
]);
model
.
setCoords
([
options
.
longitude
,
options
.
latitude
]);
model
.
userData
.
data
=
options
;
model
.
userData
.
data
=
options
;
model
.
setRotation
({
x
:
90
,
y
:
360
-
options
.
courseAngle
-
90
,
z
:
0
});
model
.
setRotation
({
x
:
90
,
y
:
360
-
options
.
courseAngle
-
90
,
z
:
0
});
},
},
// 更新超限车辆高亮波纹底盘
// 更新超限车辆高亮波纹底盘
updateOverCarLnglat
()
{
updateOverCarLnglat
()
{
...
@@ -957,6 +990,7 @@ export default {
...
@@ -957,6 +990,7 @@ export default {
},
},
removeVehiclePopup
()
{
removeVehiclePopup
()
{
for
(
let
key
in
vehiclePopups
)
{
for
(
let
key
in
vehiclePopups
)
{
vehiclePopups
[
key
]?.
remove
();
vehiclePopups
[
key
]?.
remove
();
}
}
vehiclePopups
=
{};
vehiclePopups
=
{};
...
@@ -989,23 +1023,17 @@ export default {
...
@@ -989,23 +1023,17 @@ export default {
properties
:
data
,
properties
:
data
,
}
}
vehiclePopups
[
`popup
${
data
.
id
}
`
]
=
new
mapboxgl
.
Popup
({
vehiclePopups
[
`popup
${
data
.
id
}
`
]
=
new
mapboxgl
.
Popup
({
closeButton
:
true
,
// closeButton: true,
closeButton
:
false
,
anchor
:
"
bottom
"
,
anchor
:
"
bottom
"
,
closeOnClick
:
false
,
closeOnClick
:
false
,
offset
:
[
0
,
-
20
],
offset
:
[
0
,
-
20
],
});
});
vehiclePopups
[
`popup
${
data
.
id
}
`
]
vehiclePopups
[
`popup
${
data
.
id
}
`
]
.
setLngLat
([
data
.
longitude
,
data
.
latitude
])
.
setLngLat
([
data
.
longitude
,
data
.
latitude
])
.
setHTML
(
`<div id="vehicle_popup
${
data
.
id
}
"></div>`
)
.
setHTML
(
`<div id="vehicle_popup
${
data
.
id
}
"></div>`
)
.
addTo
(
map
)
.
addTo
(
map
)
.
addClassName
(
"
vehicleDetailPopup
"
);
.
addClassName
(
"
vehicleDetailPopup
"
);
vehiclePopups
[
`popup
${
data
.
id
}
`
].
on
(
"
close
"
,
()
=>
{
vehiclePopups
[
`popup
${
data
.
id
}
`
]
=
null
;
delete
vehiclePopups
[
`popup
${
data
.
id
}
`
];
delete
this
.
highLightCarTracks
[
data
.
id
]
delete
this
.
overCarsPoints
[
data
.
id
]
popupVises
[
`popup
${
data
.
id
}
`
]
=
false
;
});
popupVises
[
`popup
${
data
.
id
}
`
]
=
true
;
popupVises
[
`popup
${
data
.
id
}
`
]
=
true
;
vehiclePopupInstances
[
`popup
${
data
.
id
}
`
]
=
new
VehiclePopup
({
vehiclePopupInstances
[
`popup
${
data
.
id
}
`
]
=
new
VehiclePopup
({
propsData
:
{
propsData
:
{
...
@@ -1013,7 +1041,7 @@ export default {
...
@@ -1013,7 +1041,7 @@ export default {
},
},
});
});
vehiclePopupInstances
[
`popup
${
data
.
id
}
`
].
$mount
(
vehiclePopupInstances
[
`popup
${
data
.
id
}
`
].
$mount
(
`#vehicle_popup
${
data
.
id
}
`
`#vehicle_popup
${
data
.
id
}
`
);
);
}
}
},
},
...
@@ -1075,7 +1103,7 @@ export default {
...
@@ -1075,7 +1103,7 @@ export default {
}
else
{
}
else
{
this
.
clearLicense
();
this
.
clearLicense
();
this
.
removeLayers
(
this
.
removeLayers
(
"
lightLayer,lightLayerText,vehicleSelectWave,vehiclePic,waitingLayer
"
"
lightLayer,lightLayerText,vehicleSelectWave,vehiclePic,waitingLayer
"
);
);
mapTools
.
addOrUpdateVehicle
(
map
,
msg
);
mapTools
.
addOrUpdateVehicle
(
map
,
msg
);
map
.
on
(
"
click
"
,
"
vehicle
"
,
this
.
vehicleCircleClick
);
map
.
on
(
"
click
"
,
"
vehicle
"
,
this
.
vehicleCircleClick
);
...
@@ -1096,7 +1124,6 @@ export default {
...
@@ -1096,7 +1124,6 @@ export default {
}
}
// 超限车辆弹窗判断 todo
// 超限车辆弹窗判断 todo
if
(
item
.
overRun
?.
overType
)
{
if
(
item
.
overRun
?.
overType
)
{
console
.
log
(
'
检测到超限...
'
,
item
.
overRun
)
// 如果超限车辆第一次添加 则设置 popupVises[`popup${item.id}`] 为 true
// 如果超限车辆第一次添加 则设置 popupVises[`popup${item.id}`] 为 true
if
(
!
this
.
overCarsPoints
[
item
.
id
])
{
if
(
!
this
.
overCarsPoints
[
item
.
id
])
{
popupVises
[
`popup
${
item
.
id
}
`
]
=
true
popupVises
[
`popup
${
item
.
id
}
`
]
=
true
...
@@ -1106,19 +1133,21 @@ export default {
...
@@ -1106,19 +1133,21 @@ export default {
for
(
let
t
of
overArr
)
{
for
(
let
t
of
overArr
)
{
overStr
+=
dict
.
overCarType
[
t
]
overStr
+=
dict
.
overCarType
[
t
]
}
}
this
.
$notify
({
if
(
!
this
.
showHisVid
&&
[
'
add
'
,
'
com
'
].
includes
(
item
.
dill
))
{
title
:
'
超限车辆
'
,
this
.
$notify
({
dangerouslyUseHTMLString
:
true
,
title
:
'
超限车辆
'
,
customClass
:
'
manageWebNotify
'
,
dangerouslyUseHTMLString
:
true
,
message
:
`
customClass
:
'
manageWebNotify
'
,
message
:
`
<div>车牌号:
${
item
.
picLicense
||
'
--
'
}
</div>
<div>车牌号:
${
item
.
picLicense
||
'
--
'
}
</div>
<div>超限类型:
${
overStr
}
</div>
<div>超限类型:
${
overStr
}
</div>
<div>预警时间:
${
item
.
overRun
.
timeStamp
}
</div>
<div>预警时间:
${
item
.
overRun
.
timeStamp
}
</div>
`
,
`
,
type
:
'
warning
'
,
type
:
'
warning
'
,
position
:
'
bottom-right
'
,
position
:
'
bottom-right
'
,
duration
:
5000
duration
:
5000
});
});
}
}
}
if
([
'
add
'
,
'
com
'
].
includes
(
item
.
dill
))
{
if
([
'
add
'
,
'
com
'
].
includes
(
item
.
dill
))
{
if
(
popupVises
[
`popup
${
item
.
id
}
`
])
{
if
(
popupVises
[
`popup
${
item
.
id
}
`
])
{
...
@@ -1139,8 +1168,8 @@ export default {
...
@@ -1139,8 +1168,8 @@ export default {
if
(
zoom
>
18
)
{
if
(
zoom
>
18
)
{
// 新增
// 新增
if
(
if
(
item
.
dill
===
"
add
"
||
item
.
dill
===
"
add
"
||
(
item
.
dill
===
"
com
"
&&
!
vehicleModels
[
item
.
id
])
(
item
.
dill
===
"
com
"
&&
!
vehicleModels
[
item
.
id
])
)
{
)
{
this
.
addVehicleModels
(
item
);
this
.
addVehicleModels
(
item
);
if
(
this
.
licenseState
)
this
.
addVehicleLicenses
(
item
);
if
(
this
.
licenseState
)
this
.
addVehicleLicenses
(
item
);
...
@@ -1161,8 +1190,8 @@ export default {
...
@@ -1161,8 +1190,8 @@ export default {
if
(
item
.
dill
===
"
com
"
)
{
if
(
item
.
dill
===
"
com
"
)
{
// 车型中途变化 清除并重新创建
// 车型中途变化 清除并重新创建
if
(
if
(
vehicleModels
[
key
].
userData
.
data
.
originalType
!==
vehicleModels
[
key
].
userData
.
data
.
originalType
!==
item
.
originalType
item
.
originalType
)
{
)
{
if
(
vehicleModels
[
key
])
{
if
(
vehicleModels
[
key
])
{
window
.
tb
.
clear
(
item
.
id
,
true
);
window
.
tb
.
clear
(
item
.
id
,
true
);
...
@@ -1178,8 +1207,8 @@ export default {
...
@@ -1178,8 +1207,8 @@ export default {
if
(
licenseLabel
[
`license
${
item
.
id
}
`
])
{
if
(
licenseLabel
[
`license
${
item
.
id
}
`
])
{
// 如果车牌model存在且未改变 则setCoords
// 如果车牌model存在且未改变 则setCoords
if
(
if
(
licenseLabel
[
`license
${
item
.
id
}
`
].
userData
.
data
licenseLabel
[
`license
${
item
.
id
}
`
].
userData
.
data
.
picLicense
==
item
.
picLicense
.
picLicense
==
item
.
picLicense
)
{
)
{
licenseLabel
[
`license
${
item
.
id
}
`
].
setCoords
([
licenseLabel
[
`license
${
item
.
id
}
`
].
setCoords
([
item
.
longitude
,
item
.
longitude
,
...
@@ -1248,9 +1277,9 @@ export default {
...
@@ -1248,9 +1277,9 @@ export default {
let
model
=
vehicleModelTypes
[
`car
${
option
.
originalType
}
`
].
duplicate
();
let
model
=
vehicleModelTypes
[
`car
${
option
.
originalType
}
`
].
duplicate
();
this
.
setModel
(
model
,
option
,
true
);
this
.
setModel
(
model
,
option
,
true
);
model
.
addEventListener
(
model
.
addEventListener
(
"
SelectedChange
"
,
"
SelectedChange
"
,
this
.
onSelectedChangeVehicle
,
this
.
onSelectedChangeVehicle
,
false
false
);
);
vehicleModels
[
option
.
id
]
=
model
;
vehicleModels
[
option
.
id
]
=
model
;
window
.
tb
.
add
(
model
,
option
.
id
);
window
.
tb
.
add
(
model
,
option
.
id
);
...
@@ -1262,7 +1291,7 @@ export default {
...
@@ -1262,7 +1291,7 @@ export default {
ele
.
style
.
color
=
"
white
"
;
ele
.
style
.
color
=
"
white
"
;
ele
.
innerText
=
option
.
picLicense
;
ele
.
innerText
=
option
.
picLicense
;
ele
.
style
.
backgroundImage
=
`url('
${
mapAssets
.
mapIcons
[
`license
${
option
.
licenseColor
}
`
]
ele
.
style
.
backgroundImage
=
`url('
${
mapAssets
.
mapIcons
[
`license
${
option
.
licenseColor
}
`
]
}
')`
;
}
')`
;
ele
.
style
.
backgroundSize
=
"
100% 100%
"
;
ele
.
style
.
backgroundSize
=
"
100% 100%
"
;
ele
.
style
.
fontSize
=
"
8px
"
;
ele
.
style
.
fontSize
=
"
8px
"
;
ele
.
style
.
textAlign
=
"
center
"
;
ele
.
style
.
textAlign
=
"
center
"
;
...
@@ -1273,7 +1302,7 @@ export default {
...
@@ -1273,7 +1302,7 @@ export default {
topMargin
:
2
,
topMargin
:
2
,
});
});
license
.
setCoords
([
option
.
longitude
,
option
.
latitude
,
4
]);
license
.
setCoords
([
option
.
longitude
,
option
.
latitude
,
4
]);
license
.
userData
.
data
=
{
picLicense
:
option
.
picLicense
};
license
.
userData
.
data
=
{
picLicense
:
option
.
picLicense
};
window
.
tb
.
add
(
license
,
`license
${
option
.
id
}
`
);
window
.
tb
.
add
(
license
,
`license
${
option
.
id
}
`
);
licenseLabel
[
`license
${
option
.
id
}
`
]
=
license
;
licenseLabel
[
`license
${
option
.
id
}
`
]
=
license
;
}
}
...
@@ -1350,6 +1379,7 @@ export default {
...
@@ -1350,6 +1379,7 @@ export default {
},
},
beforeDestroy
()
{
beforeDestroy
()
{
this
.
$EventBus
.
$off
(
"
emitPopupClose
"
);
this
.
clearTrackTimer
();
this
.
clearTrackTimer
();
this
.
closeAllWs
();
this
.
closeAllWs
();
window
.
tb
.
dispose
();
window
.
tb
.
dispose
();
...
@@ -1445,7 +1475,7 @@ export default {
...
@@ -1445,7 +1475,7 @@ export default {
box-shadow: none !important;
box-shadow: none !important;
}
}
.mapboxgl-ctrl-group button
+
button {
.mapboxgl-ctrl-group button
+
button {
border-top: unset !important;
border-top: unset !important;
}
}
...
...
wj-manage-web/src/views/situation/mapPopup/vehicleDetail.vue
View file @
6ba2997c
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
<div
class=
"vehicleDetailInner"
>
<div
class=
"vehicleDetailInner"
>
<div
class=
"head"
>
<div
class=
"head"
>
<span
class=
"titleBefore"
></span><span>
{{
model
.
picLicense
||
"
暂无车牌号信息
"
}}
</span>
<span
class=
"titleBefore"
></span><span>
{{
model
.
picLicense
||
"
暂无车牌号信息
"
}}
</span>
<div
@
click=
"emitPopupClose"
class=
"el-icon-close"
></div>
</div>
</div>
<div
class=
"content"
>
<div
class=
"content"
>
<div
class=
"detailItem"
>
<div
class=
"detailItem"
>
...
@@ -71,6 +72,9 @@ export default {
...
@@ -71,6 +72,9 @@ export default {
// console.log("model", this.model);
// console.log("model", this.model);
},
},
methods
:
{
methods
:
{
emitPopupClose
(){
this
.
$EventBus
.
$emit
(
"
emitPopupClose
"
,{
id
:
this
.
model
.
id
,
overRun
:
!
this
.
notExceed
});
},
convertDict
(
type
,
value
)
{
convertDict
(
type
,
value
)
{
for
(
let
item
of
store
.
state
.
dicts
[
type
])
{
for
(
let
item
of
store
.
state
.
dicts
[
type
])
{
if
(
item
.
code
==
value
)
{
if
(
item
.
code
==
value
)
{
...
@@ -146,6 +150,15 @@ export default {
...
@@ -146,6 +150,15 @@ export default {
color: white;
color: white;
display: flex;
display: flex;
align-items: center;
align-items: center;
position: relative;
div{
position: absolute;
cursor: pointer;
right: 3px;
top: 18px;
font-weight: bold;
font-size: 20px;
}
span {
span {
display: inline-block;
display: inline-block;
...
...
wj-manage-web/src/views/situation/sigalTraceVideos/index.vue
View file @
6ba2997c
<
template
>
<
template
>
<div
id=
"holo_historyCameraContainer"
class=
"eventCameraContainer"
v-show=
"true"
>
<div
id=
"holo_historyCameraContainer"
class=
"eventCameraContainer"
v-show=
"true"
>
<div
id=
"historyCameraContainer"
class=
"historyCameraContainer"
>
<div
id=
"historyCameraContainer"
class=
"historyCameraContainer"
>
<div
class=
"cameraVideoShow"
:key=
"index"
v-for=
"(item, index) of channels"
v-show=
"true"
<div
class=
"cameraVideoShow"
:key=
"index"
v-for=
"(item, index) of urls"
v-show=
"true"
:id=
"`videoVisibles$
{item}`">
:id=
"`videoVisibles$
{item}`">
<loop-video
class=
"holo_his"
ref=
"hisVideo"
:autoplay=
"true"
:timeModel=
"timeDuration"
:channel=
"item"
></loop-video>
<!--
<loop-video
@
loadEnd=
"loadEnd"
class=
"holo_his"
ref=
"hisVideo"
:autoplay=
"true"
:timeModel=
"timeDuration"
:channel=
"item"
></loop-video>
-->
</div>
<video
:src=
"item"
style=
"object-fit: fill;width: 100%;height: 100%;"
@
canplay=
"videoCanPlay"
autoplay
</div>
muted
loop
class=
"videoControl"
ref=
"loopVideoPlayer"
>
<!--
<source
:src=
"item"
type=
"video/mp4"
/>
-->
<!-- 您的浏览器不支持 video 属性。-->
</video>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
LoopVideo
from
"
../../../components/Standard/loopVideo.vue
"
;
import
LoopVideo
from
"
../../../components/Standard/loopVideo.vue
"
;
export
default
{
export
default
{
name
:
"
historyVideos
"
,
name
:
"
historyVideos
"
,
components
:
{
components
:
{
LoopVideo
,
LoopVideo
,
},
},
props
:
{
props
:
{
channels
:
{
// channels: {
type
:
Array
,
// type: Array,
default
()
{
// default() {
return
[
'
2
'
,
'
9
'
]
// return ['2', '9']
}
// }
},
// },
timeDuration
:
{
urls
:
{
type
:
Object
,
type
:
Array
,
default
()
{
default
()
{
return
{
return
[]
startTime
:
''
,
}
endTime
:
''
}
}
},
},
data
()
{
return
{
}
},
},
computed
:
{},
// timeDuration: {
methods
:
{
// type: Object,
// playHisVideos() {
// default() {
// if (this.$refs.hisVideo) {
// return {
// for (let container of this.$refs.hisVideo) {
// startTime: '',
// container?.startPlay();
// endTime: ''
// }
// }
// }
// }
// }
// },
},
mounted
()
{
console
.
log
(
'
urls
'
,
this
.
urls
)
},
data
()
{
return
{
ready
:
false
}
},
computed
:
{},
methods
:
{
// playHisVideos() {
// if (this.$refs.hisVideo) {
// for (let container of this.$refs.hisVideo) {
// container?.startPlay();
// }
// }
// }
videoCanPlay
()
{
if
(
!
this
.
ready
)
{
this
.
ready
=
true
this
.
$emit
(
'
isReady
'
)
}
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.eventCameraContainer {
.eventCameraContainer {
position: absolute;
position: absolute;
width: 600px;
width: 600px;
height: 200px;
height: 200px;
max-width: 600px;
max-width: 600px;
bottom: 40px;
bottom: 40px;
left: 50%;
left: 50%;
transform: translateX(-50%);
transform: translateX(-50%);
display: flex;
display: flex;
margin: 0 auto;
margin: 0 auto;
border: 1px solid rgba(83, 146, 189, 1);
border: 1px solid rgba(83, 146, 189, 1);
background: rgba(10, 26, 41, 0.9);
background: rgba(10, 26, 41, 0.9);
border-radius: 6px;
border-radius: 6px;
.holo_his{
border: 1px solid rgba(255,255,255,0.3);
}
.historyCameraContainer {
.holo_his {
display: flex;
border: 1px solid rgba(255, 255, 255, 0.3);
flex-direction: row;
align-items: center;
width: 100%;
height: 100%;
.cameraVideoShow {
}
width: 50%;
height: 100%;
padding: 4px;
}
.lessWidthVideo {
.historyCameraContainer {
width: calc(100% - 6px);
display: flex;
}
flex-direction: row;
align-items: center;
width: 100%;
height: 100%;
.cameraVideoShow {
width: 50%;
height: 100%;
padding: 4px;
}
.normalWidthVideo {
.lessWidthVideo {
width: 100%;
width: calc(100% - 6px);
}
}
}
.noVideo {
.normalWidthVideo {
pointer-events: none;
width: 100%;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 32px;
color: #04396f;
}
}
}
.noVideo {
pointer-events: none;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: 32px;
color: #04396f;
}
}
}
</
style
>
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment