Commit 2da12654 authored by jianqian's avatar jianqian

一、企业分布

1.左侧隐藏
2.预警信息 滚动
二。企业统计
1.展示单个企业的安全生产信息
2.图表,折线图(事故数量,设备预警,近一年)

三、视频可视化
对接海康视频平台

去掉预案信息管理
一企一档
危险源、隐患、职业危害场所、监控监测点位
parent 8a3f2a3e
......@@ -1483,6 +1483,137 @@
"integrity": "sha512-eWN5ElDTeBc5lRDh95SqA8x18D0ll2pWudU3uWiyfsRmIZcmUXpEsxPU+7+BsdCrO2vfLRC629u/MmjbmF+2tA==",
"dev": true
},
"@videojs/http-streaming": {
"version": "2.10.2",
"resolved": "https://registry.npmmirror.com/@videojs/http-streaming/download/@videojs/http-streaming-2.10.2.tgz",
"integrity": "sha1-Aub8+nT3hQtfnrQKjlyFydfTPq8=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "3.0.3",
"aes-decrypter": "3.1.2",
"global": "^4.4.0",
"m3u8-parser": "4.7.0",
"mpd-parser": "0.19.0",
"mux.js": "5.13.0",
"video.js": "^6 || ^7"
},
"dependencies": {
"@babel/runtime": {
"version": "7.16.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.0.tgz",
"integrity": "sha1-4nuXfy4giLokdIv5m14d7OZOTws=",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"@videojs/vhs-utils": {
"version": "3.0.3",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/download/@videojs/vhs-utils-3.0.3.tgz?cache=0&sync_timestamp=1632333114070&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40videojs%2Fvhs-utils%2Fdownload%2F%40videojs%2Fvhs-utils-3.0.3.tgz",
"integrity": "sha1-cIvFB0LpSBcSA5aVKZsy2mWC75I=",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
}
},
"aes-decrypter": {
"version": "3.1.2",
"resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-3.1.2.tgz",
"integrity": "sha1-NUVUb46fa4eGQDOaJC7+Ihunp8s=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.0",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
}
},
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
},
"m3u8-parser": {
"version": "4.7.0",
"resolved": "https://registry.nlark.com/m3u8-parser/download/m3u8-parser-4.7.0.tgz",
"integrity": "sha1-4B6M4TYJit4bFO5pHqIPxNxgq/Y=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.0",
"global": "^4.4.0"
}
},
"mux.js": {
"version": "5.13.0",
"resolved": "https://registry.npmmirror.com/mux.js/download/mux.js-5.13.0.tgz",
"integrity": "sha1-mcPaIfbANioVKXKdHF5bUfNPYG0=",
"requires": {
"@babel/runtime": "^7.11.2"
}
},
"pkcs7": {
"version": "1.0.4",
"resolved": "https://registry.nlark.com/pkcs7/download/pkcs7-1.0.4.tgz",
"integrity": "sha1-YJC55xFg2r9pIJ1xnLr6U4sAocs=",
"requires": {
"@babel/runtime": "^7.5.5"
}
}
}
},
"@videojs/vhs-utils": {
"version": "3.0.4",
"resolved": "https://registry.npmmirror.com/@videojs/vhs-utils/download/@videojs/vhs-utils-3.0.4.tgz?cache=0&sync_timestamp=1632333114070&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40videojs%2Fvhs-utils%2Fdownload%2F%40videojs%2Fvhs-utils-3.0.4.tgz",
"integrity": "sha1-4lPuzY6TGPdn51IBDSE1h/lLsDo=",
"requires": {
"@babel/runtime": "^7.12.5",
"global": "^4.4.0",
"url-toolkit": "^2.2.1"
},
"dependencies": {
"@babel/runtime": {
"version": "7.16.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.0.tgz",
"integrity": "sha1-4nuXfy4giLokdIv5m14d7OZOTws=",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
}
}
},
"@videojs/xhr": {
"version": "2.6.0",
"resolved": "https://registry.nlark.com/@videojs/xhr/download/@videojs/xhr-2.6.0.tgz",
"integrity": "sha1-zYl+CtVPr0l5YbzOP6FtwVomu4A=",
"requires": {
"@babel/runtime": "^7.5.5",
"global": "~4.4.0",
"is-function": "^1.0.1"
},
"dependencies": {
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
}
}
},
"@vue/babel-helper-vue-jsx-merge-props": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
......@@ -2233,6 +2364,11 @@
"@xtuc/long": "4.2.2"
}
},
"@xmldom/xmldom": {
"version": "0.7.5",
"resolved": "https://registry.nlark.com/@xmldom/xmldom/download/@xmldom/xmldom-0.7.5.tgz",
"integrity": "sha1-CfpR41bQfQviAGQrDk+R2ObdQI0="
},
"@xtuc/ieee754": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
......@@ -2297,6 +2433,14 @@
"integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==",
"dev": true
},
"aes-decrypter": {
"version": "1.0.3",
"resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-1.0.3.tgz",
"integrity": "sha1-nAa4pUNaWtCduTP4oBSvzxhMw04=",
"requires": {
"pkcs7": "^0.2.3"
}
},
"aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
......@@ -4998,6 +5142,11 @@
}
}
},
"dom-walk": {
"version": "0.1.2",
"resolved": "https://registry.npm.taobao.org/dom-walk/download/dom-walk-0.1.2.tgz",
"integrity": "sha1-DFSL7wSPTR8qlySQAiNgYNqj/YQ="
},
"domain-browser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
......@@ -5083,6 +5232,11 @@
"stream-shift": "^1.0.0"
}
},
"easy-player": {
"version": "2.2.7",
"resolved": "https://registry.nlark.com/easy-player/download/easy-player-2.2.7.tgz",
"integrity": "sha1-lx29/rbzS3pDLjxHZxpYeb0fZrw="
},
"easy-stack": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz",
......@@ -5278,6 +5432,11 @@
"is-symbol": "^1.0.2"
}
},
"es5-shim": {
"version": "4.6.2",
"resolved": "https://registry.nlark.com/es5-shim/download/es5-shim-4.6.2.tgz?cache=0&sync_timestamp=1630475752572&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fes5-shim%2Fdownload%2Fes5-shim-4.6.2.tgz",
"integrity": "sha1-gnzdDG+1vrJv02jWVDDoterrqUI="
},
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
......@@ -6585,6 +6744,22 @@
"integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=",
"dev": true
},
"global": {
"version": "4.3.2",
"resolved": "https://registry.nlark.com/global/download/global-4.3.2.tgz",
"integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
"requires": {
"min-document": "^2.19.0",
"process": "~0.5.1"
},
"dependencies": {
"process": {
"version": "0.5.2",
"resolved": "https://registry.nlark.com/process/download/process-0.5.2.tgz",
"integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
}
}
},
"globals": {
"version": "11.12.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
......@@ -7175,6 +7350,11 @@
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
"dev": true
},
"individual": {
"version": "2.0.0",
"resolved": "https://registry.npm.taobao.org/individual/download/individual-2.0.0.tgz",
"integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
},
"infer-owner": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
......@@ -7394,6 +7574,11 @@
"integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"is-function": {
"version": "1.0.2",
"resolved": "https://registry.npm.taobao.org/is-function/download/is-function-1.0.2.tgz",
"integrity": "sha1-Twl/MKv2762smDOxfKXcA/gUTgg="
},
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
......@@ -7746,6 +7931,11 @@
"verror": "1.10.0"
}
},
"keycode": {
"version": "2.2.0",
"resolved": "https://registry.nlark.com/keycode/download/keycode-2.2.0.tgz",
"integrity": "sha1-PQr1bce4uOXLqNCpfxByBO7CKwQ="
},
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
......@@ -7981,6 +8171,11 @@
"yallist": "^3.0.2"
}
},
"m3u8-parser": {
"version": "2.1.0",
"resolved": "https://registry.nlark.com/m3u8-parser/download/m3u8-parser-2.1.0.tgz",
"integrity": "sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g="
},
"magic-string": {
"version": "0.22.5",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz",
......@@ -8158,6 +8353,14 @@
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
},
"min-document": {
"version": "2.19.0",
"resolved": "https://registry.nlark.com/min-document/download/min-document-2.19.0.tgz",
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
"requires": {
"dom-walk": "^0.1.0"
}
},
"mini-css-extract-plugin": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
......@@ -8298,6 +8501,36 @@
"run-queue": "^1.0.3"
}
},
"mpd-parser": {
"version": "0.19.0",
"resolved": "https://registry.npmmirror.com/mpd-parser/download/mpd-parser-0.19.0.tgz?cache=0&sync_timestamp=1633551530091&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fmpd-parser%2Fdownload%2Fmpd-parser-0.19.0.tgz",
"integrity": "sha1-iTcEQEDKheIDmOz12UVSZV4sZyg=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.2",
"@xmldom/xmldom": "^0.7.2",
"global": "^4.4.0"
},
"dependencies": {
"@babel/runtime": {
"version": "7.16.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.0.tgz",
"integrity": "sha1-4nuXfy4giLokdIv5m14d7OZOTws=",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
}
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
......@@ -8319,6 +8552,11 @@
"integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
"dev": true
},
"mux.js": {
"version": "4.3.2",
"resolved": "https://registry.npmmirror.com/mux.js/download/mux.js-4.3.2.tgz",
"integrity": "sha1-V21TffA33F7DXsExa5SNgV01whA="
},
"mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
......@@ -8986,6 +9224,11 @@
"safe-buffer": "^5.1.1"
}
},
"parse-headers": {
"version": "2.0.4",
"resolved": "https://registry.nlark.com/parse-headers/download/parse-headers-2.0.4.tgz?cache=0&sync_timestamp=1628092214952&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fparse-headers%2Fdownload%2Fparse-headers-2.0.4.tgz",
"integrity": "sha1-nq8tAr7S0e/0lDMc498215JHYL8="
},
"parse-json": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz",
......@@ -9148,6 +9391,11 @@
"pinkie": "^2.0.0"
}
},
"pkcs7": {
"version": "0.2.3",
"resolved": "https://registry.nlark.com/pkcs7/download/pkcs7-0.2.3.tgz",
"integrity": "sha1-ItYGZtAQZcXyRDkJjkpIMEUic74="
},
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
......@@ -9900,8 +10148,7 @@
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
},
"process-nextick-args": {
"version": "2.0.1",
......@@ -10530,6 +10777,14 @@
"aproba": "^1.1.1"
}
},
"rust-result": {
"version": "1.0.0",
"resolved": "https://registry.nlark.com/rust-result/download/rust-result-1.0.0.tgz",
"integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
"requires": {
"individual": "^2.0.0"
}
},
"rw": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
......@@ -10540,6 +10795,14 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-json-parse": {
"version": "4.0.0",
"resolved": "https://registry.npm.taobao.org/safe-json-parse/download/safe-json-parse-4.0.0.tgz",
"integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
"requires": {
"rust-result": "^1.0.0"
}
},
"safe-regex": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
......@@ -11899,6 +12162,11 @@
"tsutils": "^2.29.0"
}
},
"tsml": {
"version": "1.0.1",
"resolved": "https://registry.nlark.com/tsml/download/tsml-1.0.1.tgz",
"integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
},
"tsutils": {
"version": "2.29.0",
"resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz",
......@@ -12239,6 +12507,11 @@
"requires-port": "^1.0.0"
}
},
"url-toolkit": {
"version": "2.2.3",
"resolved": "https://registry.nlark.com/url-toolkit/download/url-toolkit-2.2.3.tgz?cache=0&sync_timestamp=1625914308870&other_urls=https%3A%2F%2Fregistry.nlark.com%2Furl-toolkit%2Fdownload%2Furl-toolkit-2.2.3.tgz",
"integrity": "sha1-ePqQEhWrusNBggZpMiICebgEUis="
},
"use": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
......@@ -12336,6 +12609,220 @@
"extsprintf": "^1.2.0"
}
},
"video.js": {
"version": "7.15.4",
"resolved": "https://registry.npmmirror.com/video.js/download/video.js-7.15.4.tgz",
"integrity": "sha1-D5bvE4A1E4yzC/AKmJthdPDRa6w=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/http-streaming": "2.10.2",
"@videojs/vhs-utils": "^3.0.3",
"@videojs/xhr": "2.6.0",
"aes-decrypter": "3.1.2",
"global": "^4.4.0",
"keycode": "^2.2.0",
"m3u8-parser": "4.7.0",
"mpd-parser": "0.19.0",
"mux.js": "5.13.0",
"safe-json-parse": "4.0.0",
"videojs-font": "3.2.0",
"videojs-vtt.js": "^0.15.3"
},
"dependencies": {
"@babel/runtime": {
"version": "7.16.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.0.tgz",
"integrity": "sha1-4nuXfy4giLokdIv5m14d7OZOTws=",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"aes-decrypter": {
"version": "3.1.2",
"resolved": "https://registry.npm.taobao.org/aes-decrypter/download/aes-decrypter-3.1.2.tgz",
"integrity": "sha1-NUVUb46fa4eGQDOaJC7+Ihunp8s=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.0",
"global": "^4.4.0",
"pkcs7": "^1.0.4"
}
},
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
},
"m3u8-parser": {
"version": "4.7.0",
"resolved": "https://registry.nlark.com/m3u8-parser/download/m3u8-parser-4.7.0.tgz",
"integrity": "sha1-4B6M4TYJit4bFO5pHqIPxNxgq/Y=",
"requires": {
"@babel/runtime": "^7.12.5",
"@videojs/vhs-utils": "^3.0.0",
"global": "^4.4.0"
}
},
"mux.js": {
"version": "5.13.0",
"resolved": "https://registry.npmmirror.com/mux.js/download/mux.js-5.13.0.tgz",
"integrity": "sha1-mcPaIfbANioVKXKdHF5bUfNPYG0=",
"requires": {
"@babel/runtime": "^7.11.2"
}
},
"pkcs7": {
"version": "1.0.4",
"resolved": "https://registry.nlark.com/pkcs7/download/pkcs7-1.0.4.tgz",
"integrity": "sha1-YJC55xFg2r9pIJ1xnLr6U4sAocs=",
"requires": {
"@babel/runtime": "^7.5.5"
}
}
}
},
"videojs-contrib-hls": {
"version": "5.15.0",
"resolved": "https://registry.npm.taobao.org/videojs-contrib-hls/download/videojs-contrib-hls-5.15.0.tgz",
"integrity": "sha1-/klXNn5daLfSP3jtMuN6ndiSoKg=",
"requires": {
"aes-decrypter": "1.0.3",
"global": "^4.3.0",
"m3u8-parser": "2.1.0",
"mux.js": "4.3.2",
"url-toolkit": "^2.1.3",
"video.js": "^5.19.1 || ^6.2.0",
"videojs-contrib-media-sources": "4.7.2",
"webwackify": "0.1.6"
},
"dependencies": {
"video.js": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/video.js/download/video.js-6.13.0.tgz",
"integrity": "sha1-+Uh9RjJzQPpI7NUTcqKYHbts3kw=",
"requires": {
"babel-runtime": "^6.9.2",
"global": "4.3.2",
"safe-json-parse": "4.0.0",
"tsml": "1.0.1",
"videojs-font": "2.1.0",
"videojs-ie8": "1.1.2",
"videojs-vtt.js": "0.12.6",
"xhr": "2.4.0"
}
},
"videojs-font": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/videojs-font/download/videojs-font-2.1.0.tgz",
"integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
},
"videojs-vtt.js": {
"version": "0.12.6",
"resolved": "https://registry.npm.taobao.org/videojs-vtt.js/download/videojs-vtt.js-0.12.6.tgz",
"integrity": "sha1-4HhgC9qJnqpvnDMHE0zQyBGUe44=",
"requires": {
"global": "^4.3.1"
}
}
}
},
"videojs-contrib-media-sources": {
"version": "4.7.2",
"resolved": "https://registry.npm.taobao.org/videojs-contrib-media-sources/download/videojs-contrib-media-sources-4.7.2.tgz",
"integrity": "sha1-Ct+SkQfVt0zyyKuygkyCF35DhY4=",
"requires": {
"global": "^4.3.0",
"mux.js": "4.3.2",
"video.js": "^5.17.0 || ^6.2.0",
"webwackify": "0.1.6"
},
"dependencies": {
"video.js": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/video.js/download/video.js-6.13.0.tgz",
"integrity": "sha1-+Uh9RjJzQPpI7NUTcqKYHbts3kw=",
"requires": {
"babel-runtime": "^6.9.2",
"global": "4.3.2",
"safe-json-parse": "4.0.0",
"tsml": "1.0.1",
"videojs-font": "2.1.0",
"videojs-ie8": "1.1.2",
"videojs-vtt.js": "0.12.6",
"xhr": "2.4.0"
}
},
"videojs-font": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/videojs-font/download/videojs-font-2.1.0.tgz",
"integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
},
"videojs-vtt.js": {
"version": "0.12.6",
"resolved": "https://registry.npm.taobao.org/videojs-vtt.js/download/videojs-vtt.js-0.12.6.tgz",
"integrity": "sha1-4HhgC9qJnqpvnDMHE0zQyBGUe44=",
"requires": {
"global": "^4.3.1"
}
}
}
},
"videojs-flash": {
"version": "2.2.1",
"resolved": "https://registry.npm.taobao.org/videojs-flash/download/videojs-flash-2.2.1.tgz",
"integrity": "sha1-GiJduxztIArpu/FeAf5KYQhtkPE=",
"requires": {
"global": "^4.4.0",
"video.js": "^6 || ^7",
"videojs-swf": "5.4.2"
},
"dependencies": {
"global": {
"version": "4.4.0",
"resolved": "https://registry.nlark.com/global/download/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
"min-document": "^2.19.0",
"process": "^0.11.10"
}
}
}
},
"videojs-font": {
"version": "3.2.0",
"resolved": "https://registry.npm.taobao.org/videojs-font/download/videojs-font-3.2.0.tgz",
"integrity": "sha1-ISydP05Ow/pzRRZ9ZDFq3TXpIjI="
},
"videojs-hotkeys": {
"version": "0.2.27",
"resolved": "https://registry.npm.taobao.org/videojs-hotkeys/download/videojs-hotkeys-0.2.27.tgz",
"integrity": "sha1-Dfl5Urnf8ObMHPikOf7X6snHPwE="
},
"videojs-ie8": {
"version": "1.1.2",
"resolved": "https://registry.npm.taobao.org/videojs-ie8/download/videojs-ie8-1.1.2.tgz",
"integrity": "sha1-oj09hgitcZK2nGB3/E64SJmNNdk=",
"requires": {
"es5-shim": "^4.5.1"
}
},
"videojs-swf": {
"version": "5.4.2",
"resolved": "https://registry.npm.taobao.org/videojs-swf/download/videojs-swf-5.4.2.tgz",
"integrity": "sha1-aWSpv/kDtzLz5GUxSuR4oCoX6Ks="
},
"videojs-vtt.js": {
"version": "0.15.3",
"resolved": "https://registry.npm.taobao.org/videojs-vtt.js/download/videojs-vtt.js-0.15.3.tgz",
"integrity": "sha1-hCYDk7eUh/zxldk3L4Etf6uDqZM=",
"requires": {
"global": "^4.3.1"
}
},
"vlq": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
......@@ -12472,6 +12959,48 @@
"integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
"dev": true
},
"vue-video-player": {
"version": "5.0.2",
"resolved": "https://registry.nlark.com/vue-video-player/download/vue-video-player-5.0.2.tgz",
"integrity": "sha1-NKQiOf8wTvx2mNogpBZQUddmweY=",
"requires": {
"object-assign": "^4.1.1",
"video.js": "^6.6.0",
"videojs-contrib-hls": "^5.12.2",
"videojs-flash": "^2.1.0",
"videojs-hotkeys": "^0.2.20"
},
"dependencies": {
"video.js": {
"version": "6.13.0",
"resolved": "https://registry.npmmirror.com/video.js/download/video.js-6.13.0.tgz",
"integrity": "sha1-+Uh9RjJzQPpI7NUTcqKYHbts3kw=",
"requires": {
"babel-runtime": "^6.9.2",
"global": "4.3.2",
"safe-json-parse": "4.0.0",
"tsml": "1.0.1",
"videojs-font": "2.1.0",
"videojs-ie8": "1.1.2",
"videojs-vtt.js": "0.12.6",
"xhr": "2.4.0"
}
},
"videojs-font": {
"version": "2.1.0",
"resolved": "https://registry.npm.taobao.org/videojs-font/download/videojs-font-2.1.0.tgz",
"integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
},
"videojs-vtt.js": {
"version": "0.12.6",
"resolved": "https://registry.npm.taobao.org/videojs-vtt.js/download/videojs-vtt.js-0.12.6.tgz",
"integrity": "sha1-4HhgC9qJnqpvnDMHE0zQyBGUe44=",
"requires": {
"global": "^4.3.1"
}
}
}
},
"vuex": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.3.tgz",
......@@ -13108,6 +13637,11 @@
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
"dev": true
},
"webwackify": {
"version": "0.1.6",
"resolved": "https://registry.npm.taobao.org/webwackify/download/webwackify-0.1.6.tgz",
"integrity": "sha1-HUKhKsYYI9fjRaveCE6qpipKles="
},
"whatwg-encoding": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz",
......@@ -13242,6 +13776,17 @@
"async-limiter": "~1.0.0"
}
},
"xhr": {
"version": "2.4.0",
"resolved": "https://registry.npm.taobao.org/xhr/download/xhr-2.4.0.tgz",
"integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
"requires": {
"global": "~4.3.0",
"is-function": "^1.0.1",
"parse-headers": "^2.0.0",
"xtend": "^4.0.0"
}
},
"xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
......@@ -13257,8 +13802,7 @@
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
"version": "4.0.0",
......
......@@ -11,9 +11,11 @@
"@types/axios": "^0.14.0",
"axios": "^0.19.2",
"core-js": "^3.6.4",
"easy-player": "^2.2.7",
"echarts": "^5.1.1",
"element-ui": "^2.13.0",
"ol": "^6.4.3",
"video.js": "^7.15.4",
"vue": "^2.6.11",
"vue-amap": "^0.5.10",
"vue-class-component": "^7.2.2",
......@@ -22,6 +24,7 @@
"vue-ellipse-progress": "^1.3.0",
"vue-property-decorator": "^8.3.0",
"vue-router": "^3.1.5",
"vue-video-player": "^5.0.2",
"vuex": "^3.1.2",
"vuex-class": "^0.3.2"
},
......
......@@ -80,28 +80,20 @@
<el-checkbox @change="handleCheckAllChange" :indeterminate="isIndeterminate" v-model="checkAll">全选</el-checkbox>
<el-checkbox-group v-model="checkList" @change="CheckChange">
<el-checkbox label="1">
企业辅料
<img src="@/assets/mark/mark05.png" width="25" />
监控检测点位
<img src="@/assets/mark/jiankong.png" width="25" />
</el-checkbox>
<el-checkbox label="2">
生产设备
<img src="@/assets/mark/mark03.png" width="25" />
隐患
<img src="@/assets/mark/yinhuan.png" width="25" />
</el-checkbox>
<el-checkbox label="3">
企业产品
<img src="@/assets/mark/mark01.png" width="25" />
危险源
<img src="@/assets/mark/weixianyuan.png" width="25" />
</el-checkbox>
<el-checkbox label="4">
应急物资
<img src="@/assets/mark/mark02.png" width="25" />
</el-checkbox>
<el-checkbox label="5">
监控设备
<img src="@/assets/mark/markjk.png" width="25" />
</el-checkbox>
<el-checkbox label="6">
传感设备
<img src="@/assets/mark/markcgq.png" width="25" />
职业危害场所
<img src="@/assets/mark/weihaichangsuo.png" width="25" />
</el-checkbox>
</el-checkbox-group>
</el-row>
......@@ -149,8 +141,8 @@ export default class EnseListDetail extends Vue {
@Provide() enterpriseId: string = "";
@Provide() cityval: any = [];
@Provide() editForm: any = {};
@Provide() checkList: any = ["1", "2", "3", "4", "5", "6"];
@Provide() checkListOpt: any = ["1", "2", "3", "4", "5", "6"];
@Provide() checkList: any = ["1", "2", "3", "4"];
@Provide() checkListOpt: any = ["1", "2", "3", "4"];
@Provide() isIndeterminate: boolean = false;
@Provide() checkAll: boolean = true;
/* 地图 */
......@@ -178,97 +170,152 @@ export default class EnseListDetail extends Vue {
@Provide() mouseTool: any; //测量工具
@Provide() toolVisble: boolean = false;
/*获取物品*/
getMapDataA() {
// getMapDataA() {
// let that = this;
// return new Promise((resolve, reject) => {
// METHOD.axiosPost(
// that,
// `/enterpriseGoods/selectEnterpriseGoodsList/${that.enterpriseId}`, {
// page: 1,
// size: 10000,
// },
// (res: any) => {
// if (res.code == 0) {
// resolve(res.data.pageData);
// }
// }
// );
// });
// }
getDetailList() {
let that = this;
return new Promise((resolve, reject) => {
METHOD.axiosPost(
that,
`/enterpriseGoods/selectEnterpriseGoodsList/${that.enterpriseId}`, {
page: 1,
size: 10000,
},
(res: any) => {
if (res.code == 0) {
resolve(res.data.pageData);
}
METHOD.axiosGet(
that,
`/dataStatistics/enterpriseDatainfo/${that.enterpriseId}`,
function (res: any) {
if (res.code == 0) {
that.addMarksToMapTwo(res.data)
}
);
});
}
);
}
/*获取安全设备*/
getMapDataB() {
// getMapDataB() {
// let that = this;
// return new Promise((resolve, reject) => {
// METHOD.axiosPost(
// that,
// `/safetyDeviceInfo/selectSafetyDeviceInfoList/${that.enterpriseId}`, {
// page: 1,
// size: 10000,
// },
// (res: any) => {
// if (res.code == 0) {
// let mapData = res.data.pageData;
// resolve(res.data.pageData);
// }
// }
// );
// });
// }
addMarksToMapTwo(alldata) {
let that = this;
return new Promise((resolve, reject) => {
METHOD.axiosPost(
that,
`/safetyDeviceInfo/selectSafetyDeviceInfoList/${that.enterpriseId}`, {
page: 1,
size: 10000,
},
(res: any) => {
if (res.code == 0) {
let mapData = res.data.pageData;
resolve(res.data.pageData);
}
}
);
let res1: any = alldata.cameraList;
let res2: any = alldata.troubleList;
let res3: any = alldata.goodsList;
let res4: any = alldata.harmPlace;
that.mapData = [...res1, ...res2, ...res3, ...res4];
let mapData = [...res1, ...res2, ...res3, ...res4];
let latSum = 0;
let lngSum = 0;
if (res1.length > 0) {
res1.forEach((ele: any, index: any) => {
that.addMark(ele, index,"1");
lngSum += ele.longitude;
latSum += ele.latitude;
});
}
if (res2.length > 0) {
res2.forEach((ele: any, index: any) => {
that.addMark(ele, index,"2");
lngSum += ele.longitude;
latSum += ele.latitude;
});
}
if (res3.length > 0) {
res3.forEach((ele: any, index: any) => {
that.addMark(ele, index,"3");
lngSum += ele.longitude;
latSum += ele.latitude;
});
}
if (res4.length > 0) {
res4.forEach((ele: any, index: any) => {
that.addMark(ele, index,"4");
lngSum += ele.longitude;
latSum += ele.latitude;
});
}
let mapcenter = [lngSum / mapData.length, latSum / mapData.length];
that.Mutil.setViewF({
center: mapcenter,
zoom:12
});
}
addMarksToMap() {
let that = this;
Promise.all([that.getMapDataA(), that.getMapDataB()]).then(
(iter) => {
let res1: any = iter[0];
let res2: any = iter[1];
let mapData = [...res1, ...res2]
that.mapData = [...res1, ...res2];
if (mapData.length > 0) {
let latSum = 0;
let lngSum = 0;
mapData.forEach((ele: any, index: any) => {
that.addMark(ele, index);
lngSum += ele.longitude;
latSum += ele.latitude;
});
let mapcenter = [lngSum / mapData.length, latSum / mapData.length];
that.Mutil.setViewF({
center: mapcenter,
});
} else {
that.$message.warning("没有设备及物品信息!");
}
}
);
}
addMark(obj: any, index: any) {
let icon,
// addMarksToMap() {
// let that = this;
// Promise.all([that.getMapDataA(), that.getMapDataB()]).then(
// (iter) => {
// let res1: any = iter[0];
// let res2: any = iter[1];
// let mapData = [...res1, ...res2]
// that.mapData = [...res1, ...res2];
// if (mapData.length > 0) {
// let latSum = 0;
// let lngSum = 0;
// mapData.forEach((ele: any, index: any) => {
// that.addMark(ele, index);
// lngSum += ele.longitude;
// latSum += ele.latitude;
// });
// let mapcenter = [lngSum / mapData.length, latSum / mapData.length];
// that.Mutil.setViewF({
// center: mapcenter,
// });
// } else {
// that.$message.warning("没有设备及物品信息!");
// }
// }
// );
// }
addMark(obj: any, index: any,type: any) {
let icon,titleName,
that = this;
switch (obj.dataType) {
case "3":
icon = require("@/assets/mark/mark01.png");
break;
case "4":
icon = require("@/assets/mark/mark02.png");
switch (type) {
case "1":
icon = require("@/assets/mark/jiankong.png");
titleName = obj.deviceName;
break;
case "2":
icon = require("@/assets/mark/mark03.png");
break;
case "1":
icon = require("@/assets/mark/mark05.png");
icon = require("@/assets/mark/yinhuan.png");
titleName = obj.troubleName;
break;
case "5":
icon = require("@/assets/mark/markjk.png");
case "3":
icon = require("@/assets/mark/weixianyuan.png");
titleName = obj.goodsName;
break;
case "6":
icon = require("@/assets/mark/markcgq.png");
case "4":
icon = require("@/assets/mark/weihaichangsuo.png");
titleName = obj.placeName;
break;
}
that.Mutil.addMarkerToMap(
obj.dataType,
obj.goodsName,
this.Mutil.addMarkerToMap(
type,
titleName,
icon,
[obj.longitude, obj.latitude],
0.5,
0.9,
obj.id
);
}
......@@ -288,7 +335,7 @@ export default class EnseListDetail extends Vue {
];
}
that.$nextTick(() => {
console.log(that.editForm.boundary)
//console.log(that.editForm.boundary)
if (that.editForm.boundary) {
that.Mutil.drawPloygon(JSON.parse(that.editForm.boundary));
}
......@@ -352,7 +399,31 @@ export default class EnseListDetail extends Vue {
`<p><span>联系人:</span>${obj.contacts}</p>` +
`<p><span>危险等级:</span>${obj.dangerGrade}</p>` +
`<p><span>所在位置:</span>${obj.factoryLocation}</p></div>`;
let html = obj.dataType == 5 || obj.dataType == 6 ? htmlB : htmlA;
let htmlC =
`<div class="windowDg"><h3>详细信息</h3>` +
`<p><span>危害场所名称:</span>${obj.placeName}</p>` +
`<p><span>场所类型:</span>${obj.placeType}</p>` +
`<p><span>危害等级:</span>${obj.harmLevel}</p>` +
`<p><span>联系人:</span>${obj.contacts}</p>` +
`<p><span>联系方式:</span>${obj.phone}</p>` +
`<p><span>危险等级:</span>${obj.dangerGrade}</p>` +
`<p><span>所在位置:</span>${obj.address}</p></div>`;
let htmlD =
`<div class="windowDg"><h3>详细信息</h3>` +
`<p><span>隐患名称:</span>${obj.troubleName}</p>` +
`<p><span>隐患类型:</span>${obj.troubleType}</p>` +
`<p><span>隐患等级:</span>${obj.troubleLevel}</p>` +
`<p><span>所在位置:</span>${obj.address}</p></div>`;
let html ;
if(obj.goodsName!=undefined){
html= htmlA;
}else if(obj.deviceName!=undefined){
html = htmlB
}else if(obj.placeName!=undefined){
html = htmlC
}else {
html = htmlD
}
return html;
}
getPopcon(id: any) {
......@@ -364,7 +435,8 @@ export default class EnseListDetail extends Vue {
created() {
(this as any).enterpriseId = this.$route.query.enterpriseId;
this.getDetail();
this.addMarksToMap();
this.getDetailList()
//this.addMarksToMap();
}
mounted() {
let that = this;
......@@ -372,6 +444,7 @@ export default class EnseListDetail extends Vue {
that.Mutil = new Mutil("mapbox");
that.MAP = that.Mutil.MAP;
that.Mutil.mapSelectBind((evt: any) => {
that.Mutil.closeAllOverlays();
let id = evt.selected[0].get('did');
if (id) that.getPopcon(id);
})
......@@ -404,7 +477,10 @@ export default class EnseListDetail extends Vue {
height: 100%;
}
}
.ol-zoom {
top: .5em;
left: 5px !important;
}
main>div {
padding: 10px;
box-sizing: border-box;
......
<template>
<el-tabs v-model="activeName" type="border-card" >
<el-tab-pane label="图表" name="first">
<div style="width: 100%;height: 10em;">
<div class="el-tab-pane-div second-div" style="" @click="showList(1)" style="cursor:pointer;">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../assets/logo2.png" width="25%" style="margin-top: 2rem;">
<p>危险源数量</p>
<el-tab-pane label="图表" name="first" >
<div style ="display:flex;flex-direction:row;justify-content:flex-start;">
<div style="width: 24%;height:700px;" >
<div class="qiyetitle">企业列表</div>
<div class="qiyelist" style="letter-spacing:1px;" :id="item.enterpriseId" @click="showqiye(item.enterpriseId)" v-for="(item, index) in tableData.pageData" :key="index">
{{item.unitName}}
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{tjNumberObj.dangerNum}}</div>
</div>
<div class="el-tab-pane-div second-div" style="" @click="showList(2)" style="cursor:pointer;">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../assets/z-zhuce.png" width="25%" style="margin-top: 2rem;">
<p>注册企业数量</p>
</div>
<div style="width: 75%">
<div style="width: 100%;height: 10em;">
<div class="el-tab-pane-div second-div" style="" style="cursor:pointer;">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../assets/logo2.png" width="25%" style="margin-top: 2rem;">
<p>事故总次数</p>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{totalOne}}</div>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{tjNumberObj.enterpriseRegNum}}</div>
</div>
<div class="el-tab-pane-div second-div" style="" @click="showList(3)" style="cursor:pointer;">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../assets/z-shenhe.png" width="25%" style="margin-top: 2rem;">
<p>待审批数量</p>
<div class="el-tab-pane-div second-div" style="" style="cursor:pointer;">
<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">
<img src="../../assets/z-zhuce.png" width="25%" style="margin-top: 2rem;">
<p>设备预警总次数</p>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{totalTwo}}</div>
</div>
<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{tjNumberObj.enterpriseCheckIngNum}}</div>
<!--<div class="el-tab-pane-div second-div" style="" @click="showList(3)" style="cursor:pointer;">-->
<!--<div style="width: 40%;height: 100%; text-align: center;float: left;font-size: 15px;">-->
<!--<img src="../../assets/z-shenhe.png" width="25%" style="margin-top: 2rem;">-->
<!--<p>待审批数量</p>-->
<!--</div>-->
<!--<div style="width: 60%;height: 100%;text-align: center;line-height: 9rem;float: right;font-size: 3rem;font-family: 'UnidreamLED';">{{tjNumberObj.enterpriseCheckIngNum}}</div>-->
<!--</div>-->
</div>
<EnterprisesTj></EnterprisesTj>
</div>
</div>
<EnterprisesTj></EnterprisesTj>
</el-tab-pane>
<el-tab-pane label="列表" name="second">
<div class="EnseList" style="background-color: #fff;padding: 20px;">
......@@ -239,10 +249,13 @@ export default class EnterprisesMg extends Vue {
@Provide() loading: Boolean = false;
@Provide() cityval: any = [];
@Provide() tjNumberObj: any = {};
@Provide() totalOne: string = 0;
@Provide() totalTwo: string = 0
//编辑组件
@Provide() dialogVisible1: Boolean = false;
@Provide() dialogVisible2: Boolean = false;
@Provide() dialogVisible3: Boolean = false;
@Provide() idcolor: string = "";
@Provide() zjKey: any = 0;
......@@ -255,6 +268,14 @@ export default class EnterprisesMg extends Vue {
this.dialogVisible3 = true;
}
}
showqiye(id){
if(this.idcolor!=''){
document.getElementById(this.idcolor).style.background="";
}
document.getElementById(id).style.background="#00008B";
this.idcolor= id;
this.getData();
}
getTableData() {
let that = this,
param = Object.assign({accountStatus:'0'}, that.PAGE, that.searchData);
......@@ -267,6 +288,7 @@ export default class EnterprisesMg extends Vue {
that.loading = false;
if (res.code == 0) {
that.tableData = res.data;
console.log(that.tableData.pageData)
}
}
);
......@@ -284,6 +306,24 @@ export default class EnterprisesMg extends Vue {
}
);
}
getData() {
let that = this;
var id = this.idcolor;
var param ={ enterpriseId: id, fromdate: "2021" }
METHOD.axiosPost(
that,
`/enterpriseInfo/enterpriseHistogram`,
param,
function (res: any) {
if (res.code == 0) {
that.totalOne = res.data.accident.totalNum;
that.totalTwo = res.data.alarm.totalNum;
console.log(res.data.accident)
EnterprisesTj.methods.drawPieChart(res.data)
}
}
);
}
searchFun() {
this.PAGE = { page: 1, size: 10 };
this.getTableData();
......@@ -327,7 +367,7 @@ export default class EnterprisesMg extends Vue {
@import "@/utils/public.scss";
.second-div{
margin-top: 20px;
width: 30%;
width: 45%;
float: left;
margin-left: 2.5%;
height: 9rem;
......@@ -337,6 +377,31 @@ export default class EnterprisesMg extends Vue {
border: 2px solid rgb(22, 151, 207, 0.3);
box-shadow: 0 0 8px 8px rgba(131, 229, 255, 0.1)inset, 0 0 7px 7px rgba(22, 151, 207, 0.2);
}
.qiyetitle{
height: 60px;
line-height:60px;
margin-left: 20px;
text-align:center;
color:#f0c78a;
font-size: 30px;
margin-top:20px;
background-color: rgba(47, 96, 177, 0.1);
border-radius: 5px;
border: 2px solid rgb(22, 151, 207, 0.3);
box-shadow: 0 0 8px 8px rgba(131, 229, 255, 0.1)inset, 0 0 7px 7px rgba(22, 151, 207, 0.2);
}
.qiyelist{
height: 40px;
line-height:40px;
color: #f0f0f0;
font-size: large;
margin-left: 20px;
letter-spacing:1px;
background-color: rgba(47, 96, 177, 0.1);
border-radius: 5px;
border: 2px solid rgb(22, 151, 207, 0.3);
box-shadow: 0 0 8px 8px rgba(131, 229, 255, 0.1)inset, 0 0 7px 7px rgba(22, 151, 207, 0.2);
}
main > div {
background: #ffffff;
height: calc(100vh - 120px)!important;
......
<template style="">
<div class="pie" style="width:100%;height: 700px;">
<div id="pie1" style="float:left;width:50%;height: 500px;">
<!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
<div id="main1" style="width:700px;height:500px;"></div>
</div>
<div id="pie2" style="float:right;width:40%;height: 500px;">
<div id="main2" style="width:550px;height:500px;"></div>
<!--<div id="pie1" style="float:left;width:50%;height: 500px;">-->
<!--&lt;!&ndash; 为 ECharts 准备一个具备大小(宽高)的 DOM &ndash;&gt;-->
<!--<div id="main1" style="width:700px;height:500px;"></div>-->
<!--</div>-->
<div style="width:100%;display:flex;flex-direction:row;justify-content:flex-start;">
<div id="pie2" style="width:45%;height: 500px;">
<div id="main2" style="width:550px;height:500px;"></div>
</div>
<div id="pie3" style="width:45%;height: 500px;">
<div id="main3" style="width:550px;height:500px;"></div>
</div>
</div>
</div>
</template>
......@@ -24,8 +30,8 @@ export default {
created(){
},
mounted(){
this.initData();
this.drawPieChart();
//this.initData();
//this.drawPieChart();
},
methods:{
//初始化数据
......@@ -62,7 +68,6 @@ export default {
})
}
});
// 绘制图表
myChart1.setOption({
title : {
......@@ -112,43 +117,58 @@ export default {
});
},
drawPieChart(){
getData(data) {
console.log(data)
let that = this;
//var id = this.idcolor;
},
drawPieChart(data){
// 基于准备好的dom,初始化echarts实例
var myChart2 = echarts.init(document.getElementById('main2'));
var myChart3 = echarts.init(document.getElementById('main3'));
let that=this;
var getData1 = [];
var getData2 = [];
METHOD.axiosGet(
this,
`/enterpriseGoods/getNumberByEnterprise`,
function(res) {
if (res.code === 0) {
//先进行赋值
for(let i=0; i<res.data.result.length; i++) {
var obj = new Object();
var arr = new Object();
// obj = res.data.result[i].number;
// arr = res.data.result[i].type;
obj = res.data.result[i].number;
arr = res.data.result[i].name;
getData1[i] = obj;
getData2[i] = arr;
}
myChart2.setOption({
xAxis: {
data: getData2,
},
series:[{
data: getData1,
}]
})
}
});
var getData1 = data.alarm.num;
var getData2 = data.accident.num;
// myChart2.setOption({
// xAxis: {
// data: getData1,
// },
// series:[{
// data: getData2,
// }]
// })
// METHOD.axiosGet(
// this,
// `/enterpriseGoods/getNumberByEnterprise`,
// function(res) {
// if (res.code === 0) {
// //先进行赋值
// for(let i=0; i<res.data.result.length; i++) {
// var obj = new Object();
// var arr = new Object();
// // obj = res.data.result[i].number;
// // arr = res.data.result[i].type;
// obj = res.data.result[i].number;
// arr = res.data.result[i].name;
// getData1[i] = obj;
// getData2[i] = arr;
// }
// myChart2.setOption({
// xAxis: {
// data: getData2,
// },
// series:[{
// data: getData1,
// }]
// })
// }
// });
// 绘制图表
myChart2.setOption({
// color:['rgb(8,252,7)','rgb(255,168,0)','rgb(0,121,254)','rgb(0,255,251)','rgb(3,120,251)','rgb(0,200,251)'],
title: {
text: '企业危险源数量统计',//主标题
text: '企业事故次数统计',//主标题
color: '#fff',
// subtext: '柱状图',
textStyle: {
......@@ -157,7 +177,7 @@ export default {
},
tooltip: {},
legend: {
data:['危险源'],
data:['事故次数'],
textStyle: { //图例文字的样式
color: '#fff',
}
......@@ -168,20 +188,57 @@ export default {
rotate:40
} ,
// data: ["报警器","二氧化碳报警器","摄像头","水压探测器","摄像头","有毒气体探测器"],
data: [],
data: ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],
},
yAxis: {},
series: [{
name: '危险源',
name: '事故数量',
type: 'bar',
// data: [5, 20, 36, 10, 10, 20],
data: [],
data: getData2,
}],
textStyle: {
color: "#fff",
fontSize: 18
},
});
myChart3.setOption({
// color:['rgb(8,252,7)','rgb(255,168,0)','rgb(0,121,254)','rgb(0,255,251)','rgb(3,120,251)','rgb(0,200,251)'],
title: {
text: '企业预警次数统计',//主标题
color: '#fff',
// subtext: '柱状图',
textStyle: {
color: "#fff",
}
},
tooltip: {},
legend: {
data:['预警次数'],
textStyle: { //图例文字的样式
color: '#fff',
}
},
xAxis: {
axisLabel: {
interval:0,
rotate:40
} ,
// data: ["报警器","二氧化碳报警器","摄像头","水压探测器","摄像头","有毒气体探测器"],
data: ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],
},
yAxis: {},
series: [{
name: '预警次数',
type: 'bar',
// data: [5, 20, 36, 10, 10, 20],
data: getData1,
}],
textStyle: {
color: "#fff",
fontSize: 18
},
});
}
}
}
......@@ -196,6 +253,11 @@ export default {
margin-left: 20px;
margin-top: 50px;
}
.pie #pie3{
/* border:1px #000000 solid; */
margin-left: 20px;
margin-top: 50px;
}
.el-main .el-tabs .el-tabs__content{
background-image: url(../../assets/bg.png);
background-repeat: no-repeat;
......
......@@ -118,6 +118,7 @@
<script lang="ts">
import { Component, Vue, Provide, Watch } from "vue-property-decorator";
import METHOD from "@/utils/methods";
@Component({
components: { }
})
......@@ -158,12 +159,22 @@
nodeClick(data: any, node: any, target: any) {
let that = this;
that.treecheckedObj = node.data;
if(node.level == "3"){
that.playerWindow = 'newplay' + that.flag;
var player = new WasmPlayer(null, that.playerWindow, null, {Height: true});
// console.log(that.playerWindow, node.data.deviceNumber)
player.play('http://27.128.189.137:18000/flv/hls/' + that.treecheckedObj.deviceNumber + '.flv', 1);
METHOD.axiosGet(
this,
`/artemis/getPreviewURLs?cameraIndexCode=`+that.treecheckedObj.deviceNumber,
function(res) {
// console.log(res.code)
if (res.code == 0) {
player.play(res.data.url, 1);
}else{
//player.play('http://live.hkstv.hk.lxdns.com/flv/hks.flv', 1);
}
});
//player.play('http://27.128.189.137:18000/flv/hls/' + that.treecheckedObj.deviceNumber + '.flv', 1);
if(that.flag < 4) {
that.flag++;
}
......
<!--
<template>
<div class="amap-page-container">
<el-amap ref="map" vid="amapDemo" :center="center" :zoom="zoom" :plugin="plugin" :events="events" class="amap-demo">
<el-amap-marker v-for="marker in markers":key="i" :position="marker.position"></el-amap-marker>
</el-amap> -->
<!-- <div class="toolbar">
<button @click="getMap()">get map</button>
</div> -->
<!-- </div>
</template>
<style>
.amap-page-container {
height: 400px;
}
</style> -->
<!-- <script>
<el-amap vid="amapDemo" :zoom="zoom" :center="center" ></el-amap>
</div>
</template>
import VueAMap from 'vue-amap';
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
  // 高德的keye
  key: 'cb087c0fb3b8bc56a4af064630495bb9',
  uiVersion: '1.0.11' ,// 版本号
  // 插件集合
  plugin: ['AMap.Geocoder','AMap.Autocomplete','AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.Geolocation','AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'],
  // 高德 sdk 版本,默认为 1.4.4
  v: '1.4.4'
});
<style>
.amap-page-container {
height: 100%;
}
</style>
<script>
//import VueAMap from '@/utils/VamapLoad.ts';
import VueAMap from 'vue-amap';
import "@/utils/directive.js";
import {
Icon
} from "element-ui";
import { Component, Vue, Provide, Prop, Watch } from "vue-property-decorator";
Vue.use(VueAMap);
VueAMap.initAMapApiLoader({
// 高德的keye
key: 'cb087c0fb3b8bc56a4af064630495bb9',
uiVersion: '1.0.11' ,// 版本号
// 插件集合
plugin: ['AMap.Geocoder','AMap.Autocomplete','AMap.PlaceSearch', 'AMap.Scale', 'AMap.OverView', 'AMap.Geolocation','AMap.ToolBar', 'AMap.MapType', 'AMap.PolyEditor', 'AMap.CircleEditor'],
// 高德 sdk 版本,默认为 1.4.4
v: '1.4.4'
});
// import { AMapManager } from 'vue-amap';
// import { AMap } from 'vue-amap';
export default {
data () {
return {
zoom: 15,
center: [117.148118, 36.660223],
markers: [
{
position: [117.148118, 36.660223],
events: {
click: () => {
alert('click marker');
},
dragend: (e) => {
console.log('---event---: dragend')
this.markers[0].position = [e.lnglat.lng, e.lnglat.lat];
}
},
visible: true,
draggable: false,
template: '<span>1</span>',
}
],
events: {
init: (o) => {
console.log(o.getCenter())
console.log(this.$refs.map.$$getInstance())
o.getCity(result => {
console.log(result)
})
},
'moveend': () => {
},
'zoomchange': () => {
},
'click': (e) => {
let {lng,lat} = e.lnglat;
self.lng = lng;
self.lat = lat;
console.log(self.lng,self.lat)
let points = [self.lng,self.lat]
this.getAddress(points)
let marker = {
position: [self.lng, self.lat]
};
if (!this.markers.length) return;
this.markers.splice(this.markers.length - 1, 1);
this.markers.push(marker);
}
},
getAddress (points) {
let geocoder = new AMap.Geocoder({ radius: 1000, extensions: "all" })
geocoder.getAddress(points, (status, result) => {
if (status === 'complete' && result.regeocode) {
this.address = result.regeocode.formattedAddress
console.log(this.address)
}
})
},
plugin: ['ToolBar', {
pName: 'MapType',
defaultType: 0,
events: {
init(o) {
console.log(o);
}
}
}],
texts: [
{
position: [121.5273285, 31.21515044],
text: 'hello world',
offset: [0, 0],
events: {
click: () => {
alert('click text');
}
}
}
]
}
},
methods: {
getMap() {
console.log(AMapManager._componentMap);
// gaode map instance
// import { AMap } from 'vue-amap';
export default {
data () {
return {
zoom: 15,
center: [117.148118, 36.660223],
markers: [
{
position: [117.148118, 36.660223],
events: {
click: () => {
},
dragend: (e) => {
console.log('---event---: dragend')
this.markers[0].position = [e.lnglat.lng, e.lnglat.lat];
}
},
visible: true,
draggable: false,
template: '<span>1</span>',
}
]
}
},
methods: {
getMap() {
// gaode map instance
console.log(AMapManager._map);
alert('click text');
}
}
};
</script> -->
\ No newline at end of file
alert('click text');
}
}
};
</script>
\ No newline at end of file
<template>
<div class="gis">
<div id="mapbox">
<div id="mapbox" style="margin: 0">
<div style="position:absolute;left:500px;top:10px">
<button @click="Mutil.tianSlA()" class="map-botton">卫星地图</button>
<button @click="Mutil.tianSlB()" class="map-botton">全景地图</button>
<button @click="Mutil.tianSlA()" id="but1" class="map-botton">卫星地图</button>
<button @click="Mutil.tianSlB()" id="but2" class="map-botton">全景地图</button>
</div>
<div v-show="isShowVideo" v-drag
......@@ -20,9 +20,13 @@
</div>
<div style="">
<div
style="width: 500px;height: 100%;z-index: 11;background-color: rgba(2, 40, 90, 0.7);position: absolute;top: 0;left: 10px;float: left;">
<QyMapone></QyMapone>
<div id="bluebox"
style="width: 500px;height: 100%;z-index: 11;background-color: rgba(2, 40, 90, 0.7);position: absolute;top: 0;left: 10px;float: left;">
<QyMapone></QyMapone>
</div>
<div @click="kongzhi" id="bluebox2"
style="width: 30px;height: 10%;z-index: 11;background-color: rgba(2, 40, 90, 0.7);position: absolute;top: 0;left: 510px;float: left;top:45%">
<img style="height: 100%;width: 100%" src="@/assets/mark/markqy.png"/>
</div>
<div class="markBox">
......@@ -53,12 +57,12 @@
<span>监控监测点<p></p><span style="font-family: 'UnidreamLED';font-size: 1.5rem;">{{tjNumberObj.cameraNum}}</span></span>
</div>
</div>
<div class="markbox-div" ref="wh">
<div @click="mapwh" class="markbox-div" ref="wh">
<div ref="whimg" class="markbox-click" style="width: 30%;height: 100%;float: left;text-align: right;">
<img width="32px" src="@/assets/mark/weihaichangsuo.png" />
</div>
<div class="markbox-span" ref="zwh" style="width: 70%;height: 100%;float: left;text-align: center;line-height: 10px;padding-top: 18px;">
<span>职业危害场所<p></p><span style="font-family: 'UnidreamLED';font-size: 1.5rem;">0</span></span>
<span>职业危害场所<p></p><span style="font-family: 'UnidreamLED';font-size: 1.5rem;">{{tjNumberObj.harmNum}}</span></span>
</div>
</div>
......@@ -194,12 +198,14 @@
@Provide() markers2: any = [];
@Provide() markers3: any = [];
@Provide() markers4: any = [];
@Provide() markers5: any = [];
@Provide() mapData: any = [];
@Provide() windowsArr: any = [];
@Provide() windowsArr1: any = [];
@Provide() windowsArr2: any = [];
@Provide() windowsArr3: any = [];
@Provide() windowsArr4: any = [];
@Provide() windowsArr5: any = [];
@Provide() currentWindow: any = "";
// @Provide() searchOption: any = {
// city: "石家庄",
......@@ -221,6 +227,7 @@
@Provide() deviceVideo: any = {};
@Provide() qiyeVisble: boolean = true;
@Provide() wxyVisble: boolean = true;
@Provide() harmVisble: boolean = true;
@Provide() shipinVisble: boolean = true;
@Provide() maVisble: boolean = true;
@Provide() weihaiVisble: boolean = true;
......@@ -334,6 +341,30 @@
}
);
}
getwhWindowInfo(id: string) {
let that = this;
(window as any).checkDetail = function (param: string) {
that.$router.push({
path: "/EnDetail",
query: {
enterpriseId: param
}
});
};
let obj = that.harmmapData[id-1],
html =
`<div class="windowDg"><h3>职业危害场所</h3>` +
`<p><span>场所名称:</span>${obj.placeName}</p>` +
`<p><span>危害类型:</span>${obj.placeType}</p>` +
`<p><span>危害等级:</span>${obj.harmLevel}</p>` +
`<p><span>地址:</span>${obj.address}</p>` +
`<p><span>联系人:</span>${obj.contacts}</p>` +
`<p><span>联系方式:</span>${obj.phone}</p>` +
`</div>`;
that.Mutil.addPopup(html, obj.id, obj.longitude, obj.latitude)
}
getMaterialWindow(id: string) {
let that = this;
(window as any).checkDetail = function (param: string) {
......@@ -397,12 +428,27 @@
that.deviceVideo = res.data;
let device = res.data;
that.isShowVideo = true;
that.player.play('http://27.128.189.137:18000/flv/hls/' + that.treecheckedObj.deviceNumber + '.flv', 1);
that.lastVideoPlayId = that.treecheckedObj.deviceNumber;//记录上次播放的视频ID
that.togoshipin();
//that.player.play('http://27.128.189.137:18000/flv/hls/' + that.treecheckedObj.deviceNumber + '.flv', 1);
}
}
);
}
togoshipin(){
var that = this;
METHOD.axiosGet(
this,
`/artemis/getPreviewURLs?cameraIndexCode=`+that.treecheckedObj.deviceNumber,
function(res) {
// console.log(res.code)
if (res.code == 0) {
that.player.play(res.data.url, 1);
that.lastVideoPlayId = that.treecheckedObj.deviceNumber;//记录上次播放的视频ID
}else{
//player.play('http://live.hkstv.hk.lxdns.com/flv/hks.flv', 1);
}
});
}
getyinhuanWindowInfo(troubleId: string) {
let that = this;
(window as any).dialogVisible2Change = function () {
......@@ -429,6 +475,56 @@
}
);
}
//隐藏企业信息
kongzhi(){
// var a = document.getElementById("bluebox").style.left;
// this.kongzhi2(10)
var a = document.getElementById("bluebox").style.left
if(a=="10px"){
document.getElementById("bluebox").style.left="-500px"
document.getElementById("bluebox2").style.left="10px"
document.getElementById("but1").style.left="-450px"
document.getElementById("but2").style.left="-340px"
//console.log(document.getElementsByClassName("ol-unselectable").item(1));
this.removeClass(document.getElementsByClassName('ol-zoom').item(0), 'ol-zoom');
}else {
document.getElementById("bluebox").style.left="10px"
document.getElementById("bluebox2").style.left="510px"
document.getElementById("but1").style.left="50px"
document.getElementById("but2").style.left="160px"
this.addClass(document.getElementsByClassName('ol-unselectable').item(1), 'ol-zoom');
//this.addClass(document.getElementsByClassName('ol-unselectable').item(0), 'ol-zoom');
}
return;
}
addClass(ele, cls) {
if (!this.hasClass(ele, cls)) {
ele.className = ele.className == '' ? cls : ele.className + ' ' + cls;
}
}
hasClass(ele, cls) {
cls = cls || '';
if (cls.replace(/\s/g, '').length == 0) return false; //当cls没有参数时,返回false
return new RegExp(' ' + cls + ' ').test(' ' + ele.className + ' ');
}
removeClass(ele, cls) {
if (this.hasClass(ele, cls)) {
var newClass = ' ' + ele.className.replace(/[\t\r\n]/g, '') + ' ';
while (newClass.indexOf(' ' + cls + ' ') >= 0) {
newClass = newClass.replace(' ' + cls + ' ', ' ');
}
ele.className = newClass.replace(/^\s+|\s+$/g, '');
}
}
// kongzhi2(i){
// if(i<-490){
// return ;
// }
// document.getElementById("bluebox").style.left=i+"px";
// setInterval(this.kongzhi2(i-1),3000);
//
// }
//关闭视频方法
closeVideo() {
if (this.lastVideoPlayId != "") {
......@@ -508,6 +604,41 @@
obj.enterpriseId
);
}
harmaddMark(obj: any, index: any) {
let icon,
that = this;
icon = require("@/assets/mark/weihaichangsuo.png");
let option = {
position: [Number(obj.longitude), Number(obj.latitude)],
content: ` <img src="${icon}" width="50">`,
label: {
content: obj.placeName,
offset: [28, -7]
},
offset: [-13, -2],
events: {
click: (e: any) => {
that.windowsArr5.forEach((ele: any) => {
ele.visible = false;
});
that.$nextTick(() => {
that.currentWindow = that.windowsArr5[index];
that.currentWindow.visible = true;
});
},
},
visible: true,
};
that.Mutil.addMarkerToMap(
'wh',
obj.placeName,
icon,
[obj.longitude, obj.latitude],
0.6,
index+1
);
}
wxyaddMark(obj: any, index: any) {
let icon,
that = this;
......@@ -626,7 +757,7 @@
that.markers4[index].visible = false;
}
});
that.wxymapData.forEach((ele: any, index: any) => {
that.harmmapData.forEach((ele: any, index: any) => {
if (ele.dataType == v || v == 0) {
that.markers1[index].visible = true;
} else {
......@@ -647,6 +778,13 @@
that.markers3[index].visible = false;
}
});
that.harmmapData.forEach((ele: any, index: any) => {
if (ele.dataType == v || v == 0) {
that.markers5[index].visible = true;
} else {
that.markers5[index].visible = false;
}
});
}
/* 搜索 */
......@@ -678,6 +816,10 @@
let that = this;
that.getWxyWindowInfo(wxyid);
}
getwhPopcon(whid: any) {
let that = this;
that.getwhWindowInfo(whid);
}
getshipinPopcon(shipinid: any) {
let that = this;
that.getshipinWindowInfo(shipinid);
......@@ -707,7 +849,7 @@
`/enterpriseGoods/getMapEnterpriseGoodsById/${goodsId}`,
function (res: any) {
if (res.code == 0) {
console.log(res.data)
//console.log(res.data)
that.goods = res.data;
that.dialogVisible1 = true;
}
......@@ -792,9 +934,12 @@
that.Mutil.closeAllOverlays();
let id = evt.selected[0].get('did');
if (id) that.getMaterialinfo(id);
}else if (evt.selected[0].get('type') === 'wh') {//其他类的气泡
that.Mutil.closeAllOverlays();
let id = evt.selected[0].get('did');
if (id) that.getwhPopcon(id);
}
})
this.getStatiData();
}
......@@ -851,6 +996,22 @@
this.$refs.zwxy.lastChild.style.color = "#fff";
}
}
mapwh() {
if (this.harmVisble) {
this.Mutil.visibleMarks(false, "wh");
this.harmVisble = false;
this.$refs.wh.style.background = "#24BBC7";
this.$refs.zwh.lastChild.style.color = "#013056";
} else {
this.Mutil.setViewF({
center: [this.harmmapData[0].longitude,this.harmmapData[0].latitude]
})
this.Mutil.visibleMarks(true, "wh");
this.harmVisble = true;
this.$refs.wh.style.background = "RGBA(5, 52, 82, 0.7)";
this.$refs.zwh.lastChild.style.color = "#fff";
}
}
mapshipin() {
if (this.shipinVisble) {
this.Mutil.visibleMarks(false, "shipin");
......@@ -898,7 +1059,7 @@
function (res: any) {
if (res.code == 0) {
that.tjNumberObj = res.data;
console.log("that.tjNumberObj", that.tjNumberObj)
//console.log("that.tjNumberObj", that.tjNumberObj)
let obj = res.data,
arr: any = [];
arr.push({
......@@ -914,7 +1075,23 @@
// that.$nextTick(() => {
// that.$set(that.config, "data", arr);
// });
if (res.code == 0 && res.data.harmPlace.length > 0) {
that.harmmapData = res.data.harmPlace;
let wxylatSum = 0;
let wxylngSum = 0;
that.harmmapData.forEach((ele: any, index: any) => {
that.harmaddMark(ele, index);
wxylngSum += ele.longitude;
wxylatSum += ele.latitude;
});
let center = [
wxylngSum / that.harmmapData.length,
wxylatSum / that.harmmapData.length,
];
that.Mutil.setViewF({
center: center
})
}
if (res.code == 0 && res.data.goodsList.length > 0) {
that.wxymapData = res.data.goodsList;
let wxylatSum = 0;
......
......@@ -127,6 +127,7 @@ export default {
that,
`/alarmInfo/getAlarmInfoList`,{},
function(res) {
console.log(res)
if (res.code == 0) {
that.$data.tableData = res.data.pageData;
}
......@@ -418,6 +419,10 @@ export default {
}
</script>
<style>
.el-table__body-wrapper::-webkit-scrollbar {
/*width: 0;宽度为0隐藏*/
width: 0px;
}
.pie-div{
width: 100%;
height: 210px;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment