Compare commits
390 Commits
main
...
2024-07-22新BI页面
Author | SHA1 | Date |
---|---|---|
|
2360cea7e4 | |
|
77f41320c8 | |
|
aa4f52ad2a | |
|
b0e5a2826e | |
|
86771a851b | |
|
648b9e1ac5 | |
|
12a09b1448 | |
|
38adefd0fb | |
|
ba30331605 | |
|
0832284f06 | |
|
20c574897b | |
|
0cdcd706bc | |
|
2ccd92f1c3 | |
|
48ebcae4a8 | |
|
18412553ae | |
|
ebb141a699 | |
|
5ce51685d6 | |
|
6e7452c113 | |
|
b2ffac3acd | |
|
e75c8129ae | |
|
1dd9262cc4 | |
|
7fe2e02c1b | |
|
eb0fddec8e | |
|
900c362a1c | |
|
c2a661976d | |
|
825cd9bffd | |
|
7bbb361e1b | |
|
2f58b6bf93 | |
|
484c95f85b | |
|
f2a07c9b6b | |
|
3f39ad2548 | |
|
21ba6983c3 | |
|
045793c5fd | |
|
59edf1e6af | |
|
b8d812284a | |
|
9eda4f728d | |
|
50dcd9c4be | |
|
70407e7e00 | |
|
ec00128c3b | |
|
117daa34d0 | |
|
3b4803ee19 | |
|
ae700e84d8 | |
|
08555f1a10 | |
|
7e847adc4f | |
|
f42d56a7c0 | |
|
f47878a392 | |
|
6561b6af7d | |
|
a2f1ef07ac | |
|
14f6b53835 | |
|
908bd4b53c | |
|
101d0fac70 | |
|
c2ef837d93 | |
|
33312767b7 | |
|
8050b95233 | |
|
50025690f0 | |
|
3d834d7b6a | |
|
a78960d107 | |
|
9c123a62a3 | |
|
b7a09e54bb | |
|
3c368c2b3b | |
|
a728f33cc1 | |
|
0dd4f97072 | |
|
1acf73d2cd | |
|
5eb8bd0484 | |
|
e78e953523 | |
|
9f0ffebe6f | |
|
e5998ef8c4 | |
|
9ad0b93974 | |
|
2d32483388 | |
|
9c8ece8153 | |
|
0d6b60b245 | |
|
607155e24c | |
|
a217326e9a | |
|
aba24ac8eb | |
|
a6680fae2b | |
|
a36c05be34 | |
|
38d137dc06 | |
|
603ad362f2 | |
|
5bbe79885f | |
|
25d319976e | |
|
fa47f243b3 | |
|
95d447013e | |
|
b0af6ab3fd | |
|
ece4a3fe20 | |
|
cfe9594a91 | |
|
9c9e95afdd | |
|
e9aa750a3d | |
|
6d06f2740b | |
|
e98745f6e5 | |
|
dbfd7c58b0 | |
|
1dcdfbd468 | |
|
5cb52c147b | |
|
2c8367a8d1 | |
|
d522d1621d | |
|
c007e133b4 | |
|
1c11151012 | |
|
4cea212271 | |
|
1e8e144af3 | |
|
e342714e09 | |
|
7b3cda2706 | |
|
a22bcf76d8 | |
|
c22e4f1723 | |
|
64e8c9a674 | |
|
051f1d7412 | |
|
cf98d4b419 | |
|
9b22449613 | |
|
257a8d5d23 | |
|
ec9c696841 | |
|
1d31175ca9 | |
|
a7eba8b92e | |
|
fcf94011d3 | |
|
b6618acb13 | |
|
a37882569c | |
|
1cdca25e3c | |
|
c36533a16a | |
|
82ca607e78 | |
|
ad2e3064dd | |
|
8d3e04e9fe | |
|
8c492a0a96 | |
|
1418fba680 | |
|
19bc35c01f | |
|
944d46eb30 | |
|
b3aa98432c | |
|
962b9ec6d0 | |
|
83a324ee44 | |
|
25bbff74f0 | |
|
80df79c653 | |
|
93ffe2b5af | |
|
ece26192aa | |
|
da01631b41 | |
|
5266f99963 | |
|
77615123da | |
|
0e56d36d7f | |
|
bf6076a1d1 | |
|
19bd9b1ab2 | |
|
5e6fca9a0e | |
|
723c46e581 | |
|
2db2046f6e | |
|
f5053e2200 | |
|
1fc75b9d56 | |
|
ece75ce855 | |
|
11ad8664a2 | |
|
fc2a1af041 | |
|
f6aedd2b1e | |
|
e423427da5 | |
|
616b3d8833 | |
|
35869bc365 | |
|
dbce7ea493 | |
|
b9a46864b5 | |
|
0fdb05467c | |
|
00f7d7b2a6 | |
|
4a217da185 | |
|
36aa2d8f35 | |
|
ef6331cd78 | |
|
3af965e357 | |
|
2a064cbead | |
|
f0133bdf2c | |
|
9aad2a8a8c | |
|
bbfc67e0e6 | |
|
cd1b89a4fa | |
|
fab4ff997b | |
|
686e93eb7c | |
|
0c88ca43d7 | |
|
61be80eca0 | |
|
6656305cf7 | |
|
640402eede | |
|
7e6046ec0c | |
|
a9e4a77107 | |
|
a4605baf7e | |
|
9825bd63c5 | |
|
77ae6d8e1e | |
|
643679d3c6 | |
|
b0925b96e2 | |
|
8f0a228f7f | |
|
cf952e0ee3 | |
|
327eb851fc | |
|
a3413eb6e5 | |
|
ce586aaf31 | |
|
3fadbc6c67 | |
|
906c10d1f2 | |
|
f94e030b8e | |
|
c1125a06c7 | |
|
b59ed77b93 | |
|
1149e0f41a | |
|
44656cfe9c | |
|
a1ca197034 | |
|
02fac911b9 | |
|
bb34a54e57 | |
|
06c706db1a | |
|
77f19eec57 | |
|
d46de638dc | |
|
5e0f50acc1 | |
|
a53d9140ea | |
|
e3a8194c7c | |
|
06edadf817 | |
|
63569ba19b | |
|
77d6ab4f81 | |
|
71720df56f | |
|
66f708e4e6 | |
|
b91d712a99 | |
|
06f3746c8a | |
|
a5cda7aa2b | |
|
6dda995d3e | |
|
6b631223eb | |
|
90ae5f50bf | |
|
718756ad84 | |
|
c863afb393 | |
|
6dbd709ab0 | |
|
01edc5f766 | |
|
419dd41376 | |
|
8cf172365f | |
|
e37efe2bf8 | |
|
4954bc68e3 | |
|
a737c12df5 | |
|
1a2bddc730 | |
|
572e93bc6f | |
|
c739078672 | |
|
31a9853d07 | |
|
8813018770 | |
|
ca5c37f73e | |
|
c47536f667 | |
|
567358d10d | |
|
5eb411831a | |
|
ef1eb7fe0b | |
|
8f3a8a02e3 | |
|
86a0d4b88c | |
|
5a032f4bed | |
|
e1d012af1f | |
|
3962f2ac4c | |
|
8510e9490b | |
|
565c1c9a82 | |
|
0184a25b14 | |
|
8e64a50140 | |
|
ffe9fdd476 | |
|
3353d81c20 | |
|
47d48eebb3 | |
|
4ecbc3cb76 | |
|
939d8c4a8d | |
|
75d82625ac | |
|
19c0273616 | |
|
53b185536a | |
|
608c7e958a | |
|
08ec9b9184 | |
|
a77680fbfa | |
|
b71ad74667 | |
|
708bf7239b | |
|
87552f09f9 | |
|
cb466d63fb | |
|
54d830c6f6 | |
|
8552febc28 | |
|
386483a0a5 | |
|
890597db65 | |
|
87ef70fcbe | |
|
ceeaa04ec0 | |
|
ffbcda0ed8 | |
|
48cebd8e99 | |
|
58d88c2c4f | |
|
7b29b15bb5 | |
|
eaed841e03 | |
|
1ac41c731d | |
|
75c3699ef8 | |
|
dc7ff8d213 | |
|
ea75b6c121 | |
|
4e07ba10d7 | |
|
f6f128455b | |
|
86ecd23c05 | |
|
b2d8d64c47 | |
|
e72a142a73 | |
|
f2416d30f2 | |
|
96df5a95e4 | |
|
29c6388668 | |
|
da73fe4e7f | |
|
367703a159 | |
|
b7303e36ac | |
|
11c158477b | |
|
7675f9e29d | |
|
be658a2de1 | |
|
5dc74cc129 | |
|
07b8032fdf | |
|
1a3d7a174c | |
|
dfc8edb704 | |
|
eb99a9f162 | |
|
f8806c76f1 | |
|
5d17d8fefa | |
|
314fdbe1fc | |
|
f8af529c6e | |
|
9aeb156474 | |
|
68a367cbc3 | |
|
e9bf7b6aea | |
|
3cc43c279a | |
|
7af7094e5e | |
|
bcd826dd04 | |
|
a9c0eb45d7 | |
|
aeb034cb27 | |
|
1cd73243f6 | |
|
6b493efef0 | |
|
adafcfd115 | |
|
7b07159179 | |
|
521ce5f73f | |
|
e921d03320 | |
|
0f407920b5 | |
|
1b971bb698 | |
|
cb0de8b3ad | |
|
57811434f4 | |
|
352f4cf84d | |
|
e4c0609ac5 | |
|
09be916652 | |
|
fb7adadba6 | |
|
3d3ffa9d5f | |
|
5b06e37473 | |
|
d1c6f1244c | |
|
5d5aff5e9c | |
|
01223db7d8 | |
|
0866882e55 | |
|
6e151129c5 | |
|
afa82bcd14 | |
|
f8c31c41df | |
|
688eb1bd1b | |
|
c410e4302a | |
|
937396645f | |
|
237801adb8 | |
|
ca1d5df750 | |
|
e71ba80f39 | |
|
656614a79b | |
|
07de513dc5 | |
|
70cae2001b | |
|
3a20fce486 | |
|
cfc10ada9d | |
|
abf0d8ff91 | |
|
9b7b066e9a | |
|
fe9303df2c | |
|
4cdccfafa7 | |
|
c3e22a8654 | |
|
0d4d807e74 | |
|
4d4616e436 | |
|
c769b1809e | |
|
a165aac422 | |
|
2bb112123b | |
|
d8b81339ea | |
|
7dde890a50 | |
|
7c6d7d227d | |
|
b0ee7fb5d3 | |
|
6a05eb91a1 | |
|
657e5eeb38 | |
|
520bd345e8 | |
|
461b1d6319 | |
|
b8df13587b | |
|
29456ae9b9 | |
|
c76cdd50db | |
|
64418d7031 | |
|
6b7f02e670 | |
|
6735862038 | |
|
cdbeacee28 | |
|
e6d21ace08 | |
|
bab72ac252 | |
|
ee4a885e33 | |
|
3e6b804b7d | |
|
28b9bfc228 | |
|
00d698280a | |
|
852d67810c | |
|
b42f50d504 | |
|
00f4b5ff34 | |
|
c01d29032b | |
|
62882d8257 | |
|
fdc8c7f346 | |
|
04887019e5 | |
|
efc32a194f | |
|
dda1af7787 | |
|
941626ca83 | |
|
990357092a | |
|
674c9ca31f | |
|
bda3685c73 | |
|
34bb3bce3c | |
|
639864bba9 | |
|
10dfc04e47 | |
|
6dbdc96268 | |
|
b276638aa8 | |
|
7e4ba6c714 | |
|
053a39279c | |
|
4eaf36d701 | |
|
5c8e674f14 | |
|
dc730ad266 | |
|
e6cbdcf866 | |
|
43e99613d0 | |
|
d027db8bb7 | |
|
fdbecc3f17 | |
|
beea017dbb | |
|
f4bd540162 | |
|
c8fe830e31 | |
|
6527cfea93 |
|
@ -20,7 +20,7 @@ module.exports = {
|
|||
例如 selectorBlackList 为 [/^body$/] , 那么 body 会被忽略,而 .body 不会*/
|
||||
minPixelValue: 1, // (Number) 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
|
||||
mediaQuery: false, // (Boolean) 媒体查询里的单位是否需要转换单位
|
||||
exclude: [/^node_modules$/],// (Array or Regexp) 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
|
||||
exclude: [/^node_modules$/,/newBI/],// (Array or Regexp) 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件
|
||||
include: [/BI/,/map/],
|
||||
/*(Array or Regexp) 如果设置了include,那将只有匹配到的文件才会被转换,例如只转换 'src/mobile' 下的文件
|
||||
如果值是一个正则表达式,将包含匹配的文件,否则将排除该文件
|
||||
|
|
|
@ -9,7 +9,13 @@ module.exports = {
|
|||
// Paths
|
||||
assetsSubDirectory: 'static',
|
||||
assetsPublicPath: '/',
|
||||
proxyTable: {},
|
||||
proxyTable: { '/ysapi': {
|
||||
target: 'http://10.30.20.54:8088',
|
||||
changeOrigin: true,
|
||||
pathRewrite: {
|
||||
'^/ysapi': ''
|
||||
}
|
||||
}},
|
||||
|
||||
// Various Dev Server settings
|
||||
host: 'localhost', // can be overwritten by process.env.HOST
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<!-- <link href="./static/map/cesium109/Widgets/widgets.css" rel="stylesheet"/>-->
|
||||
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.16.0/skins/default/aliplayer-min.css" />
|
||||
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.16.0/aliplayer-min.js"></script>
|
||||
<!-- <script type="text/javascript" charset="utf-8" src="http://10.30.20.54:8093/static/imosPlayer.min.js"></script>-->
|
||||
|
||||
<script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script>
|
||||
<script type="text/javascript" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script>
|
||||
|
|
|
@ -17,8 +17,10 @@
|
|||
"js-cookie": "^2.2.1",
|
||||
"jspdf": "^2.5.1",
|
||||
"lodash": "^4.17.21",
|
||||
"md5": "^2.3.0",
|
||||
"moment": "^2.29.3",
|
||||
"motion": "^10.16.4",
|
||||
"mqtt": "^4.2.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"relation-graph": "^1.1.0",
|
||||
"v-viewer": "^1.6.3",
|
||||
|
@ -2299,8 +2301,7 @@
|
|||
"node_modules/balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"node_modules/base": {
|
||||
"version": "0.11.2",
|
||||
|
@ -2424,6 +2425,38 @@
|
|||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bl": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
|
||||
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
||||
"dependencies": {
|
||||
"buffer": "^5.5.0",
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "^3.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bl/node_modules/buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"node_modules/bl/node_modules/readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/bluebird": {
|
||||
"version": "3.7.2",
|
||||
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1602657218976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
|
||||
|
@ -2560,7 +2593,6 @@
|
|||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1614010785257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -2767,8 +2799,7 @@
|
|||
"node_modules/buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8="
|
||||
},
|
||||
"node_modules/buffer-indexof": {
|
||||
"version": "1.1.1",
|
||||
|
@ -3056,6 +3087,14 @@
|
|||
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/check-types": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npm.taobao.org/check-types/download/check-types-7.4.0.tgz",
|
||||
|
@ -3591,6 +3630,15 @@
|
|||
"integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/commist": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/commist/-/commist-1.1.0.tgz",
|
||||
"integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
|
||||
"dependencies": {
|
||||
"leven": "^2.1.0",
|
||||
"minimist": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/commondir": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
|
||||
|
@ -3645,8 +3693,7 @@
|
|||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"node_modules/concat-stream": {
|
||||
"version": "1.6.2",
|
||||
|
@ -3887,6 +3934,14 @@
|
|||
"which": "^1.2.9"
|
||||
}
|
||||
},
|
||||
"node_modules/crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/crypto-browserify": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
|
||||
|
@ -5595,7 +5650,6 @@
|
|||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
|
||||
"integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
|
@ -7028,8 +7082,7 @@
|
|||
"node_modules/fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"node_modules/fsevents": {
|
||||
"version": "1.2.13",
|
||||
|
@ -7173,7 +7226,6 @@
|
|||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz",
|
||||
"integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
|
@ -7612,6 +7664,28 @@
|
|||
"he": "bin/he"
|
||||
}
|
||||
},
|
||||
"node_modules/help-me": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/help-me/-/help-me-3.0.0.tgz",
|
||||
"integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
|
||||
"dependencies": {
|
||||
"glob": "^7.1.6",
|
||||
"readable-stream": "^3.6.0"
|
||||
}
|
||||
},
|
||||
"node_modules/help-me/node_modules/readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/hex-color-regex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
|
||||
|
@ -8355,7 +8429,6 @@
|
|||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
|
@ -9579,6 +9652,11 @@
|
|||
"resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz",
|
||||
"integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
|
||||
},
|
||||
"node_modules/js-sdsl": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz",
|
||||
"integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ=="
|
||||
},
|
||||
"node_modules/js-tokens": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz",
|
||||
|
@ -9818,7 +9896,6 @@
|
|||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz",
|
||||
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -10352,6 +10429,16 @@
|
|||
"integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
|
||||
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
|
||||
"dependencies": {
|
||||
"charenc": "0.0.2",
|
||||
"crypt": "0.0.2",
|
||||
"is-buffer": "~1.1.6"
|
||||
}
|
||||
},
|
||||
"node_modules/md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
|
||||
|
@ -10693,7 +10780,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
},
|
||||
|
@ -10930,6 +11016,173 @@
|
|||
"run-queue": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt": {
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz",
|
||||
"integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==",
|
||||
"dependencies": {
|
||||
"commist": "^1.0.0",
|
||||
"concat-stream": "^2.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"duplexify": "^4.1.1",
|
||||
"help-me": "^3.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"lru-cache": "^6.0.0",
|
||||
"minimist": "^1.2.5",
|
||||
"mqtt-packet": "^6.8.0",
|
||||
"number-allocator": "^1.0.9",
|
||||
"pump": "^3.0.0",
|
||||
"readable-stream": "^3.6.0",
|
||||
"reinterval": "^1.1.0",
|
||||
"rfdc": "^1.3.0",
|
||||
"split2": "^3.1.0",
|
||||
"ws": "^7.5.5",
|
||||
"xtend": "^4.0.2"
|
||||
},
|
||||
"bin": {
|
||||
"mqtt": "bin/mqtt.js",
|
||||
"mqtt_pub": "bin/pub.js",
|
||||
"mqtt_sub": "bin/sub.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt-packet": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
|
||||
"integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
|
||||
"dependencies": {
|
||||
"bl": "^4.0.2",
|
||||
"debug": "^4.1.1",
|
||||
"process-nextick-args": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt-packet/node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt-packet/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/mqtt/node_modules/concat-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
|
||||
"engines": [
|
||||
"node >= 6.0"
|
||||
],
|
||||
"dependencies": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.0.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/duplexify": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz",
|
||||
"integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
|
||||
"dependencies": {
|
||||
"end-of-stream": "^1.4.1",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.1.1",
|
||||
"stream-shift": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"dependencies": {
|
||||
"yallist": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/mqtt/node_modules/pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"dependencies": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/ws": {
|
||||
"version": "7.5.9",
|
||||
"resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
|
||||
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
|
||||
"engines": {
|
||||
"node": ">=8.3.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": "^5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/mqtt/node_modules/yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
|
||||
|
@ -11311,6 +11564,36 @@
|
|||
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/number-allocator": {
|
||||
"version": "1.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/number-allocator/-/number-allocator-1.0.14.tgz",
|
||||
"integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
|
||||
"dependencies": {
|
||||
"debug": "^4.3.1",
|
||||
"js-sdsl": "4.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/number-allocator/node_modules/debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"dependencies": {
|
||||
"ms": "2.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"supports-color": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/number-allocator/node_modules/ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"node_modules/number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
|
||||
|
@ -11595,7 +11878,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -12030,7 +12312,6 @@
|
|||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"devOptional": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
@ -16398,6 +16679,11 @@
|
|||
"jsesc": "bin/jsesc"
|
||||
}
|
||||
},
|
||||
"node_modules/reinterval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz",
|
||||
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
||||
},
|
||||
"node_modules/relateurl": {
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
|
||||
|
@ -16697,6 +16983,11 @@
|
|||
"node": ">=0.12"
|
||||
}
|
||||
},
|
||||
"node_modules/rfdc": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
|
||||
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
|
||||
},
|
||||
"node_modules/rgb-regex": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
|
||||
|
@ -17907,6 +18198,27 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/split2": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz",
|
||||
"integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
|
||||
"dependencies": {
|
||||
"readable-stream": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/split2/node_modules/readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"dependencies": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
|
||||
|
@ -18112,8 +18424,7 @@
|
|||
"node_modules/stream-shift": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz",
|
||||
"integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=",
|
||||
"dev": true
|
||||
"integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0="
|
||||
},
|
||||
"node_modules/strict-uri-encode": {
|
||||
"version": "1.1.0",
|
||||
|
@ -19472,8 +19783,7 @@
|
|||
"node_modules/typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"node_modules/uc.micro": {
|
||||
"version": "1.0.6",
|
||||
|
@ -22002,8 +22312,7 @@
|
|||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"node_modules/write": {
|
||||
"version": "0.2.1",
|
||||
|
@ -24147,8 +24456,7 @@
|
|||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
|
@ -24238,6 +24546,37 @@
|
|||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"bl": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
|
||||
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
||||
"requires": {
|
||||
"buffer": "^5.5.0",
|
||||
"inherits": "^2.0.4",
|
||||
"readable-stream": "^3.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
|
||||
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
|
||||
"requires": {
|
||||
"base64-js": "^1.3.1",
|
||||
"ieee754": "^1.1.13"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.7.2",
|
||||
"resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1602657218976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
|
||||
|
@ -24366,7 +24705,6 @@
|
|||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz?cache=0&sync_timestamp=1614010785257&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrace-expansion%2Fdownload%2Fbrace-expansion-1.1.11.tgz",
|
||||
"integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
|
@ -24544,8 +24882,7 @@
|
|||
"buffer-from": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz",
|
||||
"integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8="
|
||||
},
|
||||
"buffer-indexof": {
|
||||
"version": "1.1.1",
|
||||
|
@ -24791,6 +25128,11 @@
|
|||
"integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=",
|
||||
"dev": true
|
||||
},
|
||||
"charenc": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz",
|
||||
"integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA=="
|
||||
},
|
||||
"check-types": {
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npm.taobao.org/check-types/download/check-types-7.4.0.tgz",
|
||||
|
@ -25221,6 +25563,15 @@
|
|||
"integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
|
||||
"dev": true
|
||||
},
|
||||
"commist": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/commist/-/commist-1.1.0.tgz",
|
||||
"integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==",
|
||||
"requires": {
|
||||
"leven": "^2.1.0",
|
||||
"minimist": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"commondir": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz",
|
||||
|
@ -25268,8 +25619,7 @@
|
|||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"dev": true
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||
},
|
||||
"concat-stream": {
|
||||
"version": "1.6.2",
|
||||
|
@ -25480,6 +25830,11 @@
|
|||
"which": "^1.2.9"
|
||||
}
|
||||
},
|
||||
"crypt": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz",
|
||||
"integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow=="
|
||||
},
|
||||
"crypto-browserify": {
|
||||
"version": "3.12.0",
|
||||
"resolved": "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
|
||||
|
@ -26907,7 +27262,6 @@
|
|||
"version": "1.4.4",
|
||||
"resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
|
||||
"integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.4.0"
|
||||
}
|
||||
|
@ -28066,8 +28420,7 @@
|
|||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "1.2.13",
|
||||
|
@ -28190,7 +28543,6 @@
|
|||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npm.taobao.org/glob/download/glob-7.1.6.tgz",
|
||||
"integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
|
@ -28535,6 +28887,27 @@
|
|||
"integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=",
|
||||
"dev": true
|
||||
},
|
||||
"help-me": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/help-me/-/help-me-3.0.0.tgz",
|
||||
"integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
|
||||
"requires": {
|
||||
"glob": "^7.1.6",
|
||||
"readable-stream": "^3.6.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"hex-color-regex": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz",
|
||||
|
@ -29148,7 +29521,6 @@
|
|||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
|
||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
|
@ -30174,6 +30546,11 @@
|
|||
"resolved": "https://registry.npm.taobao.org/js-cookie/download/js-cookie-2.2.1.tgz",
|
||||
"integrity": "sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg="
|
||||
},
|
||||
"js-sdsl": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz",
|
||||
"integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ=="
|
||||
},
|
||||
"js-tokens": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz",
|
||||
|
@ -30378,8 +30755,7 @@
|
|||
"leven": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npm.taobao.org/leven/download/leven-2.1.0.tgz",
|
||||
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=",
|
||||
"dev": true
|
||||
"integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA="
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
|
@ -30847,6 +31223,16 @@
|
|||
"integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw=",
|
||||
"dev": true
|
||||
},
|
||||
"md5": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz",
|
||||
"integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
|
||||
"requires": {
|
||||
"charenc": "0.0.2",
|
||||
"crypt": "0.0.2",
|
||||
"is-buffer": "~1.1.6"
|
||||
}
|
||||
},
|
||||
"md5.js": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz",
|
||||
|
@ -31128,7 +31514,6 @@
|
|||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
|
||||
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
|
@ -31324,6 +31709,130 @@
|
|||
"run-queue": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"mqtt": {
|
||||
"version": "4.3.7",
|
||||
"resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz",
|
||||
"integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==",
|
||||
"requires": {
|
||||
"commist": "^1.0.0",
|
||||
"concat-stream": "^2.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"duplexify": "^4.1.1",
|
||||
"help-me": "^3.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"lru-cache": "^6.0.0",
|
||||
"minimist": "^1.2.5",
|
||||
"mqtt-packet": "^6.8.0",
|
||||
"number-allocator": "^1.0.9",
|
||||
"pump": "^3.0.0",
|
||||
"readable-stream": "^3.6.0",
|
||||
"reinterval": "^1.1.0",
|
||||
"rfdc": "^1.3.0",
|
||||
"split2": "^3.1.0",
|
||||
"ws": "^7.5.5",
|
||||
"xtend": "^4.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"concat-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
|
||||
"requires": {
|
||||
"buffer-from": "^1.0.0",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.0.2",
|
||||
"typedarray": "^0.0.6"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"duplexify": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz",
|
||||
"integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
|
||||
"requires": {
|
||||
"end-of-stream": "^1.4.1",
|
||||
"inherits": "^2.0.3",
|
||||
"readable-stream": "^3.1.1",
|
||||
"stream-shift": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"pump": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
|
||||
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
|
||||
"requires": {
|
||||
"end-of-stream": "^1.1.0",
|
||||
"once": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"ws": {
|
||||
"version": "7.5.9",
|
||||
"resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
|
||||
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
|
||||
"requires": {}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"mqtt-packet": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz",
|
||||
"integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==",
|
||||
"requires": {
|
||||
"bl": "^4.0.2",
|
||||
"debug": "^4.1.1",
|
||||
"process-nextick-args": "^2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
|
||||
|
@ -31653,6 +32162,30 @@
|
|||
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
|
||||
"dev": true
|
||||
},
|
||||
"number-allocator": {
|
||||
"version": "1.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/number-allocator/-/number-allocator-1.0.14.tgz",
|
||||
"integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
|
||||
"requires": {
|
||||
"debug": "^4.3.1",
|
||||
"js-sdsl": "4.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
|
||||
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
|
||||
"requires": {
|
||||
"ms": "2.1.2"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
|
||||
|
@ -31864,7 +32397,6 @@
|
|||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz",
|
||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
|
@ -32227,8 +32759,7 @@
|
|||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
||||
"devOptional": true
|
||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||
},
|
||||
"path-is-inside": {
|
||||
"version": "1.0.2",
|
||||
|
@ -35725,6 +36256,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"reinterval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz",
|
||||
"integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
|
||||
},
|
||||
"relateurl": {
|
||||
"version": "0.2.7",
|
||||
"resolved": "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz",
|
||||
|
@ -35958,6 +36494,11 @@
|
|||
"integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
|
||||
"devOptional": true
|
||||
},
|
||||
"rfdc": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
|
||||
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
|
||||
},
|
||||
"rgb-regex": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz",
|
||||
|
@ -36964,6 +37505,26 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"split2": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz",
|
||||
"integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
|
||||
"requires": {
|
||||
"readable-stream": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sprintf-js": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz",
|
||||
|
@ -37134,8 +37695,7 @@
|
|||
"stream-shift": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.1.tgz",
|
||||
"integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0=",
|
||||
"dev": true
|
||||
"integrity": "sha1-1wiCgVWasneEJCebCHfaPDktWj0="
|
||||
},
|
||||
"strict-uri-encode": {
|
||||
"version": "1.1.0",
|
||||
|
@ -38236,8 +38796,7 @@
|
|||
"typedarray": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz",
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
|
||||
"dev": true
|
||||
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
|
||||
},
|
||||
"uc.micro": {
|
||||
"version": "1.0.6",
|
||||
|
@ -40350,8 +40909,7 @@
|
|||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz",
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||
},
|
||||
"write": {
|
||||
"version": "0.2.1",
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
"author": "",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --host 192.168.151.43",
|
||||
"dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js --open",
|
||||
"start": "npm run dev",
|
||||
"unit": "jest --config test/unit/jest.conf.js --coverage",
|
||||
"e2e": "node test/e2e/runner.js",
|
||||
|
@ -17,6 +17,7 @@
|
|||
"dependencies": {
|
||||
"@riophae/vue-treeselect": "^0.4.0",
|
||||
"animate.css": "^4.1.1",
|
||||
"autofit.js": "^3.1.0",
|
||||
"axios": "^0.21.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"element-ui": "^2.15.1",
|
||||
|
@ -24,9 +25,10 @@
|
|||
"js-cookie": "^2.2.1",
|
||||
"jspdf": "^2.5.1",
|
||||
"lodash": "^4.17.21",
|
||||
"md5": "^2.3.0",
|
||||
"moment": "^2.29.3",
|
||||
"motion": "^10.16.4",
|
||||
"mqtt": "^4.2.1",
|
||||
"mqtt": "4.2.1",
|
||||
"nprogress": "^0.2.0",
|
||||
"relation-graph": "^1.1.0",
|
||||
"v-viewer": "^1.6.3",
|
||||
|
@ -40,6 +42,7 @@
|
|||
"vue-qr": "^2.3.0",
|
||||
"vue-quill-editor": "^3.0.6",
|
||||
"vue-router": "^3.0.1",
|
||||
"vue-seamless-scroll": "^1.1.23",
|
||||
"vue-to-pdf": "^1.0.0",
|
||||
"vue-video-player": "^5.0.2"
|
||||
},
|
||||
|
|
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 616 KiB |
After Width: | Height: | Size: 151 KiB |
After Width: | Height: | Size: 394 KiB |
After Width: | Height: | Size: 152 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 835 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 208 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 250 KiB |
After Width: | Height: | Size: 222 KiB |
After Width: | Height: | Size: 180 KiB |
|
@ -10,7 +10,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import pathToRegexp from 'path-to-regexp'
|
||||
import * as pathToRegexp from 'path-to-regexp'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
|
|
@ -68,7 +68,11 @@
|
|||
<el-table-column v-if="otherShow" prop="HIDDEN_COUNT" label="发现隐患数量" />
|
||||
<el-table-column v-if="otherShow" prop="PUNISH_COUNT" label="违约处罚次数" />
|
||||
<el-table-column v-if="otherShow" prop="AMOUT_SUM" label="违约处罚金额(元)" />
|
||||
<el-table-column v-if="otherShow" prop="VIDEO_COUNT" label="包含视频监控数" />
|
||||
<el-table-column v-if="otherShow" prop="VIDEO_COUNT" label="包含视频监控数(在线视频数)" width="200">
|
||||
<template slot-scope="{row}">
|
||||
<span>{{ row.VIDEO_COUNT }} ({{ row.ONLINE_COUNT }})</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="100">
|
||||
<template slot-scope="{row}">
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="goDetail(row.CORPINFO_ID)">查看</el-button>
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-upload
|
||||
ref="uploadFile"
|
||||
:auto-upload="false"
|
||||
:file-list="fileList"
|
||||
:on-change="onChange"
|
||||
:limit="limit"
|
||||
:on-exceed="handleExceed"
|
||||
:accept="accept"
|
||||
action="#">
|
||||
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
|
||||
<div slot="tip" class="el-upload__tip">{{ '文件大小不超过'+fileSize +'MB' }}</div>
|
||||
</el-upload>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'UploadImg',
|
||||
props: {
|
||||
fileList: {
|
||||
type: Array,
|
||||
default() {
|
||||
return []
|
||||
}
|
||||
},
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
fileSize: {
|
||||
type: Number,
|
||||
default: 200
|
||||
},
|
||||
accept: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
disabled: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleRemove(file) {
|
||||
this.fileList.splice(this.fileList.findIndex(item => item.uid === file.uid), 1)
|
||||
},
|
||||
handlePictureCardPreview(file) {
|
||||
this.dialogImageUrl = file.url
|
||||
this.dialogVisible = true
|
||||
},
|
||||
onChange(file, fileList) {
|
||||
this.file = file
|
||||
this.file_name = file.name
|
||||
const isLt2M = file.size / 1024 / 1024 < this.fileSize
|
||||
if (!isLt2M) {
|
||||
this.$message.error('上传文件大小不能超过 ' + this.fileSize + 'MB!')
|
||||
this.$refs.uploadFile.clearFiles()
|
||||
return false
|
||||
}
|
||||
this.$emit('update:fileList', fileList)
|
||||
},
|
||||
handleExceed(files, fileList) {
|
||||
this.$message.warning(`当前限制选择 ${this.limit} 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
</style>
|
|
@ -17,7 +17,7 @@
|
|||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import uploadFile from '../uploadFile/index.vue'
|
||||
import uploadFile from '../upload-file/index.vue'
|
||||
|
||||
export default {
|
||||
components: { Pagination, uploadFile },
|
||||
|
|
|
@ -11,30 +11,48 @@
|
|||
<div class="right-menu-item hover-effect">
|
||||
<span style="font-weight: bold">姓名:{{ pd.NAME }}</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="gotoMap()">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>地图</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="gotoBI()">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>驾驶舱</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('other')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>安全监管</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('relatedParties')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>相关方</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('detection')">
|
||||
<svg-icon icon-class="dashboard" />
|
||||
<span>在线监测</span>
|
||||
<!-- <div class="right-menu-item hover-effect" @click="gotoMap()">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>地图</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="gotoBI()">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>驾驶舱</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('other')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>安全监管</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('relatedParties')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>相关方</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="right-menu-item hover-effect" @click="setShowModel('detection')">-->
|
||||
<!-- <svg-icon icon-class="dashboard" />-->
|
||||
<!-- <span>在线监测</span>-->
|
||||
<!-- </div>-->
|
||||
<div class="right-menu-item hover-effect" @click="$router.push({path:'/guide'})">
|
||||
<svg-icon icon-class="example" />
|
||||
<span>首页</span>
|
||||
</div>
|
||||
<div class="right-menu-item hover-effect" @click="setShowModel('system')">
|
||||
<svg-icon icon-class="example" />
|
||||
<span>系统管理</span>
|
||||
</div>
|
||||
<el-dropdown class="right-menu-item" trigger="click">
|
||||
<div style="cursor:pointer;">
|
||||
<svg-icon icon-class="guide" />
|
||||
<span>更多</span>
|
||||
<i class="el-icon-arrow-down el-icon--right"/>
|
||||
</div>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item v-for="(item,index) in menuList" :key="index" @click.native="item.click">
|
||||
{{ item.text }}
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
<!-- <template v-if="device!=='mobile'">
|
||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||
|
||||
|
@ -102,6 +120,7 @@ import Hamburger from '@/components/Hamburger'
|
|||
import Screenfull from '@/components/Screenfull'
|
||||
import SizeSelect from '@/components/SizeSelect'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import { menuList } from '@/views/newBI/menuList'
|
||||
export default {
|
||||
components: {
|
||||
Breadcrumb,
|
||||
|
@ -157,7 +176,8 @@ export default {
|
|||
newpassword1: [
|
||||
{ required: true, validator: validatePass2, trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
},
|
||||
menuList
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -39,6 +39,33 @@ export const constantRoutes = [
|
|||
hidden: true,
|
||||
component: () => import('@/views/login/registered/index')
|
||||
},
|
||||
{
|
||||
path: '/guide',
|
||||
name: 'guide',
|
||||
hidden: true,
|
||||
component: () => import('@/views/newBI/index'),
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
component: () => import('@/views/newBI/guide')
|
||||
},
|
||||
{
|
||||
path: 'data_center',
|
||||
name: '数据中心',
|
||||
component: () => import('@/views/newBI/data_center')
|
||||
},
|
||||
{
|
||||
path: 'double_prevention',
|
||||
name: '双重预防管理',
|
||||
component: () => import('@/views/newBI/double_prevention')
|
||||
},
|
||||
{
|
||||
path: 'related_parties',
|
||||
name: '相关方管理',
|
||||
component: () => import('@/views/newBI/related_parties')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/BI',
|
||||
name: 'BI',
|
||||
|
|
|
@ -90,17 +90,22 @@
|
|||
.el-dialog__title{
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
// card样式修正
|
||||
.el-card__header {
|
||||
padding: 12px 20px;
|
||||
color: #000;
|
||||
//当使用card时(class="box-card a")这样写class样式就对了
|
||||
.el-card{
|
||||
&:not(.a){
|
||||
// card样式修正
|
||||
.el-card__header {
|
||||
padding: 12px 20px;
|
||||
color: #000;
|
||||
&::before{
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: 20px;
|
||||
width: 6px;
|
||||
background-color: #1890ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-card__header::before{
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
height: 20px;
|
||||
width: 6px;
|
||||
background-color: #1890ff;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
export default async function useDownloadFile(url) {
|
||||
if (!url) throw new Error('没有下载地址')
|
||||
fetch(config.fileUrl + url)
|
||||
.then((res) => res.blob())
|
||||
.then((blob) => {
|
||||
const a = document.createElement('a')
|
||||
document.body.appendChild(a)
|
||||
a.style.display = 'none'
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
a.href = url
|
||||
a.download = url.substring(url.lastIndexOf('/') + 1)
|
||||
a.click()
|
||||
document.body.removeChild(a)
|
||||
window.URL.revokeObjectURL(url)
|
||||
})
|
||||
}
|
|
@ -212,11 +212,11 @@
|
|||
</div>
|
||||
<div v-for="(item,index) in safetyEnvironmentalInspectionList" :key="index">
|
||||
<span>{{
|
||||
item.INSPECTION_PLACE.length > 6 ? item.INSPECTION_PLACE.substr(0, 6) + '...' : item.INSPECTION_PLACE
|
||||
}}</span>
|
||||
item.INSPECTION_PLACE.length > 6 ? item.INSPECTION_PLACE.substr(0, 6) + '...' : item.INSPECTION_PLACE
|
||||
}}</span>
|
||||
<span>{{
|
||||
item.INSPECTION_TIME_START.length > 10 ? item.INSPECTION_TIME_START.substr(0, 10) + '...' : item.INSPECTION_TIME_START
|
||||
}}</span>
|
||||
item.INSPECTION_TIME_START.length > 10 ? item.INSPECTION_TIME_START.substr(0, 10) + '...' : item.INSPECTION_TIME_START
|
||||
}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -507,7 +507,7 @@ export default {
|
|||
count3 = item.count
|
||||
}
|
||||
})
|
||||
this.safetyEnvironmentalInspectionList = data.insList.length > 4 ? data.insList.splice(0,4) : data.insList
|
||||
this.safetyEnvironmentalInspectionList = data.insList.length > 4 ? data.insList.splice(0, 4) : data.insList
|
||||
this.initEcharts4(count1, count2, count3)
|
||||
})
|
||||
},
|
||||
|
@ -553,9 +553,9 @@ export default {
|
|||
// }
|
||||
if (item.HIDDENLEVEL == 'hiddenLevel1004') { // 轻微隐患
|
||||
yinhuanCount[0] = item.count
|
||||
}else if (item.HIDDENLEVEL == 'hiddenLevel1002') { // 一般隐患
|
||||
} else if (item.HIDDENLEVEL == 'hiddenLevel1002') { // 一般隐患
|
||||
yinhuanCount[1] = item.count
|
||||
} else if (item.HIDDENLEVEL == 'jdyh001') { // 较大隐患
|
||||
} else if (item.HIDDENLEVEL == 'jdyh001') { // 较大隐患
|
||||
yinhuanCount[2] = item.count
|
||||
} else if (item.HIDDENLEVEL == 'hiddenLevel2002') { // 重大隐患
|
||||
yinhuanCount[3] = item.count
|
||||
|
|
|
@ -0,0 +1,262 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-loading="loading"
|
||||
v-if="dialogVisible"
|
||||
:append-to-body="appendToBody"
|
||||
:visible.sync="dialogVisible"
|
||||
:fullscreen="fullscreen"
|
||||
title="编辑">
|
||||
<el-input v-model="filterText" placeholder="输入关键字进行过滤"/>
|
||||
<div style="margin-top: 10px">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
:data="data"
|
||||
:props="defaultProps"
|
||||
:filter-node-method="filterNode"
|
||||
:expand-on-click-node="false"
|
||||
node-key="id"
|
||||
default-expand-all
|
||||
draggable>
|
||||
<span slot-scope="{ node, data }" class="custom-tree-node">
|
||||
<span>{{ node.label }}</span>
|
||||
<span>
|
||||
<el-button type="text" size="mini" @click="() => append(data)">添加下一级</el-button>
|
||||
<el-button
|
||||
:disabled="node.disabled === '1'"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="() => edit(data)">编辑</el-button>
|
||||
<el-button
|
||||
:disabled="node.disabled === '1'"
|
||||
type="text"
|
||||
size="mini"
|
||||
@click="() => remove(node, data)">删除</el-button>
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="goBack">取 消</el-button>
|
||||
<el-button type="primary" @click="addLabel">添加新根节点</el-button>
|
||||
<el-button v-if="!fullscreen" @click="implementFullscreen(true)">全 屏</el-button>
|
||||
<el-button v-if="fullscreen" @click="implementFullscreen(false)">推出全屏</el-button>
|
||||
<el-button type="primary" @click="saveTree">确 定</el-button>
|
||||
</div>
|
||||
<edit-son-label ref="editSonLabel" append-to-body @getResult="getResult"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
.el-divider--vertical {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import waves from '@/directive/waves'
|
||||
import uploadFile from '../../../components/upload-file'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import editSonLabel from './editSonLabel'
|
||||
|
||||
let id = 1000
|
||||
|
||||
export default {
|
||||
components: { uploadFile, Pagination, editSonLabel },
|
||||
directives: { waves },
|
||||
props: {
|
||||
appendToBody: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
data: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'NAME'
|
||||
},
|
||||
filterText: '',
|
||||
primogenitor: '',
|
||||
newPrimogenitor: '',
|
||||
options: [],
|
||||
addFlag: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 10
|
||||
},
|
||||
fullscreen: false,
|
||||
deleteIds: '',
|
||||
TYPE: '',
|
||||
v: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(e) {
|
||||
this.dialogVisible = true
|
||||
this.TYPE = e.TYPE
|
||||
this.choosePrimogenitor()
|
||||
},
|
||||
goBack() {
|
||||
this.dialogVisible = false
|
||||
this.clear()
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.NAME.indexOf(value) !== -1
|
||||
},
|
||||
append(data) {
|
||||
const newChild = { BUS_LABEL_FACTORY_ID: id++, label: 'test', children: [] }
|
||||
if (!data.children) {
|
||||
this.$set(data, 'children', [])
|
||||
}
|
||||
data.children.push(newChild)
|
||||
},
|
||||
edit(data) {
|
||||
this.$refs.editSonLabel.init(data)
|
||||
},
|
||||
remove(node, data) {
|
||||
this.$confirm('确定要删除节点吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
const parent = node.parent
|
||||
const children = parent.data.children || parent.data
|
||||
const index = children.findIndex(d => d.BUS_LABEL_FACTORY_ID === data.BUS_LABEL_FACTORY_ID)
|
||||
this.deleteIds = this.deleteIds + ',' + data.BUS_LABEL_FACTORY_ID
|
||||
children.splice(index, 1)
|
||||
}).catch(() => {
|
||||
this.$message({
|
||||
type: 'info',
|
||||
message: '取消删除'
|
||||
})
|
||||
})
|
||||
},
|
||||
getResult(e) {
|
||||
if (e && e.root && e.root === '1') {
|
||||
const newChild = { BUS_LABEL_FACTORY_ID: id++, IS_ANCESTORS_FLAG: '1', label: 'test', children: [], NAME: e.NAME }
|
||||
this.data.push(newChild)
|
||||
}
|
||||
this.data = this.analysis(JSON.parse(JSON.stringify(this.data)), e)
|
||||
},
|
||||
analysis(arr, e) {
|
||||
const index = arr.findIndex(item => item.BUS_LABEL_FACTORY_ID === e.BUS_LABEL_FACTORY_ID)
|
||||
if (index === -1) {
|
||||
for (const arrKey in arr) {
|
||||
(arr[arrKey].children && arr[arrKey].children.length > 0) && this.analysis(arr[arrKey].children, e)
|
||||
}
|
||||
}
|
||||
return arr
|
||||
},
|
||||
renderContent(h, { node, data, store }) {
|
||||
return (
|
||||
<span class='custom-tree-node'>
|
||||
<span>{node.label}</span>
|
||||
<span>
|
||||
<el-button size='mini' type='text' on-click={() => this.append(data)}>添加下一级</el-button>
|
||||
<el-button size='mini' type='text' on-click={() => this.remove(node, data)}>删除</el-button>
|
||||
</span>
|
||||
</span>)
|
||||
},
|
||||
openMeter() {
|
||||
this.addFlag = true
|
||||
},
|
||||
save() {
|
||||
this.addFlag = false
|
||||
this.loading = true
|
||||
requestFN(
|
||||
'/labelFactory/addAncestors',
|
||||
{
|
||||
NAME: this.newPrimogenitor,
|
||||
TYPE: this.TYPE
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.code !== '0') {
|
||||
this.$message.error(data.errorMessage)
|
||||
} else {
|
||||
this.$message.success('保存成功')
|
||||
}
|
||||
this.loading = false
|
||||
}).catch((e) => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
saveTree() {
|
||||
this.sort(this.data)
|
||||
if (this.data === null || this.data.length <= 0) {
|
||||
this.$message.error('不能删除根节点或保存项目为空')
|
||||
return
|
||||
}
|
||||
this.loading = true
|
||||
requestFN(
|
||||
'/labelFactory/saveTree',
|
||||
{
|
||||
tree: JSON.stringify(this.data),
|
||||
TYPE: this.TYPE
|
||||
}
|
||||
).then((data) => {
|
||||
this.loading = false
|
||||
this.dialogVisible = false
|
||||
this.$message.success('保存成功')
|
||||
this.clear()
|
||||
}).catch((e) => {
|
||||
this.loading = false
|
||||
this.$message.error(e)
|
||||
})
|
||||
},
|
||||
sort(arr) {
|
||||
for (const arrKey in arr) {
|
||||
arr[arrKey].SORT = arrKey
|
||||
if (arr[arrKey].children && arr[arrKey].children.length > 0) this.sort(arr[arrKey].children)
|
||||
}
|
||||
},
|
||||
clear() {
|
||||
this.addFlag = false
|
||||
this.options = []
|
||||
this.primogenitor = ''
|
||||
this.newPrimogenitor = ''
|
||||
this.data = []
|
||||
this.filterText = ''
|
||||
},
|
||||
choosePrimogenitor() {
|
||||
requestFN(
|
||||
'/labelFactory/tree',
|
||||
{
|
||||
IS_ANCESTORS_FLAG: '1'
|
||||
}
|
||||
).then((data) => {
|
||||
this.loading = false
|
||||
this.data = data.tree
|
||||
}).catch((e) => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
implementFullscreen(e) {
|
||||
this.fullscreen = e
|
||||
},
|
||||
|
||||
addLabel() {
|
||||
this.$refs.editSonLabel.init({ root: '1' })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,68 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-loading="loading"
|
||||
v-if="dialogVisible"
|
||||
:append-to-body="appendToBody"
|
||||
:visible.sync="dialogVisible"
|
||||
title="编辑">
|
||||
<el-input v-model="name" placeholder="请输入内容"/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="goBack">取 消</el-button>
|
||||
<el-button type="primary" @click="save">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import waves from '@/directive/waves'
|
||||
import uploadFile from '../../../components/upload-file'
|
||||
|
||||
export default {
|
||||
components: { uploadFile, Pagination },
|
||||
directives: { waves },
|
||||
props: {
|
||||
appendToBody: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
name: '',
|
||||
e: {}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(e) {
|
||||
this.e = e
|
||||
if (e) {
|
||||
this.name = e.NAME
|
||||
}
|
||||
this.dialogVisible = true
|
||||
},
|
||||
goBack() {
|
||||
this.dialogVisible = false
|
||||
},
|
||||
save() {
|
||||
this.e.NAME = this.name
|
||||
this.$emit('getResult', this.e)
|
||||
this.dialogVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,212 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-loading="loading"
|
||||
v-if="dialogVisible"
|
||||
:append-to-body="appendToBody"
|
||||
:visible.sync="dialogVisible"
|
||||
:fullscreen = "fullscreen"
|
||||
:title="title"
|
||||
width="70%">
|
||||
<el-input v-model="filterText" style="padding-bottom: 10px" placeholder="输入关键字进行过滤"/>
|
||||
<div class="information">
|
||||
<el-scrollbar style="height: 500px;margin-bottom: 10px">
|
||||
<el-tree
|
||||
ref="tree"
|
||||
:data="data"
|
||||
:props="defaultProps"
|
||||
:filter-node-method="filterNode"
|
||||
:expand-on-click-node="false"
|
||||
:lazy="lazy"
|
||||
:load="getCategory"
|
||||
:check-strictly="checkStrictly"
|
||||
show-checkbox
|
||||
node-key="id"
|
||||
/>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="goBack">取 消</el-button>
|
||||
<el-button v-if="false" type="primary" @click="clearInfo">清空查询条件</el-button>
|
||||
<el-button v-if="!fullscreen" @click="implementFullscreen(true)">全 屏</el-button>
|
||||
<el-button v-if="fullscreen" @click="implementFullscreen(false)">退出全屏</el-button>
|
||||
<el-button type="primary" @click="save">确 定</el-button>
|
||||
</div>
|
||||
<edit-son-label ref="editSonLabel" append-to-body @getResult="getResult"/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
.el-divider--vertical{
|
||||
height: 100%;
|
||||
}
|
||||
.information >>> .el-scrollbar__wrap {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import waves from '@/directive/waves'
|
||||
import uploadFile from '../../../components/upload-file'
|
||||
import { requestFN } from '@/utils/request'
|
||||
import editSonLabel from './editSonLabel'
|
||||
|
||||
export default {
|
||||
components: { uploadFile, Pagination, editSonLabel },
|
||||
directives: { waves },
|
||||
props: {
|
||||
appendToBody: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '编辑'
|
||||
},
|
||||
lazy: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
checkStrictly: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
loading: false,
|
||||
data: [],
|
||||
defaultProps: {
|
||||
children: 'children',
|
||||
label: 'NAME'
|
||||
},
|
||||
filterText: '',
|
||||
primogenitor: '',
|
||||
label: '',
|
||||
newPrimogenitor: '',
|
||||
A_options: [],
|
||||
B_options: [],
|
||||
addFlag: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 10
|
||||
},
|
||||
fullscreen: false,
|
||||
labelList: [],
|
||||
type: ''
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
filterText(val) {
|
||||
this.$refs.tree.filter(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
init(e) {
|
||||
this.dialogVisible = true
|
||||
if (e.labels && e.labels.length > 0) {
|
||||
this.data = e.labels
|
||||
} else {
|
||||
requestFN(
|
||||
'/labelFactory/tree',
|
||||
{
|
||||
IS_ANCESTORS_FLAG: '1'
|
||||
}
|
||||
).then((data) => {
|
||||
this.loading = false
|
||||
this.data = data.tree
|
||||
}).catch((e) => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
goBack() {
|
||||
this.dialogVisible = false
|
||||
this.clear()
|
||||
},
|
||||
filterNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.NAME.indexOf(value) !== -1
|
||||
},
|
||||
getResult(e) {
|
||||
this.analysis(this.data, e)
|
||||
this.$forceUpdate()
|
||||
},
|
||||
analysis(arr, e) {
|
||||
const index = arr.findIndex(item => item.BUS_LABEL_FACTORY_ID === e.BUS_LABEL_FACTORY_ID)
|
||||
if (index !== -1) {
|
||||
this.$set(arr[index], 'aa', e.NAME)
|
||||
} else {
|
||||
for (const arrKey in arr) {
|
||||
(arr[arrKey].children && arr[arrKey].children.length > 0) && this.analysis(arr[arrKey].children, e)
|
||||
}
|
||||
}
|
||||
},
|
||||
save() {
|
||||
const list = this.$refs.tree.getCheckedNodes()
|
||||
if (this.limit !== 0) {
|
||||
if (list.length > this.limit) {
|
||||
this.$message.error('超出可选个数')
|
||||
return
|
||||
}
|
||||
}
|
||||
this.$emit('getResult', { chooseList: this.$refs.tree.getCheckedNodes(), e: this.$refs.tree.getCheckedNodes(false, true), TYPE: this.type })
|
||||
this.dialogVisible = false
|
||||
this.clear()
|
||||
},
|
||||
implementFullscreen(e) {
|
||||
this.fullscreen = e
|
||||
},
|
||||
clearInfo(row) {
|
||||
this.$refs.table.setCurrentRow(row)
|
||||
this.label = ''
|
||||
this.primogenitor = ''
|
||||
requestFN(
|
||||
'/labelFactory/getAncestors'
|
||||
).then((data) => {
|
||||
this.loading = false
|
||||
this.labelList = data.list
|
||||
}).catch((e) => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
clear() {
|
||||
this.label = ''
|
||||
this.A_options = []
|
||||
this.labelList = []
|
||||
this.data = []
|
||||
},
|
||||
getCategory(node, resolve) {
|
||||
console.log(node)
|
||||
if (node.level === 0) {
|
||||
return resolve(node.data)
|
||||
}
|
||||
if (node.level >= 1) {
|
||||
requestFN(
|
||||
'dictionaries/getLevels', { DICTIONARIES_ID: node.data.DICTIONARIES_ID }
|
||||
).then((data) => {
|
||||
return resolve(data.list)
|
||||
}).catch((e) => {
|
||||
console.log(e)
|
||||
})
|
||||
}
|
||||
return resolve([])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,288 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="KEYWORDS" placeholder="盒子名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="创建人">
|
||||
<el-input v-model="CREATOR" placeholder="创建人"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="dates"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="getReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="varList"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="AIBOX_NAME" label="盒子名称" align="center"/>
|
||||
<el-table-column prop="PROMISE_NAME" label="创建企业" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.CORP_NAME != null">{{ row.CORP_NAME }} </span>
|
||||
<span v-else>秦皇岛港股份有限公司</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_NAME" label="创建人" align="center"/>
|
||||
<el-table-column prop="CREATE_TIME" label="创建时间" align="center"/>
|
||||
<el-table-column prop="STATE" label="设备状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.STATE === '0' ? '离线' : '在线' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CAPACITY" label="已配置算法/总视频数" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ALGO_COUNT + '/' + row.setCount }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="420">
|
||||
<template slot-scope="{row}">
|
||||
<el-button type="primary" icon="el-icon-s-tools" size="mini" @click="handleEdit(row)">查看</el-button>
|
||||
<el-button v-if="edit && row.STATE === '1'" style="background-color: grey; color: white" type="Info" icon="el-icon-error" plain @click="handleOnline(row.AIBOX_ID,0)">离线</el-button>
|
||||
<el-button v-if="edit && row.STATE === '0'" style="background-color: seagreen; color: white" type="info" icon="el-icon-success" plain @click="handleOnline(row.AIBOX_ID,1)">上线</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
export default {
|
||||
components: { Pagination },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
KEYWORDS: '',
|
||||
add: '',
|
||||
del: '',
|
||||
edit: '',
|
||||
CREATOR: '',
|
||||
dates: [],
|
||||
varList: [],
|
||||
corpinfoAllList: [],
|
||||
capacityList: [{ name: '4', value: 4 }, { name: '8', value: 8 }, { name: '12', value: 12 }],
|
||||
addForm: {
|
||||
dialogType: 'add', // 增or改
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
AIBOX_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CAPACITY: [{ required: true, message: '不可为空', trigger: 'blur' }]
|
||||
},
|
||||
info: {
|
||||
AIBOX_NAME: '',
|
||||
CAPACITY: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCoroInfoAll()
|
||||
this.getList()
|
||||
this.hasButton()
|
||||
},
|
||||
methods: {
|
||||
handleOnline(AIBOX_ID, STATE) {
|
||||
requestFN(
|
||||
'/aibox/edit',
|
||||
{
|
||||
AIBOX_ID: AIBOX_ID,
|
||||
STATE: STATE
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
getCoroInfoAll() {
|
||||
requestFN(
|
||||
'/corpinfo/listSelect',
|
||||
{ }
|
||||
).then((data) => {
|
||||
this.corpinfoAllList = data.list
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.getList()
|
||||
},
|
||||
// 搜索
|
||||
getReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.dates = []
|
||||
this.CREATOR = ''
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
this.total = 0
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
KEYWORDS: this.KEYWORDS,
|
||||
CREATOR: this.CREATOR,
|
||||
START_TIME: this.dates && this.dates[0],
|
||||
END_TIME: this.dates && this.dates[1]
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
goView(AIBOX_ID) {
|
||||
requestFN(
|
||||
'/aibox/goEdit',
|
||||
{
|
||||
AIBOX_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.dialog.data = { ...data.varList, COVERPEOPLE: 'XXX' }
|
||||
this.dialog.visible = true
|
||||
})
|
||||
},
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/delete',
|
||||
{
|
||||
AIBOX_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error(data.msg)
|
||||
}
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
this.$refs.addForm.validate(valid => {
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/aibox/' + this.addForm.dialogType,
|
||||
{
|
||||
...this.addForm.info
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
resetAddForm() {
|
||||
this.addForm.info = {
|
||||
AIBOX_ID: '',
|
||||
AIBOX_NAME: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.$parent.activeName = 'VideoList'
|
||||
this.$parent.AIBOX_ID = row.AIBOX_ID
|
||||
this.$parent.AIBOX_NAME = row.AIBOX_NAME
|
||||
this.$parent.CAPACITY = row.CAPACITY
|
||||
},
|
||||
// 添加
|
||||
handleAdd() {
|
||||
this.resetAddForm()
|
||||
this.addForm.dialogType = 'add'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'aiboxManager:add,aiboxManager:del,aiboxManager:edit'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.aiboxManagerfhadminadd // 新增权限
|
||||
this.del = data.aiboxManagerfhadmindel // 删除权限
|
||||
this.edit = data.aiboxManagerfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,865 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="3">
|
||||
<el-page-header content="算法配置申请" @back="goBack"/>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="KEYWORDS" placeholder="视频名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="getReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="VIDEO_NAME" label="视频名称" align="center"/>
|
||||
<el-table-column prop="VIDEO_URL" label="播放地址" align="center"/>
|
||||
<el-table-column prop="LONGITUDE" label="经纬度" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.LONGITUDE ? row.LONGITUDE + '-' + row.LATITUDE : '未定位' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="ALGO_NAME" label="算法" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ALGO_NAME ? row.ALGO_NAME : '未配置' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="STATE" label="状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.STATE === '0' ? '离线' : '在线' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="REVIEW_STATE" label="审核状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.REVIEW_STATE === '0' ? '未提交' : row.REVIEW_STATE === '1' ? '待审核' : row.REVIEW_STATE === '2' ? '审核打回' : row.REVIEW_STATE === '3' ? '审核通过' : '未申请' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="500">
|
||||
<template slot-scope="{row}">
|
||||
<el-button v-if="row.REVIEW_STATE && row.REVIEW_STATE !== '2'" type="success" icon="el-icon-view" size="mini" @click="handleAlgorithm(row,'view')">查看</el-button>
|
||||
<el-button type="success" icon="el-icon-caret-right" size="mini" @click="showVideo(row)">播放</el-button>
|
||||
<el-button v-if="edit" type="info" icon="el-icon-location-information" size="mini" @click="handleMap(row)">定位</el-button>
|
||||
<el-button v-if="edit && row.VIDEO_TYPE === '0'" type="warning" size="mini" @click="getRTSP(row)">获取rtsp地址</el-button>
|
||||
<el-button v-if="edit && !row.REVIEW_STATE || row.REVIEW_STATE === '' || row.REVIEW_STATE === '0' && row.REVIEW_STATE !== '1'" type="primary" icon="el-icon-edit" size="mini" @click="handleAlgorithm(row,'add')">配置算法</el-button>
|
||||
<el-button v-else-if="edit && row.REVIEW_STATE && row.REVIEW_STATE !== '1' && row.REVIEW_STATE !== '2'" type="primary" icon="el-icon-edit" size="mini" @click="handleAlgorithm(row,'edit')">更改算法</el-button>
|
||||
<el-button v-else-if="edit && row.REVIEW_STATE && row.REVIEW_STATE !== '1' && row.REVIEW_STATE === '2'" type="danger" icon="el-icon-edit" size="mini" @click="handleAlgorithm(row,'edit')">重新配置</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog :visible.sync="dialogFormMap" title="定位" width="1050px" class="dy-dialog">
|
||||
<div id="map" />
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<span>经度:</span>
|
||||
<el-input v-model="addForm.info.LONGITUDE" style="width: 200px" placeholder="请输入内容" disabled />
|
||||
<span>纬度:</span>
|
||||
<el-input v-model="addForm.info.LATITUDE" style="width: 200px" placeholder="请输入内容" disabled />
|
||||
<el-button @click="dialogFormMap = false">取 消</el-button>
|
||||
<el-button type="primary" @click="setPosition()">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="addForm.dialogVisible" :title="addForm.dialogType==='add'?'新增': addForm.dialogType==='edit' ? '配置算法' : '查看'" width="600px">
|
||||
<el-form ref="addForm" :model="addForm.info" :rules="addForm.rules" label-width="110px" style="width: 600px;">
|
||||
<el-form-item label="视频名称" prop="VIDEO_NAME">
|
||||
<el-input :disabled="true" v-model="addForm.info.VIDEO_NAME" style="width: 80%" placeholder="这里输入视频名称..." />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="摄像头编号" prop="CODE">
|
||||
<el-input :disabled="true" v-model="addForm.info.CODE" style="width: 80%" placeholder="这里输入摄像头编号..." />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="算法数量:" prop="ALGO_LIMIT">
|
||||
<el-select v-model="addForm.info.ALGO_LIMIT" placeholder="请选择" style="width: 80%;" @change="removeExceed()">
|
||||
<el-option
|
||||
v-for="item in algoLimitList"
|
||||
:key="item.value"
|
||||
:label="item.value"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button v-if="addForm.info.ALGO_LIMIT > addForm.info.ALGORITHM.length" type="primary" style="width: 80% ; height: 35px ;" @click="addCollateral">增加算法</el-button>
|
||||
</el-form-item>
|
||||
|
||||
<el-col v-for="(item, index) in addForm.info.ALGORITHM" :key="item.id">
|
||||
<el-form-item :label="'算法' + (index + 1) + ':'" prop="ALGORITHM">
|
||||
<el-select v-model="item.BIANMA" style="width: 80%" placeholder="请选择" @change="setDisable">
|
||||
<el-option
|
||||
v-for="item in algorithmList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
:disabled="item.disabled"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取消</el-button>
|
||||
<el-button v-show="addForm.dialogType !== 'view'" type="primary" @click="confirm">提交申请</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideo" :visible.sync="dialogVideo" :show-close="false" title="视频2" width="600px">
|
||||
<iframe :src="VIDEOURL" width="100%" height="380" allowfullscreen allow="autoplay; fullscreen;microphone" style="position: relative;border:none"/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideoHLS" :visible.sync="dialogVideoHLS" :before-close="handleBack" :show-close="false" title="视频" width="600px">
|
||||
<div id="aLiVideoPlayer" class="prism-player"/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideoAll" :visible.sync="dialogVideoAll" :before-close="handleBack" title="视频" width="1200px">
|
||||
<!-- <iframe src="http://192.168.192.121:10800/?menu=no/#/screen" width="100%" height="500px" allowfullscreen allow="autoplay; fullscreen" style="position: relative;border:none"/>-->
|
||||
<div style="display: flex;flex-wrap: wrap;justify-content: space-between">
|
||||
<div v-for="(video,index) in videoList" :key="index" style="margin-bottom: 10px;width: 45%">
|
||||
<div v-if="video.HLSVIDEOURL" :id="'aLiVideoPlayer'+index" class="prism-player"/>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import TiandiMap from '../../../../components/TianMap/TiandiMap'
|
||||
|
||||
export default {
|
||||
components: { Pagination, TiandiMap },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
map: null,
|
||||
marker: null,
|
||||
BMap: '',
|
||||
clientHeight: 500,
|
||||
inputLocation: '',
|
||||
msg: 'add',
|
||||
config: config,
|
||||
listLoading: true,
|
||||
dialogForm: false,
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
dialogSelect: false,
|
||||
add: '',
|
||||
del: '',
|
||||
edit: '',
|
||||
dialogFormMap: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
KEYWORDS: '',
|
||||
dates: [],
|
||||
videoList: [],
|
||||
varList: [],
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
zoom: 10,
|
||||
rules: {
|
||||
VIDEONAME: [{ required: true, message: '视频名称不能为空', trigger: 'blur' }],
|
||||
CODE: [{ required: true, message: '摄像头编号不能为空', trigger: 'blur' }]
|
||||
},
|
||||
dialogVideo: false,
|
||||
dialogVideoHLS: false,
|
||||
dialogVideoBack: false,
|
||||
dialogVideoAll: false,
|
||||
player: {},
|
||||
playerList: [],
|
||||
VIDEOURL: '',
|
||||
corpinfoAllList: [],
|
||||
algoLimitList: [{ name: '4', value: 4 }, { name: '8', value: 8 }, { name: '12', value: 12 }],
|
||||
algorithmList: [],
|
||||
AIBOX_RELATION_ID: '',
|
||||
addForm: {
|
||||
dialogType: 'add', // 增or改
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
VIDEO_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CODE: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
ALGO_LIMIT: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
ALGORITHM: [{ required: true, message: '不可为空', trigger: 'blur' }]
|
||||
},
|
||||
info: {
|
||||
AIBOX_ID: this.$parent.AIBOX_ID,
|
||||
VIDEO_ID: '',
|
||||
VIDEO_TYPE: 0,
|
||||
VIDEO_NAME: '', //
|
||||
VIDEO_URL: '',
|
||||
CODE: '',
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
ALGORITHM: [],
|
||||
ALGO_LIMIT: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCoroInfoAll()
|
||||
this.getList()
|
||||
this.hasButton()
|
||||
},
|
||||
beforeDestroy() {
|
||||
console.log('定时器关闭')
|
||||
clearInterval(this.timer)
|
||||
this.map && this.map.removeEventListener('click', this.MapClick)
|
||||
},
|
||||
methods: {
|
||||
// 选项处理
|
||||
setDisable() {
|
||||
this.algorithmList.forEach(item => {
|
||||
item.disabled = false
|
||||
this.addForm.info.ALGORITHM.forEach(value => {
|
||||
if (value.BIANMA === item.BIANMA) {
|
||||
item.disabled = true
|
||||
}
|
||||
})
|
||||
})
|
||||
this.$forceUpdate()
|
||||
},
|
||||
removeExceed() {
|
||||
if (this.addForm.info.ALGO_LIMIT < this.addForm.info.ALGORITHM.length) {
|
||||
while (this.addForm.info.ALGO_LIMIT < this.addForm.info.ALGORITHM.length) {
|
||||
this.addForm.info.ALGORITHM.pop()
|
||||
}
|
||||
}
|
||||
this.$forceUpdate()
|
||||
},
|
||||
addCollateral() {
|
||||
this.setDisable()
|
||||
this.addForm.info.ALGORITHM.push({ BIANMA: '' })
|
||||
},
|
||||
bobilehandleSelected(row) {
|
||||
this.$set(this.addForm.info, 'VIDEO_URL', row.VIDEOURL)
|
||||
this.$set(this.addForm.info, 'VIDEO_NAME', row.VIDEONAME)
|
||||
this.$set(this.addForm.info, 'CODE', row.CODE)
|
||||
this.$set(this.addForm.info, 'VIDEO_ID', row.VIDEO_RESOURCES_ID)
|
||||
this.$forceUpdate()
|
||||
},
|
||||
getCoroInfoAll() {
|
||||
requestFN(
|
||||
'/corpinfo/listSelect',
|
||||
{ }
|
||||
).then((data) => {
|
||||
this.corpinfoAllList = data.list
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
selectBobileVideo() {
|
||||
this.$refs.bobileCamer.init()
|
||||
},
|
||||
// 搜索
|
||||
getReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
this.total = 0
|
||||
this.getQuery()
|
||||
},
|
||||
/**
|
||||
* 初始化天地图对象
|
||||
*/
|
||||
initTDT() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (window.T) {
|
||||
console.log('天地图初始化成功...')
|
||||
resolve(window.T)
|
||||
reject('error')
|
||||
}
|
||||
}).then(T => {
|
||||
window.T = T
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 初始化地图
|
||||
* @param {*} lng 经度
|
||||
* @param {*} lat 纬度
|
||||
* @param {*} zoom 缩放比例(1~18)
|
||||
*/
|
||||
initMap(lng, lat, zoom) {
|
||||
this.initTDT().then((T) => {
|
||||
const imageURL = 'http://t0.tianditu.gov.cn/img_w/wmts?' + 'SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles' + '&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=e8a16137fd226a62a23cc7ba5c9c78ce'
|
||||
// 创建自定义图层对象
|
||||
this.lay = new window.T.TileLayer(imageURL, { minZoom: 1, maxZoom: 18 })
|
||||
// 初始化地图对象
|
||||
this.map = new window.T.Map('map')
|
||||
this.initCenter(lng, lat, zoom)
|
||||
})
|
||||
},
|
||||
initCenter(lng, lat, zoom) {
|
||||
// 设置显示地图的中心点和级别
|
||||
if (!this.addForm.info.LONGITUDE && !this.addForm.info.LATITUDE) {
|
||||
this.map.centerAndZoom(new window.T.LngLat(119.58, 39.94), zoom)
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
} else {
|
||||
this.map.centerAndZoom(new window.T.LngLat(lng, lat), zoom)
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
this.addForm.info.LONGITUDE = lng
|
||||
this.addForm.info.LATITUDE = lat
|
||||
this.marker = new window.T.Marker(new window.T.LngLat(lng, lat))
|
||||
// 向地图上添加标注
|
||||
this.map.addOverLay(this.marker)
|
||||
}
|
||||
// 创建卫星和路网的混合视图
|
||||
this.map.setMapType(window.TMAP_HYBRID_MAP)
|
||||
// 允许鼠标滚轮缩放地图
|
||||
this.map.enableScrollWheelZoom()
|
||||
// 允许鼠标移动地图
|
||||
this.map.enableInertia()
|
||||
// 向地图上添加标注
|
||||
this.map.addEventListener('click', this.MapClick)
|
||||
},
|
||||
MapClick(event) {
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
this.addForm.info.LONGITUDE = event.lnglat.getLng()
|
||||
this.addForm.info.LATITUDE = event.lnglat.getLat()
|
||||
this.marker = new window.T.Marker(new window.T.LngLat(event.lnglat.getLng(), event.lnglat.getLat()))
|
||||
// 向地图上添加标注
|
||||
this.map.addOverLay(this.marker)
|
||||
},
|
||||
handleMap(row) {
|
||||
this.dialogFormMap = true
|
||||
this.AIBOX_RELATION_ID = row.AIBOX_RELATION_ID
|
||||
this.addForm.info = {
|
||||
...this.addForm.info,
|
||||
LATITUDE: row.LATITUDE,
|
||||
LONGITUDE: row.LONGITUDE
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
if (!this.map) this.initMap(this.addForm.info.LONGITUDE, this.addForm.info.LATITUDE, 16)
|
||||
else this.initCenter(this.addForm.info.LONGITUDE, this.addForm.info.LATITUDE, 16)
|
||||
})
|
||||
},
|
||||
getRowKey(row) {
|
||||
return row.AIBOX_RELATION_ID
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
// 五分钟关闭视频播放页面定时任务
|
||||
start() {
|
||||
console.log('定时器开启')
|
||||
this.timer = setInterval(this.closeVideoStart, (5 * 60 * 1000)) // 5分钟
|
||||
},
|
||||
over() {
|
||||
// 定时器手动关闭
|
||||
console.log('定时器自动关闭')
|
||||
this.$message.warning('单次播放时长已到5分钟自动关闭')
|
||||
clearInterval(this.timer)
|
||||
},
|
||||
closeVideoStart() {
|
||||
this.dialogVideo = false
|
||||
this.dialogVideoHLS = false
|
||||
this.dialogVideoBack = false
|
||||
this.dialogVideoAll = false
|
||||
this.over()
|
||||
},
|
||||
// 播放
|
||||
handleBack() {
|
||||
if (this.dialogVideoAll) {
|
||||
for (let i = 0; i < this.playerList.length; i++) {
|
||||
this.playerList[i].dispose()
|
||||
}
|
||||
this.dialogVideoAll = false
|
||||
}
|
||||
if (this.dialogVideoHLS) {
|
||||
this.player.dispose()
|
||||
this.dialogVideoHLS = false
|
||||
}
|
||||
},
|
||||
showVideo(row) {
|
||||
this.$message.warning('单次播放最多五分钟')
|
||||
this.start()
|
||||
if (row.VIDEO_TYPE === '0') {
|
||||
this.VIDEOURL = row.VIDEO_URL
|
||||
this.dialogVideo = true
|
||||
} else {
|
||||
requestFN(
|
||||
'/platformvideomanagement/getHlsPath',
|
||||
{
|
||||
INDEXCODE: row.CODE
|
||||
}
|
||||
).then((res) => {
|
||||
this.dialogVideoHLS = true
|
||||
this.$nextTick(() => {
|
||||
// eslint-disable-next-line no-undef
|
||||
this.player = new Aliplayer({
|
||||
'id': 'aLiVideoPlayer',
|
||||
'source': res.data.url,
|
||||
'width': '100%',
|
||||
'height': '500px',
|
||||
'autoplay': true,
|
||||
'isLive': true,
|
||||
'rePlay': false,
|
||||
'playsinline': true,
|
||||
'preload': true,
|
||||
'controlBarVisibility': 'hover',
|
||||
'useH5Prism': true
|
||||
}, function(player) {
|
||||
console.log('The player is created')
|
||||
})
|
||||
})
|
||||
}).catch((e) => {
|
||||
this.over()
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
setPosition() {
|
||||
this.dialogFormMap = false
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/edit',
|
||||
{
|
||||
LATITUDE: this.addForm.info.LATITUDE,
|
||||
LONGITUDE: this.addForm.info.LONGITUDE,
|
||||
AIBOX_RELATION_ID: this.AIBOX_RELATION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('定位成功')
|
||||
this.listLoading = false
|
||||
this.dialogForm = false
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
getRTSP(row) {
|
||||
requestFN(
|
||||
'/platformvideomanagement/getRtspPath',
|
||||
{
|
||||
INDEXCODE: row.CODE
|
||||
}
|
||||
).then((res) => {
|
||||
this.notify(res.data.url)
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
showAll() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要播放的视频...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.VIDEO_ID
|
||||
}).join(',')
|
||||
this.videoList = []
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/goAllVideo',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then((data) => {
|
||||
this.videoList = data.videoList
|
||||
this.listLoading = false
|
||||
this.dialogVideoAll = true
|
||||
this.playerList = []
|
||||
this.$nextTick(() => {
|
||||
for (let i = 0; i < this.videoList.length; i++) {
|
||||
if (!this.videoList[i].HLSVIDEOURL) continue
|
||||
// eslint-disable-next-line no-undef
|
||||
const player = new Aliplayer({
|
||||
'id': 'aLiVideoPlayer' + i,
|
||||
'source': this.videoList[i].HLSVIDEOURL.data.url,
|
||||
'width': '100%',
|
||||
'height': '500px',
|
||||
'autoplay': true,
|
||||
'isLive': true,
|
||||
'rePlay': false,
|
||||
'playsinline': true,
|
||||
'preload': true,
|
||||
'controlBarVisibility': 'hover',
|
||||
'useH5Prism': true
|
||||
}, function(player) {
|
||||
console.log('The player is created')
|
||||
})
|
||||
this.playerList.push(player)
|
||||
}
|
||||
})
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
KEYWORDS: this.KEYWORDS,
|
||||
AIBOX_ID: this.$parent.AIBOX_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 添加
|
||||
handleAdd() {
|
||||
this.resetAddForm()
|
||||
this.addForm.dialogType = 'add'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
|
||||
getAlgorithmList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/dictionaries/getLevels',
|
||||
{
|
||||
DICTIONARIES_ID: 'abee5542786e4b25a3bfc835215f2a28'
|
||||
}
|
||||
).then((data) => {
|
||||
this.algorithmList = data.list
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
handleAlgorithm(row, dialogType) {
|
||||
this.getAlgorithmList()
|
||||
this.resetAddForm()
|
||||
this.AIBOX_RELATION_ID = row.AIBOX_RELATION_ID
|
||||
this.addForm.info.VIDEO_ID = row.VIDEO_ID
|
||||
this.addForm.info.AIBOX_ID = row.AIBOX_ID
|
||||
this.addForm.info.VIDEO_NAME = row.VIDEO_NAME
|
||||
this.addForm.info.VIDEO_URL = row.VIDEO_URL
|
||||
this.addForm.info.CODE = row.CODE
|
||||
this.addForm.info.VIDEO_TYPE = parseInt(row.VIDEO_TYPE)
|
||||
if (dialogType === 'edit' || dialogType === 'view') {
|
||||
requestFN(
|
||||
'/aiboxAlgorithm/findByRelation',
|
||||
{
|
||||
AIBOX_RELATION_ID: row.AIBOX_RELATION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
const result = data.dataPd
|
||||
this.addForm.info.ALGO_LIMIT = result.ALGO_LIMIT
|
||||
const bianmaList = result.BIANMA.replace(/,$/, '').split(',')
|
||||
for (let i = 0; i < bianmaList.length; i++) {
|
||||
this.addForm.info.ALGORITHM.push({ 'BIANMA': bianmaList[i] })
|
||||
}
|
||||
this.setDisable()
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
this.addForm.dialogType = dialogType
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
|
||||
selectVideo(row) {
|
||||
this.$refs.platformvideo.init()
|
||||
},
|
||||
|
||||
handleSelected(row) {
|
||||
this.$set(this.form, 'VIDEONAME', row.NAME)
|
||||
this.$set(this.form, 'CODE', row.INDEXCODE)
|
||||
this.$set(this.form, 'PLATFORMVIDEOMANAGEMENT_ID', row.PLATFORMVIDEOMANAGEMENT_ID)
|
||||
},
|
||||
|
||||
// 获取详情
|
||||
getData() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/goEdit',
|
||||
{
|
||||
GATEVIDEO_ID: this.form.GATEVIDEO_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.form = data.pd
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 保存
|
||||
save() {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/' + this.msg,
|
||||
{
|
||||
VIDEONAME: this.form.VIDEONAME,
|
||||
CODE: this.form.CODE,
|
||||
GATEVIDEO_ID: this.form.GATEVIDEO_ID,
|
||||
GATE_AREA_ID: this.$parent.GATE_AREA_ID,
|
||||
PLATFORMVIDEOMANAGEMENT_ID: this.form.PLATFORMVIDEOMANAGEMENT_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.dialogForm = false
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
resetAddForm() {
|
||||
this.AIBOX_RELATION_ID = ''
|
||||
this.addForm.info = {
|
||||
VIDEO_TYPE: '',
|
||||
VIDEO_NAME: '',
|
||||
VIDEO_URL: '',
|
||||
CODE: '',
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
ALGORITHM: [],
|
||||
ALGO_LIMIT: ''
|
||||
}
|
||||
this.addForm.dialogType = ''
|
||||
},
|
||||
changeType(e) {
|
||||
if (e === 1) {
|
||||
this.addForm.info.VIDEO_TYPE = 1
|
||||
} else {
|
||||
this.addForm.info.VIDEO_TYPE = 0
|
||||
}
|
||||
this.addForm.info.VIDEO_NAME = ''
|
||||
this.addForm.info.VIDEO_URL = ''
|
||||
this.addForm.info.CODE = ''
|
||||
this.addForm.info.LATITUDE = ''
|
||||
this.addForm.info.LONGITUDE = ''
|
||||
this.addForm.info.ALGO_LIMIT = ''
|
||||
this.$forceUpdate()
|
||||
},
|
||||
confirm() {
|
||||
if (this.addForm.info.ALGORITHM.length < 1) {
|
||||
this.$message.warning('选择的算法数量不能小于1')
|
||||
} else {
|
||||
for (let i = 0; i < this.addForm.info.ALGORITHM.length; i++) {
|
||||
if (this.addForm.info.ALGORITHM[i].BIANMA === '') {
|
||||
this.$message.warning('您选择的第' + (i + 1) + '个算法为空,请检查后提交')
|
||||
return
|
||||
}
|
||||
}
|
||||
let BIANMA = ''
|
||||
if (this.addForm.info.ALGORITHM) {
|
||||
for (let i = 0; i < this.addForm.info.ALGORITHM.length; i++) {
|
||||
if (this.addForm.info.ALGORITHM[i].BIANMA !== '' && this.addForm.info.ALGORITHM[i].BIANMA !== null) {
|
||||
BIANMA = BIANMA + this.addForm.info.ALGORITHM[i].BIANMA + ','
|
||||
}
|
||||
}
|
||||
}
|
||||
this.$refs.addForm.validate(valid => {
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/aiboxAlgorithm/' + this.addForm.dialogType,
|
||||
{
|
||||
...this.addForm.info,
|
||||
BIANMA: BIANMA,
|
||||
AIBOX_RELATION_ID: this.AIBOX_RELATION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/delete',
|
||||
{
|
||||
AIBOX_RELATION_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error(data.msg)
|
||||
}
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
batchDel() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要删除的项...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.GATEVIDEO_ID
|
||||
}).join(',')
|
||||
|
||||
this.$confirm('确定要删除选中的数据吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/deleteAll',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then(() => {
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
goKeyReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.getList()
|
||||
},
|
||||
|
||||
back() {
|
||||
if (this.addForm.dialogVisible) this.addForm.dialogVisible = false
|
||||
if (this.dialogVideo) this.dialogVideo = false
|
||||
if (this.dialogVideoBack) this.dialogVideoBack = false
|
||||
if (this.dialogVideoAll) {
|
||||
this.dialogVideoAll = false
|
||||
for (let i = 0; i < this.playerList.length; i++) {
|
||||
this.playerList[i].dispose()
|
||||
}
|
||||
}
|
||||
if (this.dialogForm) this.dialogForm = false
|
||||
if (this.dialogVideoHLS) {
|
||||
this.dialogVideoHLS = false
|
||||
this.player.dispose()
|
||||
}
|
||||
},
|
||||
|
||||
resetForm() {
|
||||
this.form = {
|
||||
GATEVIDEO_ID: '',
|
||||
VIDEONAME: '', //
|
||||
PLATFORMVIDEOMANAGEMENT_ID: ''
|
||||
}
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.activeName = 'List'
|
||||
this.$parent.GATE_MACHINE_ID = ''
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'aiboxApply:add,aiboxApply:del,aiboxApply:edit'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.aiboxApplyfhadminadd // 新增权限
|
||||
this.del = data.aiboxApplyfhadmindel // 删除权限
|
||||
this.edit = data.aiboxApplyfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.ui-foot-xuan {
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
position: inherit;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
background-color: #f1f1f1;
|
||||
text-align: center;
|
||||
}
|
||||
#map{
|
||||
width: 1000px;
|
||||
height: 500px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,21 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<transition name="fade" mode="out-in">
|
||||
<component :is="activeName"/>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import VideoList from './components/videoList'
|
||||
export default {
|
||||
components: { List, VideoList },
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
PROMISE_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,454 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="KEYWORDS" placeholder="盒子名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="创建人">
|
||||
<el-input v-model="CREATOR" placeholder="创建人"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="dates"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4" style="text-align: right">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="getReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="varList"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="AIBOX_NAME" label="盒子名称" align="center"/>
|
||||
<el-table-column prop="PROMISE_NAME" label="创建企业" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.CORP_NAME != null">{{ row.CORP_NAME }} </span>
|
||||
<span v-else>秦皇岛港股份有限公司</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_NAME" label="创建人" align="center"/>
|
||||
<el-table-column prop="CREATE_TIME" label="创建时间" align="center"/>
|
||||
<el-table-column prop="STATE" label="设备状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.STATE === '0' ? '离线' : '在线' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CAPACITY" label="容量" align="center"/>
|
||||
<el-table-column label="操作" align="center" width="420">
|
||||
<template slot-scope="{row}">
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="goView(row)">查看</el-button>
|
||||
<el-button v-if="edit" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row)">修改</el-button>
|
||||
<el-button v-if="edit && row.STATE === '1'" style="background-color: grey; color: white" type="Info" icon="el-icon-error" plain @click="handleOnline(row.AIBOX_ID,0)">离线</el-button>
|
||||
<el-button v-if="edit && row.STATE === '0'" style="background-color: seagreen; color: white" type="info" icon="el-icon-success" plain @click="handleOnline(row.AIBOX_ID,1)">上线</el-button>
|
||||
<el-button v-if="del" type="danger" icon="el-icon-delete" plain @click="handleDelete(row.AIBOX_ID)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div>
|
||||
<el-button v-if="add" type="primary" icon="el-icon-plus" @click="handleAdd">新增</el-button>
|
||||
</div>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
|
||||
<el-dialog
|
||||
:visible.sync="addForm.dialogVisible"
|
||||
:title="addForm.dialogType === 'add' ? '新增' : addForm.dialogType === 'edit' ? '编辑' : '查看'"
|
||||
width="40%">
|
||||
<el-form
|
||||
ref="addForm"
|
||||
:rules="addForm.rules"
|
||||
:model="addForm.info"
|
||||
label-position="right"
|
||||
label-width="150px"
|
||||
style="padding:10px 10px">
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="盒子名称:" prop="AIBOX_NAME">
|
||||
<el-input v-model="addForm.info.AIBOX_NAME" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="设备名称:" prop="DEVICE_NAME">
|
||||
<el-input v-model="addForm.info.DEVICE_NAME" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="序列号:" prop="SERIAL_NUMBER">
|
||||
<el-input v-model="addForm.info.SERIAL_NUMBER" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="软件版本:" prop="VERSION">
|
||||
<el-input v-model="addForm.info.VERSION" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="LAN1:" prop="LAN1">
|
||||
<el-input v-model="addForm.info.LAN1" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="LAN2:" prop="LAN2">
|
||||
<el-input v-model="addForm.info.LAN2" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="WFI:" prop="WFI">
|
||||
<el-input v-model="addForm.info.WFI" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-form-item label="容量:" prop="CAPACITY">
|
||||
<el-select v-model="addForm.info.CAPACITY" placeholder="请选择" style="width: 80%;" @change="$forceUpdate()">
|
||||
<el-option
|
||||
v-for="item in capacityList"
|
||||
:key="item.value"
|
||||
:label="item.value"
|
||||
:value="item.value"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-form-item label="所属企业:" prop="CORPINFO_ID">
|
||||
<el-select v-model="addForm.info.CORPINFO_ID" style="width: 80%;">
|
||||
<el-option v-for="item in corpinfoAllList" :key="item.CORPINFO_ID" :value="item.CORPINFO_ID" :label="item.CORP_NAME"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col>
|
||||
<el-row>
|
||||
<el-form-item label="备注:" prop="BEIZHU">
|
||||
<el-input v-model="addForm.info.BEIZHU" placeholder="请输入内容" style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div v-if="addForm.dialogType!== 'view'" slot="footer" class="dialog-footer">
|
||||
<el-button @click="addForm.dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="confirm">提 交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
export default {
|
||||
components: { Pagination },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
add: '',
|
||||
del: '',
|
||||
edit: '',
|
||||
total: 0,
|
||||
KEYWORDS: '',
|
||||
CREATOR: '',
|
||||
dates: [],
|
||||
varList: [],
|
||||
corpinfoAllList: [],
|
||||
capacityList: [{ name: '4', value: 4 }, { name: '8', value: 8 }, { name: '12', value: 12 }],
|
||||
stateList: [{ name: '在线', value: '1' }, { name: '离线', value: '0' }],
|
||||
addForm: {
|
||||
dialogType: 'add', // 增or改
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
AIBOX_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
DEVICE_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
SERIAL_NUMBER: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
VERSION: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
LAN1: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
LAN2: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
WFI: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CORPINFO_ID: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
STATE: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CAPACITY: [{ required: true, message: '不可为空', trigger: 'blur' }]
|
||||
},
|
||||
info: {
|
||||
AIBOX_NAME: '',
|
||||
DEVICE_NAME: '',
|
||||
SERIAL_NUMBER: '',
|
||||
VERSION: '',
|
||||
LAN1: '',
|
||||
LAN2: '',
|
||||
WFI: '',
|
||||
BEIZHU: '',
|
||||
CAPACITY: '',
|
||||
STATE: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCoroInfoAll()
|
||||
this.getList()
|
||||
this.hasButton()
|
||||
},
|
||||
methods: {
|
||||
getCoroInfoAll() {
|
||||
requestFN(
|
||||
'/corpinfo/listSelect',
|
||||
{ }
|
||||
).then((data) => {
|
||||
this.corpinfoAllList = data.list
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.getList()
|
||||
},
|
||||
// 搜索
|
||||
getReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.CREATOR = ''
|
||||
this.dates = []
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
this.total = 0
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
KEYWORDS: this.KEYWORDS,
|
||||
CREATOR: this.CREATOR,
|
||||
START_TIME: this.dates && this.dates[0],
|
||||
END_TIME: this.dates && this.dates[1]
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
// goView(AIBOX_ID) {
|
||||
// requestFN(
|
||||
// '/aibox/goEdit',
|
||||
// {
|
||||
// AIBOX_ID
|
||||
// }
|
||||
// ).then((data) => {
|
||||
// this.dialog.data = { ...data.varList, COVERPEOPLE: 'XXX' }
|
||||
// this.dialog.visible = true
|
||||
// })
|
||||
// },
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/delete',
|
||||
{
|
||||
AIBOX_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error(data.msg)
|
||||
}
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
this.$refs.addForm.validate(valid => {
|
||||
this.addForm.info.LATITUDE = this.LATITUDE
|
||||
this.addForm.info.LONGITUDE = this.LONGITUDE
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/aibox/' + this.addForm.dialogType,
|
||||
{
|
||||
...this.addForm.info
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
handleOnline(AIBOX_ID, STATE) {
|
||||
requestFN(
|
||||
'/aibox/edit',
|
||||
{
|
||||
AIBOX_ID: AIBOX_ID,
|
||||
STATE: STATE
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
resetAddForm() {
|
||||
this.addForm.info = {
|
||||
AIBOX_ID: '',
|
||||
AIBOX_NAME: '',
|
||||
CAPACITY: '',
|
||||
SERIAL_NUMBER: '',
|
||||
DEVICE_NAME: '',
|
||||
VERSION: '',
|
||||
LAN1: '',
|
||||
LAN2: '',
|
||||
WFI: '',
|
||||
STATE: '',
|
||||
BEIZHU: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.resetAddForm()
|
||||
this.addForm.info.AIBOX_ID = row.AIBOX_ID
|
||||
this.addForm.info.AIBOX_NAME = row.AIBOX_NAME
|
||||
this.addForm.info.CAPACITY = row.CAPACITY
|
||||
this.addForm.info.DEVICE_NAME = row.DEVICE_NAME
|
||||
this.addForm.info.SERIAL_NUMBER = row.SERIAL_NUMBER
|
||||
this.addForm.info.VERSION = row.VERSION
|
||||
this.addForm.info.LAN1 = row.LAN1
|
||||
this.addForm.info.LAN2 = row.LAN2
|
||||
this.addForm.info.WFI = row.WFI
|
||||
this.addForm.info.CORPINFO_ID = row.CORPINFO_ID
|
||||
this.addForm.info.STATE = row.STATE
|
||||
this.addForm.info.BEIZHU = row.BEIZHU
|
||||
this.addForm.dialogType = 'edit'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
goView(row) {
|
||||
this.resetAddForm()
|
||||
this.addForm.info.AIBOX_ID = row.AIBOX_ID
|
||||
this.addForm.info.AIBOX_NAME = row.AIBOX_NAME
|
||||
this.addForm.info.CAPACITY = row.CAPACITY
|
||||
this.addForm.info.DEVICE_NAME = row.DEVICE_NAME
|
||||
this.addForm.info.SERIAL_NUMBER = row.SERIAL_NUMBER
|
||||
this.addForm.info.VERSION = row.VERSION
|
||||
this.addForm.info.LAN1 = row.LAN1
|
||||
this.addForm.info.LAN2 = row.LAN2
|
||||
this.addForm.info.WFI = row.WFI
|
||||
this.addForm.info.CORPINFO_ID = row.CORPINFO_ID
|
||||
this.addForm.info.STATE = row.STATE
|
||||
this.addForm.info.BEIZHU = row.BEIZHU
|
||||
this.addForm.dialogType = 'view'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
// 添加
|
||||
handleAdd() {
|
||||
this.resetAddForm()
|
||||
this.addForm.dialogType = 'add'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'aiboxManager:add,aiboxManager:del,aiboxManager:edit'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.aiboxManagerfhadminadd // 新增权限
|
||||
this.del = data.aiboxManagerfhadmindel // 删除权限
|
||||
this.edit = data.aiboxManagerfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,20 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<transition name="fade" mode="out-in">
|
||||
<component :is="activeName"/>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import List from './components/list'
|
||||
export default {
|
||||
components: { List },
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
PROMISE_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -0,0 +1,289 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="KEYWORDS" placeholder="盒子名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="创建人">
|
||||
<el-input v-model="CREATOR" placeholder="创建人"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker
|
||||
v-model="dates"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
style="width: 80%;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="getReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="varList"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="AIBOX_NAME" label="盒子名称" align="center"/>
|
||||
<el-table-column prop="PROMISE_NAME" label="创建企业" align="center">
|
||||
<template slot-scope="{row}">
|
||||
<span v-if="row.CORP_NAME != null">{{ row.CORP_NAME }} </span>
|
||||
<span v-else>秦皇岛港股份有限公司</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CREATOR_NAME" label="创建人" align="center"/>
|
||||
<el-table-column prop="CREATE_TIME" label="创建时间" align="center"/>
|
||||
<el-table-column prop="STATE" label="设备状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.STATE === '0' ? '离线' : '在线' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CAPACITY" label="配置容量/总容量" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.setCount + '/' + row.CAPACITY }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="REVIEW_COUNT" label="待审核数" align="center"/>
|
||||
<el-table-column label="操作" align="center" width="420">
|
||||
<template slot-scope="{row}">
|
||||
<el-button type="primary" icon="el-icon-s-tools" size="mini" @click="handleEdit(row)">查看</el-button>
|
||||
<el-button v-if="edit && row.STATE === '1'" style="background-color: grey; color: white" type="Info" icon="el-icon-error" plain @click="handleOnline(row.AIBOX_ID,0)">离线</el-button>
|
||||
<el-button v-if="edit && row.STATE === '0'" style="background-color: seagreen; color: white" type="info" icon="el-icon-success" plain @click="handleOnline(row.AIBOX_ID,1)">上线</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
export default {
|
||||
components: { Pagination },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
listLoading: true,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
add: '',
|
||||
del: '',
|
||||
edit: '',
|
||||
KEYWORDS: '',
|
||||
CREATOR: '',
|
||||
dates: [],
|
||||
varList: [],
|
||||
corpinfoAllList: [],
|
||||
capacityList: [{ name: '4', value: 4 }, { name: '8', value: 8 }, { name: '12', value: 12 }],
|
||||
addForm: {
|
||||
dialogType: 'add', // 增or改
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
AIBOX_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CAPACITY: [{ required: true, message: '不可为空', trigger: 'blur' }]
|
||||
},
|
||||
info: {
|
||||
AIBOX_NAME: '',
|
||||
CAPACITY: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCoroInfoAll()
|
||||
this.getList()
|
||||
this.hasButton()
|
||||
},
|
||||
methods: {
|
||||
handleOnline(AIBOX_ID, STATE) {
|
||||
requestFN(
|
||||
'/aibox/edit',
|
||||
{
|
||||
AIBOX_ID: AIBOX_ID,
|
||||
STATE: STATE
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
getCoroInfoAll() {
|
||||
requestFN(
|
||||
'/corpinfo/listSelect',
|
||||
{ }
|
||||
).then((data) => {
|
||||
this.corpinfoAllList = data.list
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.getList()
|
||||
},
|
||||
// 搜索
|
||||
getReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.dates = []
|
||||
this.CREATOR = ''
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
this.total = 0
|
||||
this.getQuery()
|
||||
},
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/list?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
KEYWORDS: this.KEYWORDS,
|
||||
CREATOR: this.CREATOR,
|
||||
START_TIME: this.dates && this.dates[0],
|
||||
END_TIME: this.dates && this.dates[1]
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
goView(AIBOX_ID) {
|
||||
requestFN(
|
||||
'/aibox/goEdit',
|
||||
{
|
||||
AIBOX_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.dialog.data = { ...data.varList, COVERPEOPLE: 'XXX' }
|
||||
this.dialog.visible = true
|
||||
})
|
||||
},
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aibox/delete',
|
||||
{
|
||||
AIBOX_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error(data.msg)
|
||||
}
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
this.$refs.addForm.validate(valid => {
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/aibox/' + this.addForm.dialogType,
|
||||
{
|
||||
...this.addForm.info
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
resetAddForm() {
|
||||
this.addForm.info = {
|
||||
AIBOX_ID: '',
|
||||
AIBOX_NAME: '',
|
||||
CORPINFO_ID: ''
|
||||
}
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.$parent.activeName = 'VideoList'
|
||||
this.$parent.AIBOX_ID = row.AIBOX_ID
|
||||
this.$parent.AIBOX_NAME = row.AIBOX_NAME
|
||||
this.$parent.CAPACITY = row.CAPACITY
|
||||
},
|
||||
// 添加
|
||||
handleAdd() {
|
||||
this.resetAddForm()
|
||||
this.addForm.dialogType = 'add'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'aiboxManager:add,aiboxManager:del,aiboxManager:edit'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.aiboxManagerfhadminadd // 新增权限
|
||||
this.del = data.aiboxManagerfhadmindel // 删除权限
|
||||
this.edit = data.aiboxManagerfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,882 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form label-width="100px">
|
||||
<el-row>
|
||||
<el-col :span="3">
|
||||
<el-page-header content="算法配置审核" @back="goBack"/>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="关键词">
|
||||
<el-input v-model="KEYWORDS" placeholder="视频名称"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="审核状态:" class="is-required">
|
||||
<el-select v-model="STATE" placeholder="请选择" style="width: 205px">
|
||||
<el-option
|
||||
v-for="item in stateList"
|
||||
:key="item.name"
|
||||
:label="item.name"
|
||||
:value="item.value"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button type="success" icon="el-icon-view" size="mini" @click="getReset">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
ref="multipleTable"
|
||||
:data="varList"
|
||||
:header-cell-style="{
|
||||
'font-weight': 'bold',
|
||||
'color': '#000'
|
||||
}"
|
||||
tooltip-effect="dark"
|
||||
border
|
||||
fit
|
||||
highlight-current-row
|
||||
>
|
||||
<el-table-column
|
||||
:reserve-selection="true"
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="VIDEO_NAME" label="视频名称" align="center"/>
|
||||
<el-table-column prop="VIDEO_URL" label="播放地址" align="center"/>
|
||||
<el-table-column prop="LONGITUDE" label="经纬度" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.LONGITUDE ? row.LONGITUDE + '-' + row.LATITUDE : '未定位' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="ALGO_NAME" label="算法" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.ALGO_NAME ? row.ALGO_NAME : '未配置' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="REVIEW_STATE" label="审核状态" align="center">
|
||||
<template slot-scope="{row}">
|
||||
{{ row.REVIEW_STATE === '0' ? '未提交' : row.REVIEW_STATE === '1' ? '待审核' : row.REVIEW_STATE === '2' ? '审核打回' : row.REVIEW_STATE === '3' ? '审核通过' : '未提交' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="500">
|
||||
<template slot-scope="{row}">
|
||||
<el-button v-show="row.REVIEW_STATE" type="success" icon="el-icon-view" size="mini" @click="handleAlgorithm(row,'view')">查看</el-button>
|
||||
<el-button type="success" icon="el-icon-caret-right" size="mini" @click="showVideo(row)">播放</el-button>
|
||||
<el-button v-if="edit" type="info" icon="el-icon-location-information" size="mini" @click="handleMap(row)">定位</el-button>
|
||||
<el-button v-if="edit && row.VIDEO_TYPE === '0'" type="warning" size="mini" @click="getRTSP(row)">获取rtsp地址</el-button>
|
||||
<el-button v-if="edit && row.REVIEW_STATE && row.REVIEW_STATE === '1'" type="primary" icon="el-icon-edit" size="mini" @click="handleAlgorithm(row,'edit')">审核</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="page-btn-group">
|
||||
<div/>
|
||||
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
|
||||
</div>
|
||||
<el-dialog :visible.sync="dialogFormMap" title="定位" width="1050px" class="dy-dialog">
|
||||
<div id="map" />
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<span>经度:</span>
|
||||
<el-input v-model="addForm.info.LONGITUDE" style="width: 200px" placeholder="请输入内容" disabled />
|
||||
<span>纬度:</span>
|
||||
<el-input v-model="addForm.info.LATITUDE" style="width: 200px" placeholder="请输入内容" disabled />
|
||||
<el-button @click="dialogFormMap = false">取 消</el-button>
|
||||
<el-button type="primary" @click="setPosition()">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :visible.sync="addForm.dialogVisible" :title="addForm.dialogType==='add'?'新增': addForm.dialogType==='edit' ? '审核' : '查看'" width="600px">
|
||||
<el-form ref="addForm" :model="addForm.info" :rules="addForm.rules" label-width="110px" style="width: 600px;">
|
||||
<el-form-item label="视频名称" prop="VIDEO_NAME">
|
||||
<el-input :disabled="true" v-model="addForm.info.VIDEO_NAME" style="width: 80%;" placeholder="这里输入视频名称..." />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="摄像头编号" prop="CODE">
|
||||
<el-input :disabled="true" v-model="addForm.info.CODE" style="width: 80%;" placeholder="这里输入摄像头编号..." />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="算法数量:" prop="CAPACITY">
|
||||
<el-select :disabled="true" v-model="addForm.info.ALGO_LIMIT" style="width: 80%;" placeholder="请选择" @change="removeExceed()">
|
||||
<el-option
|
||||
v-for="item in algoLimitList"
|
||||
:key="item.value"
|
||||
:label="item.value"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-col v-for="(item, index) in form.ALGORITHM" :key="item.id">
|
||||
<el-form-item :label="'算法' + (index + 1) + ':'">
|
||||
<el-select :disabled="true" v-model="item.BIANMA" placeholder="请选择" style="width: 80%;" @change="setDisable">
|
||||
<el-option
|
||||
v-for="item in algorithmList"
|
||||
:key="item.DICTIONARIES_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
:disabled="item.disabled"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button v-show="addForm.dialogType === 'view'" @click="back">返 回</el-button>
|
||||
<el-button v-show="addForm.dialogType !== 'view'" type="danger" @click="confirm('2')">打 回</el-button>
|
||||
<el-button v-show="addForm.dialogType !== 'view'" type="primary" @click="confirm('3')">通 过</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideo" :visible.sync="dialogVideo" :show-close="false" title="视频2" width="600px">
|
||||
<iframe :src="VIDEOURL" width="100%" height="380" allowfullscreen allow="autoplay; fullscreen;microphone" style="position: relative;border:none"/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideoHLS" :visible.sync="dialogVideoHLS" :before-close="handleBack" :show-close="false" title="视频" width="600px">
|
||||
<div id="aLiVideoPlayer" class="prism-player"/>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="dialogVideoAll" :visible.sync="dialogVideoAll" :before-close="handleBack" title="视频" width="1200px">
|
||||
<!-- <iframe src="http://192.168.192.121:10800/?menu=no/#/screen" width="100%" height="500px" allowfullscreen allow="autoplay; fullscreen" style="position: relative;border:none"/>-->
|
||||
<div style="display: flex;flex-wrap: wrap;justify-content: space-between">
|
||||
<div v-for="(video,index) in videoList" :key="index" style="margin-bottom: 10px;width: 45%">
|
||||
<div v-if="video.HLSVIDEOURL" :id="'aLiVideoPlayer'+index" class="prism-player"/>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="back">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination' // 通过 el-pagination二次打包
|
||||
import { requestFN } from '@/utils/request'
|
||||
import waves from '@/directive/waves' // waves directive
|
||||
import TiandiMap from '../../../../components/TianMap/TiandiMap'
|
||||
|
||||
export default {
|
||||
components: { Pagination, TiandiMap },
|
||||
directives: { waves },
|
||||
data() {
|
||||
return {
|
||||
map: null,
|
||||
marker: null,
|
||||
BMap: '',
|
||||
clientHeight: 500,
|
||||
inputLocation: '',
|
||||
msg: 'add',
|
||||
config: config,
|
||||
listLoading: true,
|
||||
dialogForm: false,
|
||||
dialogImageUrl: '',
|
||||
dialogVisible: false,
|
||||
dialogSelect: false,
|
||||
add: '',
|
||||
del: '',
|
||||
edit: '',
|
||||
dialogFormMap: false,
|
||||
listQuery: {
|
||||
page: 1,
|
||||
limit: 20
|
||||
},
|
||||
total: 0,
|
||||
KEYWORDS: '',
|
||||
STATE: '1',
|
||||
stateList: [{ name: '未提交', value: '0' }, { name: '待审核', value: '1' }, { name: '被打回', value: '2' }, { name: '审核通过', value: '3' }],
|
||||
dates: [],
|
||||
videoList: [],
|
||||
varList: [],
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
form: {
|
||||
ALGORITHM: []
|
||||
},
|
||||
zoom: 10,
|
||||
rules: {
|
||||
VIDEONAME: [{ required: true, message: '视频名称不能为空', trigger: 'blur' }],
|
||||
CODE: [{ required: true, message: '摄像头编号不能为空', trigger: 'blur' }]
|
||||
},
|
||||
dialogVideo: false,
|
||||
dialogVideoHLS: false,
|
||||
dialogVideoBack: false,
|
||||
dialogVideoAll: false,
|
||||
player: {},
|
||||
playerList: [],
|
||||
VIDEOURL: '',
|
||||
corpinfoAllList: [],
|
||||
algoLimitList: [{ name: '4', value: 4 }, { name: '8', value: 8 }, { name: '12', value: 12 }],
|
||||
algorithmList: [],
|
||||
levels: [],
|
||||
AIBOX_RELATION_ID: '',
|
||||
AIBOX_REVIEW_ID: '',
|
||||
addForm: {
|
||||
dialogType: 'add', // 增or改
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
VIDEO_NAME: [{ required: true, message: '不可为空', trigger: 'blur' }],
|
||||
CODE: [{ required: true, message: '不可为空', trigger: 'blur' }]
|
||||
},
|
||||
info: {
|
||||
AIBOX_ID: this.$parent.AIBOX_ID,
|
||||
VIDEO_ID: '',
|
||||
VIDEO_TYPE: 0,
|
||||
VIDEO_NAME: '', //
|
||||
VIDEO_URL: '',
|
||||
CODE: '',
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
ALGO_LIMIT: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getCoroInfoAll()
|
||||
this.getAlgorithmList()
|
||||
this.getList()
|
||||
this.hasButton()
|
||||
},
|
||||
beforeDestroy() {
|
||||
console.log('定时器关闭')
|
||||
clearInterval(this.timer)
|
||||
this.map && this.map.removeEventListener('click', this.MapClick)
|
||||
},
|
||||
methods: {
|
||||
// 选项处理
|
||||
setDisable() {
|
||||
this.algorithmList.forEach(item => {
|
||||
item.disabled = false
|
||||
this.form.ALGORITHM.forEach(value => {
|
||||
if (value.BIANMA === item.BIANMA) {
|
||||
item.disabled = true
|
||||
}
|
||||
})
|
||||
})
|
||||
this.$forceUpdate()
|
||||
},
|
||||
removeExceed() {
|
||||
if (this.addForm.info.ALGO_LIMIT < this.form.ALGORITHM.length) {
|
||||
while (this.addForm.info.ALGO_LIMIT < this.form.ALGORITHM.length) {
|
||||
this.form.ALGORITHM.pop()
|
||||
}
|
||||
}
|
||||
this.$forceUpdate()
|
||||
},
|
||||
addCollateral() {
|
||||
this.form.ALGORITHM.push({ BIANMA: '' })
|
||||
},
|
||||
bobilehandleSelected(row) {
|
||||
this.$set(this.addForm.info, 'VIDEO_URL', row.VIDEOURL)
|
||||
this.$set(this.addForm.info, 'VIDEO_NAME', row.VIDEONAME)
|
||||
this.$set(this.addForm.info, 'CODE', row.CODE)
|
||||
this.$set(this.addForm.info, 'VIDEO_ID', row.VIDEO_RESOURCES_ID)
|
||||
this.$forceUpdate()
|
||||
},
|
||||
getCoroInfoAll() {
|
||||
requestFN(
|
||||
'/corpinfo/listSelect',
|
||||
{ }
|
||||
).then((data) => {
|
||||
this.corpinfoAllList = data.list
|
||||
}).catch((e) => {
|
||||
})
|
||||
},
|
||||
selectBobileVideo() {
|
||||
this.$refs.bobileCamer.init()
|
||||
},
|
||||
// 搜索
|
||||
getReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.STATE = ''
|
||||
this.listQuery = {
|
||||
page: 1,
|
||||
limit: 20
|
||||
}
|
||||
this.total = 0
|
||||
this.getQuery()
|
||||
},
|
||||
/**
|
||||
* 初始化天地图对象
|
||||
*/
|
||||
initTDT() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (window.T) {
|
||||
console.log('天地图初始化成功...')
|
||||
resolve(window.T)
|
||||
reject('error')
|
||||
}
|
||||
}).then(T => {
|
||||
window.T = T
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 初始化地图
|
||||
* @param {*} lng 经度
|
||||
* @param {*} lat 纬度
|
||||
* @param {*} zoom 缩放比例(1~18)
|
||||
*/
|
||||
initMap(lng, lat, zoom) {
|
||||
this.initTDT().then((T) => {
|
||||
const imageURL = 'http://t0.tianditu.gov.cn/img_w/wmts?' + 'SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles' + '&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&tk=e8a16137fd226a62a23cc7ba5c9c78ce'
|
||||
// 创建自定义图层对象
|
||||
this.lay = new window.T.TileLayer(imageURL, { minZoom: 1, maxZoom: 18 })
|
||||
// 初始化地图对象
|
||||
this.map = new window.T.Map('map')
|
||||
this.initCenter(lng, lat, zoom)
|
||||
})
|
||||
},
|
||||
initCenter(lng, lat, zoom) {
|
||||
// 设置显示地图的中心点和级别
|
||||
if (!this.addForm.info.LONGITUDE && !this.addForm.info.LATITUDE) {
|
||||
this.map.centerAndZoom(new window.T.LngLat(119.58, 39.94), zoom)
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
} else {
|
||||
this.map.centerAndZoom(new window.T.LngLat(lng, lat), zoom)
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
this.addForm.info.LONGITUDE = lng
|
||||
this.addForm.info.LATITUDE = lat
|
||||
this.marker = new window.T.Marker(new window.T.LngLat(lng, lat))
|
||||
// 向地图上添加标注
|
||||
this.map.addOverLay(this.marker)
|
||||
}
|
||||
// 创建卫星和路网的混合视图
|
||||
this.map.setMapType(window.TMAP_HYBRID_MAP)
|
||||
// 允许鼠标滚轮缩放地图
|
||||
this.map.enableScrollWheelZoom()
|
||||
// 允许鼠标移动地图
|
||||
this.map.enableInertia()
|
||||
// 向地图上添加标注
|
||||
this.map.addEventListener('click', this.MapClick)
|
||||
},
|
||||
MapClick(event) {
|
||||
console.log(1111)
|
||||
this.marker && this.map.removeOverLay(this.marker)
|
||||
this.addForm.info.LONGITUDE = event.lnglat.getLng()
|
||||
this.addForm.info.LATITUDE = event.lnglat.getLat()
|
||||
this.marker = new window.T.Marker(new window.T.LngLat(event.lnglat.getLng(), event.lnglat.getLat()))
|
||||
// 向地图上添加标注
|
||||
this.map.addOverLay(this.marker)
|
||||
},
|
||||
handleMap(row) {
|
||||
this.dialogFormMap = true
|
||||
this.AIBOX_RELATION_ID = row.AIBOX_RELATION_ID
|
||||
this.addForm.info = {
|
||||
...this.addForm.info,
|
||||
LATITUDE: row.LATITUDE,
|
||||
LONGITUDE: row.LONGITUDE
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
if (!this.map) this.initMap(this.addForm.info.LONGITUDE, this.addForm.info.LATITUDE, 16)
|
||||
else this.initCenter(this.addForm.info.LONGITUDE, this.addForm.info.LATITUDE, 16)
|
||||
})
|
||||
},
|
||||
getRowKey(row) {
|
||||
return row.GATEVIDEO_ID
|
||||
},
|
||||
// 搜索
|
||||
getQuery() {
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
},
|
||||
// 五分钟关闭视频播放页面定时任务
|
||||
start() {
|
||||
console.log('定时器开启')
|
||||
this.timer = setInterval(this.closeVideoStart, (5 * 60 * 1000)) // 5分钟
|
||||
},
|
||||
over() {
|
||||
// 定时器手动关闭
|
||||
console.log('定时器自动关闭')
|
||||
this.$message.warning('单次播放时长已到5分钟自动关闭')
|
||||
clearInterval(this.timer)
|
||||
},
|
||||
closeVideoStart() {
|
||||
this.dialogVideo = false
|
||||
this.dialogVideoHLS = false
|
||||
this.dialogVideoBack = false
|
||||
this.dialogVideoAll = false
|
||||
this.over()
|
||||
},
|
||||
// 播放
|
||||
handleBack() {
|
||||
if (this.dialogVideoAll) {
|
||||
for (let i = 0; i < this.playerList.length; i++) {
|
||||
this.playerList[i].dispose()
|
||||
}
|
||||
this.dialogVideoAll = false
|
||||
}
|
||||
if (this.dialogVideoHLS) {
|
||||
this.player.dispose()
|
||||
this.dialogVideoHLS = false
|
||||
}
|
||||
},
|
||||
showVideo(row) {
|
||||
this.$message.warning('单次播放最多五分钟')
|
||||
this.start()
|
||||
if (row.VIDEO_TYPE === '0') {
|
||||
this.VIDEOURL = row.VIDEO_URL
|
||||
this.dialogVideo = true
|
||||
} else {
|
||||
requestFN(
|
||||
'/platformvideomanagement/getHlsPath',
|
||||
{
|
||||
INDEXCODE: row.CODE
|
||||
}
|
||||
).then((res) => {
|
||||
this.dialogVideoHLS = true
|
||||
this.$nextTick(() => {
|
||||
// eslint-disable-next-line no-undef
|
||||
this.player = new Aliplayer({
|
||||
'id': 'aLiVideoPlayer',
|
||||
'source': res.data.url,
|
||||
'width': '100%',
|
||||
'height': '500px',
|
||||
'autoplay': true,
|
||||
'isLive': true,
|
||||
'rePlay': false,
|
||||
'playsinline': true,
|
||||
'preload': true,
|
||||
'controlBarVisibility': 'hover',
|
||||
'useH5Prism': true
|
||||
}, function(player) {
|
||||
console.log('The player is created')
|
||||
})
|
||||
})
|
||||
}).catch((e) => {
|
||||
this.over()
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
setPosition() {
|
||||
this.dialogFormMap = false
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/edit',
|
||||
{
|
||||
LATITUDE: this.addForm.info.LATITUDE,
|
||||
LONGITUDE: this.addForm.info.LONGITUDE,
|
||||
AIBOX_RELATION_ID: this.AIBOX_RELATION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('定位成功')
|
||||
this.listLoading = false
|
||||
this.dialogForm = false
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
getRTSP(row) {
|
||||
requestFN(
|
||||
'/platformvideomanagement/getRtspPath',
|
||||
{
|
||||
INDEXCODE: row.CODE
|
||||
}
|
||||
).then((res) => {
|
||||
this.notify(res.data.url)
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
showAll() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要播放的视频...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.VIDEO_ID
|
||||
}).join(',')
|
||||
this.videoList = []
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/goAllVideo',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then((data) => {
|
||||
this.videoList = data.videoList
|
||||
this.listLoading = false
|
||||
this.dialogVideoAll = true
|
||||
this.playerList = []
|
||||
this.$nextTick(() => {
|
||||
for (let i = 0; i < this.videoList.length; i++) {
|
||||
if (!this.videoList[i].HLSVIDEOURL) continue
|
||||
console.log(this.videoList[i].HLSVIDEOURL.data.url)
|
||||
// eslint-disable-next-line no-undef
|
||||
const player = new Aliplayer({
|
||||
'id': 'aLiVideoPlayer' + i,
|
||||
'source': this.videoList[i].HLSVIDEOURL.data.url,
|
||||
'width': '100%',
|
||||
'height': '500px',
|
||||
'autoplay': true,
|
||||
'isLive': true,
|
||||
'rePlay': false,
|
||||
'playsinline': true,
|
||||
'preload': true,
|
||||
'controlBarVisibility': 'hover',
|
||||
'useH5Prism': true
|
||||
}, function(player) {
|
||||
console.log('The player is created')
|
||||
})
|
||||
this.playerList.push(player)
|
||||
console.log(this.playerList)
|
||||
}
|
||||
})
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 获取列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/listForReview?showCount=' + this.listQuery.limit + '¤tPage=' + this.listQuery.page,
|
||||
{
|
||||
KEYWORDS: this.KEYWORDS,
|
||||
STATE: this.STATE,
|
||||
AIBOX_ID: this.$parent.AIBOX_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.varList = data.varList
|
||||
this.total = data.page.totalResult
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 添加
|
||||
handleAdd() {
|
||||
this.resetAddForm()
|
||||
this.addForm.dialogType = 'add'
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
|
||||
getAlgorithmList() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/dictionaries/getLevels',
|
||||
{
|
||||
DICTIONARIES_ID: 'abee5542786e4b25a3bfc835215f2a28'
|
||||
}
|
||||
).then((data) => {
|
||||
this.algorithmList = data.list
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
handleAlgorithm(row, dialogType) {
|
||||
this.getAlgorithmList()
|
||||
this.form.ALGORITHM = []
|
||||
this.resetAddForm()
|
||||
this.AIBOX_RELATION_ID = row.AIBOX_RELATION_ID
|
||||
this.AIBOX_REVIEW_ID = row.AIBOX_REVIEW_ID
|
||||
this.addForm.info.VIDEO_ID = row.VIDEO_ID
|
||||
this.addForm.info.AIBOX_ID = row.AIBOX_ID
|
||||
this.addForm.info.VIDEO_NAME = row.VIDEO_NAME
|
||||
this.addForm.info.VIDEO_URL = row.VIDEO_URL
|
||||
this.addForm.info.CODE = row.CODE
|
||||
this.addForm.info.VIDEO_TYPE = parseInt(row.VIDEO_TYPE)
|
||||
if (dialogType === 'edit' || dialogType === 'view') {
|
||||
requestFN(
|
||||
'/aiboxAlgorithm/findByRelation',
|
||||
{
|
||||
AIBOX_RELATION_ID: row.AIBOX_RELATION_ID
|
||||
}
|
||||
).then((data) => {
|
||||
const result = data.dataPd
|
||||
this.addForm.info.ALGO_LIMIT = result.ALGO_LIMIT
|
||||
const bianmaList = result.BIANMA.replace(/,$/, '').split(',')
|
||||
for (let i = 0; i < bianmaList.length; i++) {
|
||||
this.form.ALGORITHM.push({ 'BIANMA': bianmaList[i] })
|
||||
}
|
||||
this.setDisable()
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
this.addForm.dialogType = dialogType
|
||||
this.addForm.dialogVisible = true
|
||||
},
|
||||
|
||||
selectVideo(row) {
|
||||
this.$refs.platformvideo.init()
|
||||
},
|
||||
|
||||
handleSelected(row) {
|
||||
this.$set(this.form, 'VIDEONAME', row.NAME)
|
||||
this.$set(this.form, 'CODE', row.INDEXCODE)
|
||||
this.$set(this.form, 'PLATFORMVIDEOMANAGEMENT_ID', row.PLATFORMVIDEOMANAGEMENT_ID)
|
||||
},
|
||||
|
||||
// 获取详情
|
||||
getData() {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/goEdit',
|
||||
{
|
||||
GATEVIDEO_ID: this.form.GATEVIDEO_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.form = data.pd
|
||||
this.listLoading = false
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 保存
|
||||
save() {
|
||||
this.$refs.form.validate(valid => {
|
||||
if (valid) {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/' + this.msg,
|
||||
{
|
||||
VIDEONAME: this.form.VIDEONAME,
|
||||
CODE: this.form.CODE,
|
||||
GATEVIDEO_ID: this.form.GATEVIDEO_ID,
|
||||
GATE_AREA_ID: this.$parent.GATE_AREA_ID,
|
||||
PLATFORMVIDEOMANAGEMENT_ID: this.form.PLATFORMVIDEOMANAGEMENT_ID
|
||||
}
|
||||
).then((data) => {
|
||||
this.listLoading = false
|
||||
this.dialogForm = false
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
resetAddForm() {
|
||||
this.AIBOX_RELATION_ID = ''
|
||||
this.addForm.info = {
|
||||
VIDEO_TYPE: '',
|
||||
VIDEO_NAME: '',
|
||||
VIDEO_URL: '',
|
||||
CODE: '',
|
||||
LATITUDE: '',
|
||||
LONGITUDE: '',
|
||||
ALGO_LIMIT: ''
|
||||
}
|
||||
this.addForm.dialogType = ''
|
||||
},
|
||||
changeType(e) {
|
||||
if (e === 1) {
|
||||
this.addForm.info.VIDEO_TYPE = 1
|
||||
} else {
|
||||
this.addForm.info.VIDEO_TYPE = 0
|
||||
}
|
||||
this.addForm.info.VIDEO_NAME = ''
|
||||
this.addForm.info.VIDEO_URL = ''
|
||||
this.addForm.info.CODE = ''
|
||||
this.addForm.info.LATITUDE = ''
|
||||
this.addForm.info.LONGITUDE = ''
|
||||
this.addForm.info.ALGO_LIMIT = ''
|
||||
this.$forceUpdate()
|
||||
},
|
||||
confirm(STATE) {
|
||||
let BIANMA = ''
|
||||
let ALGO_NAME = ''
|
||||
if (this.form.ALGORITHM) {
|
||||
for (let i = 0; i < this.form.ALGORITHM.length; i++) {
|
||||
BIANMA = BIANMA + this.form.ALGORITHM[i].BIANMA + ','
|
||||
}
|
||||
}
|
||||
if (BIANMA !== '') {
|
||||
const bianmaList = BIANMA.replace(/,$/, '').split(',')
|
||||
let algoName = ''
|
||||
for (let j = 0; j < bianmaList.length; j++) {
|
||||
for (let k = 0; k < this.algorithmList.length; k++) {
|
||||
if (bianmaList[j] === this.algorithmList[k].BIANMA) {
|
||||
algoName = algoName + this.algorithmList[k].NAME + '-'
|
||||
}
|
||||
}
|
||||
}
|
||||
ALGO_NAME = algoName.replace(/-$/, '')
|
||||
}
|
||||
this.$refs.addForm.validate(valid => {
|
||||
if (valid) {
|
||||
requestFN(
|
||||
'/aiboxAlgorithm/review',
|
||||
{
|
||||
AIBOX_REVIEW_ID: this.AIBOX_REVIEW_ID,
|
||||
AIBOX_RELATION_ID: this.AIBOX_RELATION_ID,
|
||||
AIBOX_ID: this.addForm.info.AIBOX_ID,
|
||||
ALGO_NAME: ALGO_NAME,
|
||||
STATE: STATE
|
||||
}
|
||||
).then((data) => {
|
||||
this.$message.success('保存成功')
|
||||
this.getList()
|
||||
this.addForm.dialogVisible = false
|
||||
}).catch((e) => {
|
||||
})
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
handleDelete(id) {
|
||||
this.$confirm('确定要删除吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/aiboxVideo/delete',
|
||||
{
|
||||
AIBOX_RELATION_ID: id
|
||||
}
|
||||
).then((data) => {
|
||||
if (data.result === 'success') {
|
||||
this.$message({
|
||||
message: '删除成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message.error(data.msg)
|
||||
}
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
batchDel() {
|
||||
const _selectData = this.$refs.multipleTable.selection
|
||||
if (_selectData == null || _selectData.length == 0) {
|
||||
this.$message({
|
||||
message: '请选中要删除的项...',
|
||||
type: 'error'
|
||||
})
|
||||
return false
|
||||
}
|
||||
const ids = _selectData.map((item, index) => {
|
||||
return item.GATEVIDEO_ID
|
||||
}).join(',')
|
||||
|
||||
this.$confirm('确定要删除选中的数据吗?', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
this.listLoading = true
|
||||
requestFN(
|
||||
'/gateVideo/deleteAll',
|
||||
{
|
||||
DATA_IDS: ids
|
||||
}
|
||||
).then(() => {
|
||||
this.listLoading = false
|
||||
this.varList = []
|
||||
this.listQuery.page = 1
|
||||
this.$refs.multipleTable.clearSelection()
|
||||
this.getList()
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
goKeyReset() {
|
||||
this.KEYWORDS = ''
|
||||
this.getList()
|
||||
},
|
||||
|
||||
back() {
|
||||
if (this.addForm.dialogVisible) this.addForm.dialogVisible = false
|
||||
if (this.dialogVideo) this.dialogVideo = false
|
||||
if (this.dialogVideoBack) this.dialogVideoBack = false
|
||||
if (this.dialogVideoAll) {
|
||||
this.dialogVideoAll = false
|
||||
for (let i = 0; i < this.playerList.length; i++) {
|
||||
this.playerList[i].dispose()
|
||||
}
|
||||
}
|
||||
if (this.dialogForm) this.dialogForm = false
|
||||
if (this.dialogVideoHLS) {
|
||||
this.dialogVideoHLS = false
|
||||
this.player.dispose()
|
||||
}
|
||||
},
|
||||
|
||||
resetForm() {
|
||||
this.form = {
|
||||
GATEVIDEO_ID: '',
|
||||
VIDEONAME: '', //
|
||||
PLATFORMVIDEOMANAGEMENT_ID: ''
|
||||
}
|
||||
},
|
||||
goBack() {
|
||||
this.$parent.activeName = 'List'
|
||||
this.$parent.GATE_MACHINE_ID = ''
|
||||
},
|
||||
// 判断按钮权限,用于是否显示按钮
|
||||
hasButton: function() {
|
||||
var keys = 'aiboxReview:add,aiboxReview:del,aiboxReview:edit'
|
||||
requestFN(
|
||||
'/head/hasButton',
|
||||
{
|
||||
keys: keys
|
||||
}
|
||||
).then((data) => {
|
||||
this.add = data.aiboxReviewfhadminadd // 新增权限
|
||||
this.del = data.aiboxReviewfhadmindel // 删除权限
|
||||
this.edit = data.aiboxReviewfhadminedit // 修改权限
|
||||
}).catch((e) => {
|
||||
this.listLoading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
<style>
|
||||
.ui-foot-xuan {
|
||||
width: 100%;
|
||||
margin-top: 10px;
|
||||
position: inherit;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
background-color: #f1f1f1;
|
||||
text-align: center;
|
||||
}
|
||||
#map{
|
||||
width: 1000px;
|
||||
height: 500px;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,21 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<transition name="fade" mode="out-in">
|
||||
<component :is="activeName"/>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import List from './components/list'
|
||||
import VideoList from './components/videoList'
|
||||
export default {
|
||||
components: { List, VideoList },
|
||||
data() {
|
||||
return {
|
||||
activeName: 'List',
|
||||
PROMISE_ID: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|