Merge remote-tracking branch 'origin/dev-2024年1月8日' into dev-2024年1月8日

dev-2024年1月8日
liulixin 2024-01-31 13:41:14 +08:00
commit c410e4302a
27 changed files with 6759 additions and 117 deletions

View File

@ -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

650
package-lock.json generated
View File

@ -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",

View File

@ -24,6 +24,7 @@
"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",

View File

@ -154,7 +154,7 @@
</template>
</template>
</el-table-column>
<el-table-column label="操作" width="350px">
<el-table-column label="操作" width="400px">
<template slot-scope="{row}">
<el-button type="info" icon="el-icon-view" @click="fnViewHidden(row.HIDDEN_ID)"></el-button>
<el-button type="primary" icon="el-icon-view" @click="fnEvaluation(row.HIDDEN_ID,row.SOURCE, row.CREATOR,'view')">考评详情</el-button>
@ -168,7 +168,7 @@
v-if="USER_ID=='1'"
type="danger"
icon="el-icon-view"
@click="fnDelvaluation(row.HIDDEN_ID)">删除
@click="fnDelvaluation(row)">重置考评
</el-button>
</template>
</el-table-column>
@ -427,8 +427,8 @@ export default {
}
})
},
fnDelvaluation(hiddenId) {
this.$confirm('确定要删除选中的评审记录吗?', {
fnDelvaluation(row) {
this.$confirm('确定要重置选中的评审记录吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
@ -437,7 +437,8 @@ export default {
requestFN(
'/hiddenevaluationrecord/deleteEvaluation',
{
HIDDEN_ID: hiddenId
HIDDEN_ID: row.HIDDEN_ID,
USER_ID: row.CREATOR
}
).then((data) => {
this.listLoading = false

View File

@ -32,7 +32,7 @@
style="width: 100%;"/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="6">
<el-form-item label-width="10px">
<el-button v-waves type="primary" icon="el-icon-search" @click="getQuery">
搜索
@ -40,6 +40,9 @@
<el-button v-waves type="success" icon="el-icon-refresh" native-type="reset" @click="goKeyReset">
重置
</el-button>
<el-button v-waves type="info" icon="el-icon-download" @click="exportData">
导出数据
</el-button>
</el-form-item>
</el-col>
</el-row>
@ -78,6 +81,9 @@
<el-button type="primary" icon="el-icon-check" @click="batchRedemption"></el-button>
<el-button type="success" icon="el-icon-folder-checked" @click="redeemAll"></el-button>
</div>
<div style="margin-left: auto; margin-bottom: 7px; font-size: 14px; margin-right: 5px;color: rgb(96, 98, 102)">
<span>合计奖励总得分: {{ totalScores }} ,已兑换分数: {{ userdScores }} ,未兑换奖励数: {{ totalScores - userdScores }}</span>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList"/>
</div>
</div>
@ -95,9 +101,12 @@ export default {
directives: { waves },
data() {
return {
config: config,
total: 0,
varList: [],
treeData: [],
totalScores: 0,
userdScores: 0,
normalizer(node) {
return {
id: node.id,
@ -168,6 +177,8 @@ export default {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.totalScores = data.allAmounttoScore.totalScores
this.userdScores = data.allAmounttoScore.userdScores
}).catch((e) => {
this.listLoading = false
})
@ -243,6 +254,38 @@ export default {
},
goBack() {
this.$parent.activeName = 'List'
},
//
exportData() {
this.$confirm('确定要导出到excel吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
console.log('开始')
this.listLoading = false
let pageData = ''
if (this.searchForm.KEYWORDS) {
pageData += '&KEYWORDS=' + this.searchForm.KEYWORDS
}
if (this.searchForm.DEPARTMENT_ID) {
pageData += '&DEPARTMENT_ID=' + this.searchForm.DEPARTMENT_ID
}
if (this.searchForm.dates[0]) {
pageData += '&START_TIME=' + this.searchForm.dates[0] + ' 00:00:00'
}
if (this.searchForm.dates[1]) {
pageData += '&END_TIME=' + this.searchForm.dates[1] + ' 23:59:59'
}
if (this.$parent.CORPINFO_ID) {
pageData += '&CORPINFO_ID=' + this.$parent.CORPINFO_ID
}
window.open(this.config.httpurl + 'evaluationscore/excelAll?' + pageData)
}).catch(() => {
console.log('报错')
this.listLoading = false
})
this.listLoading = false
}
}
}

View File

@ -37,6 +37,7 @@
<el-col :span="8">
<el-form-item label="辖区单位">
<Treeselect
v-if="updateValue"
:multiple="true"
:flat="true"
:default-expand-level="0"
@ -48,6 +49,8 @@
no-options-text="暂无数据"
no-children-text="暂无数据"
style="width: 100%;"
@select="handleSelect"
@deselect="handleRemove"
/>
</el-form-item>
</el-col>
@ -443,6 +446,7 @@ export default {
directives: { waves },
data() {
return {
updateValue: true,
selectUsers: [], //
chooseUserList: [],
punishThePerson: [],
@ -1330,6 +1334,52 @@ export default {
this.form.UNITS_PHONE = item.PHONENUM
}
})
},
//
pullSelectedNodes(selectedItems) {
if (selectedItems.nodes && selectedItems.nodes.length > 0) {
for (let i = 0; i < selectedItems.nodes.length; i++) {
if (!this.form.JURISDICTION_UNIT.includes(selectedItems.nodes[i].id)) {
this.form.JURISDICTION_UNIT.push(selectedItems.nodes[i].id)
}
this.pullSelectedNodes(selectedItems.nodes[i])
}
}
},
//
handleSelect(selectedItems) {
//
if (!this.form.JURISDICTION_UNIT.includes(selectedItems.id)) {
this.form.JURISDICTION_UNIT.push(selectedItems.id)
}
this.pullSelectedNodes(selectedItems)
this.onClick()
},
//
removeSelectedNodes(selectedItems) {
if (selectedItems.nodes && selectedItems.nodes.length > 0) {
for (let i = 0; i < selectedItems.nodes.length; i++) {
if (this.form.JURISDICTION_UNIT.includes(selectedItems.nodes[i].id)) {
this.form.JURISDICTION_UNIT.splice(this.form.JURISDICTION_UNIT.indexOf(selectedItems.nodes[i].id), 1)
}
this.removeSelectedNodes(selectedItems.nodes[i])
}
}
},
//
handleRemove(selectedItems) {
//
if (this.form.JURISDICTION_UNIT.includes(selectedItems.id)) {
this.form.JURISDICTION_UNIT.splice(this.form.JURISDICTION_UNIT.indexOf(selectedItems.id), 1)
}
this.removeSelectedNodes(selectedItems)
this.onClick()
},
onClick() {
this.updateValue = false
this.$nextTick(() => {
this.updateValue = true
})
}
}
}

View File

@ -1,7 +1,7 @@
<template>
<div class="fensongsi_index">
<div class="block2">
<layout-title title="风险辨识管控"/>
<layout-title title="cfd风险辨识管控"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<img :src="item.img" class="img_top" alt="">

View File

@ -0,0 +1,587 @@
<template>
<div class="fensongsi_index">
<div class="block1">
<layout-title title="沧州矿石气象监测数据"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title">{{ item.title }}</div>
<div class="circular">
<img :src="item.img" alt="">
</div>
<div class="label">
{{ item.count }}
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="风险辨识管控"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<img :src="item.img" class="img_top" alt="">
<img class="img_bottom" src="../../../assets/map/gangkou_index/bg1.png" alt="">
<div class="label">{{ item.label }}</div>
<div class="count">
<count-to :start-val="0" :end-val="+riskIdentificationCount[index]" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="人员定位信息"/>
<div class="options">
<div v-for="(item,index) in block3OptionsList" :key="index" class="option">
<img :src="item.img" class="img_top" alt="">
<img class="img_bottom" src="../../../assets/map/gangkou_index/img1.png" alt="">
<div class="label">{{ item.label }}</div>
<div class="count">
<count-to :start-val="0" :end-val="item.count" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block4">
<layout-title title="口门管理"/>
<div class="options">
<div v-for="(item,index) in block4OptionsList" :key="index" class="option">
<div class="title">{{ item.title }}</div>
<div class="items">
<div v-for="(item1,index1) in item.list" :key="index1" class="item">
<div class="label">
{{ item1.label }}<count-to :start-val="0" :end-val="item1.count" :duration="3600"/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
export default {
components: {
layoutTitle,
CountTo
},
props: {
corpInfoId: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
timer: '',
value: 0,
riskIdentificationCount: {},
personPositioningCount: {},
doorManagementList: [],
block1OptionsList: [
{
title: '风速监测',
img: require('../../../assets/map/qixiang/ico1.png'),
count: '-'
},
{
title: '温度监测',
img: require('../../../assets/map/qixiang/ico2.png'),
count: '-'
},
{
title: '风向监测',
img: require('../../../assets/map/qixiang/ico3.png'),
count: '-'
}
],
block2OptionsList: [
{
label: '风险单元数',
img: require('../../../assets/map/gangkou_index/ico1.png'),
count: 0
},
{
label: '辨识部位数',
img: require('../../../assets/map/gangkou_index/ico2.png'),
count: 0
},
{
label: '风险因素数',
img: require('../../../assets/map/gangkou_index/ico3.png'),
count: 0
}
],
block3OptionsList: [
{
label: '企业人员数',
img: require('../../../assets/map/gangkou_index/img1_on.png'),
count: 0
},
{
label: '部门数',
img: require('../../../assets/map/gangkou_index/img2_on.png'),
count: 0
},
{
label: '定位在线人员数',
img: require('../../../assets/map/gangkou_index/img3_on.png'),
count: 0
}
],
block4OptionsList: [
{
title: '风险指数',
list: [
{
label: '重大风险点数',
count: '9'
},
{
label: '较大风险点数',
count: '20'
},
{
label: '一般风险点数',
count: '13'
},
{
label: '低风险性点数',
count: '3'
}
]
},
{
title: '今日情况',
list: [
{
label: '今日进矿石作业区车辆数',
count: '-'
},
{
label: '今日出矿石作业区车辆数',
count: '-'
},
{
label: '今日进杂货作业区车辆数',
count: '-'
},
{
label: '今日出杂货作业区车辆数',
count: '-'
}
]
}
]
}
},
watch: {
// 'corpInfoId': {
// handler(newVal, oldVal) {
// console.log('newVal')
// console.log(newVal)
// console.log('oldVal')
// console.log(oldVal)
// },
// immediate: false
// }
},
created() {
this.getPersonPositioningCount()
this.getRiskIdentificationCount()
this.getDoorManagement()
},
beforeDestroy() {
console.log('定时器关闭')
clearInterval(this.timer)
},
methods: {
//
// getMeteorologicalinfo() {
// this.listLoading = true
// requestFN(
// '/map/listbymeteorological',
// {
// CORPINFO_ID: this.corpInfoId,
// GANGKOU: this.gangkou
// }
// ).then((data) => {
// this.listLoading = false
// this.block1OptionsList[0].count = data.pd.WINDSPEED || '-'
// this.block1OptionsList[1].count = data.pd.TEMPERATURE || '-'
// this.block1OptionsList[2].count = this.calculateWindDirection(data.pd.WINDDIRECTION)
// // this.block1OptionsList[3].count = data.pd.HUMIDITY || '-'
// }).catch((e) => {
// this.listLoading = false
// })
// },
// calculateWindDirection(angle) {
// const arr = [
// {
// directions: '',
// minAngle: '348.76',
// maxAngle: '11.25'
// },
// {
// directions: '',
// minAngle: '11.26',
// maxAngle: '33.75'
// },
// {
// directions: '',
// minAngle: '33.76',
// maxAngle: '56.25'
// },
// {
// directions: '',
// minAngle: '56.26',
// maxAngle: '78.75'
// },
// {
// directions: '',
// minAngle: '78.76',
// maxAngle: '101.25'
// },
// {
// directions: '',
// minAngle: '101.26',
// maxAngle: '123.75'
// },
// {
// directions: '',
// minAngle: '123.76',
// maxAngle: '146.25'
// },
// {
// directions: '',
// minAngle: '146.26',
// maxAngle: '168.75'
// },
// {
// directions: '',
// minAngle: '168.76',
// maxAngle: '191.25'
// },
// {
// directions: '西',
// minAngle: '191.26',
// maxAngle: '213.75'
// },
// {
// directions: '西',
// minAngle: '213.76',
// maxAngle: '236.25'
// },
// {
// directions: '西西',
// minAngle: '236.26',
// maxAngle: '258.75'
// },
// {
// directions: '西',
// minAngle: '258.76',
// maxAngle: '281.25'
// },
// {
// directions: '西西',
// minAngle: '281.26',
// maxAngle: '303.75'
// },
// {
// directions: '西',
// minAngle: '303.76',
// maxAngle: '326.25'
// },
// {
// directions: '西',
// minAngle: '326.26',
// maxAngle: '348.75'
// }
// ]
// for (let i = 0; i < arr.length; i++) {
// if (+angle >= +arr[i].minAngle && +angle <= +arr[i].maxAngle) {
// return arr[i].directions + ''
// }
// }
// return ''
// },
// //
// start() {
// console.log('')
// this.timer = setInterval(this.getMeteorologicalinfo, 10000) // : ;
// },
// over() {
// clearInterval(this.timer)
// },
getDoorManagement() {
requestFN(
'/map/getDoorManagement',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
data.riskList.forEach(item => {
if (item.TYPE == 'levelA') this.block4OptionsList[0].list[0].count = item.COUNT
if (item.TYPE == 'levelB') this.block4OptionsList[0].list[1].count = item.COUNT
if (item.TYPE == 'levelC') this.block4OptionsList[0].list[2].count = item.COUNT
if (item.TYPE == 'levelD') this.block4OptionsList[0].list[3].count = item.COUNT
})
this.block4OptionsList[1].list[0].count = data.czksCarToday.oreIn
this.block4OptionsList[1].list[1].count = data.czksCarToday.oreOut
this.block4OptionsList[1].list[2].count = data.czksCarToday.groceryIn
this.block4OptionsList[1].list[3].count = data.czksCarToday.groceryOut
})
},
getRiskIdentificationCount() {
requestFN(
'/map/getRiskIdentificationCount',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.riskIdentificationCount = data.riskIdentificationCount
})
},
getPersonPositioningCount() {
requestFN(
'/map/getPersonPositioningCount',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block3OptionsList[0].count = data.userCount
this.block3OptionsList[1].count = data.departCount
this.block3OptionsList[2].count = data.total
})
}
}
}
</script>
<style lang="scss" scoped>
.fensongsi_index {
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
.title {
background-image: url("../../../assets/map/qixiang/label.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 88px;
height: 25px;
font-size: 12px;
line-height: 25px;
text-align: center;
color: #fff;
}
.circular {
margin-top: 15px;
background-image: url("../../../assets/map/qixiang/imgbg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 67px;
height: 48px;
text-align: center;
padding-top: 13px;
img {
width: 30px;
height: 30px;
margin-top: -20px;
animation: slideY 2s infinite;
}
}
.label {
margin-top: 5px;
font-size: 12px;
color: #fff;
}
}
}
}
.block2 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 40px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
.img_top {
position: absolute;
width: 25px;
height: 25px;
margin-top: 11px;
animation: slideY 2s infinite;
}
.img_bottom {
position: absolute;
width: 50px;
height: 50px;
}
.label {
margin-top: 60px;
color: #fff;
font-size: 14px;
}
.count {
background-image: linear-gradient(bottom, #5bb4f7, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-size: 26px;
margin-top: 0px;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
}
}
}
.block3 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 0 40px 10px 40px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
.img_top {
position: absolute;
width: 75px;
height: 75px;
animation: slideY 2s infinite;
}
.img_bottom {
position: absolute;
width: 75px;
height: 75px;
top: 5px;
}
.label {
margin-top: 80px;
color: #fff;
font-size: 14px;
}
.count {
background-image: linear-gradient(bottom, #5bb4f7, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-size: 26px;
margin-top: 0px;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
}
}
}
.block4 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
.title {
background-image: url("../../../assets/map/menjin/title.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
}
.items {
display: flex;
flex-wrap: wrap;
margin-bottom: 10px;
.item {
margin-top: 10px;
font-size: 12px;
color: #fff;
flex-basis: 50%;
}
}
}
}
}
}
@keyframes slideY {
0% {
transform: translateY(0);
}
50% {
transform: translateY(5px);
}
100% {
transform: translateY(0);
}
}
</style>

View File

@ -0,0 +1,416 @@
<template>
<div class="menjin">
<div class="block1">
<layout-title title="设备在线情况"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title active">{{ item.title }}</div>
<div class="circular">
<img :src="item.img" alt="">
</div>
<div class="label">
{{ item.label1 }}<count-to :start-val="0" :end-val="item.count1" :duration="3600"/>
</div>
<div v-if="item.label2" class="label">
{{ item.label2 }}<count-to :start-val="0" :end-val="item.count2" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="堆料场进出数据"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" v-if="index != 1" :key="index" class="option">
<div class="title active">{{ item.title }}</div>
<div class="items">
<div v-for="(item1,index1) in item.list" :key="index1" class="item">
<div class="label">
{{ item1.label }}<count-to :start-val="0" :end-val="item1.count" :duration="3600"/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="口门进出记录"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block3OptionsList"
:key="index"
:class="['title', {active:index === block3OptionsIndex}]"
@click="block3OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div class="table">
<div class="tr">
<div class="td">卡口名称</div>
<div class="td">{{ block3OptionsIndex===0 ? '人员':'车牌' }}</div>
<div class="td">时间</div>
<div class="td">状态</div>
</div>
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td line1">{{ block3OptionsIndex===0 ? item.devName : item.ROADWAYNAME }}</div>
<div class="td">{{ block3OptionsIndex===0 ? item.personName : item.PLATENO }}</div>
<div class="td line1">{{ block3OptionsIndex===0 ? item.eventTime.substring(11) : item.CROSSTIME.substring(11,19) }}</div>
<div class="td">{{ item.inAndOutType === null ? (item.VEHICLEOUT === '0' ? '出' : '进') : (item.inAndOutType === '0' ? '出' : '进') }}</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
export default {
components: {
layoutTitle,
CountTo
},
data() {
return {
block1OptionsList: [
{
title: '人员闸机数',
img: require('../../../assets/map/menjin/ico1.png'),
label1: '在线数',
count1: 0
// label2: '线',
// count2: 0
},
{
title: '车辆闸机数',
img: require('../../../assets/map/menjin/ico2.png'),
label1: '在线数',
count1: 0
// label2: '线',
// count2: 0
},
{
title: '摄像头数',
img: require('../../../assets/map/menjin/ico3.png'),
label1: '摄像头数',
count1: 0
}
],
block2OptionsList: [
{
title: '今日人员情况',
list: [
{
label: '进堆料场人员数',
count: 0
},
{
label: '出堆料场人员数',
count: 0
},
{
label: '堆料场内人员数',
count: 0
}
]
},
{
title: '今日临时情况',
list: [
{
label: '临时进堆料场人员数',
count: 0
},
{
label: '临时出堆料场人员数',
count: 0
},
{
label: '临时堆料场内人员数',
count: 0
}
]
},
{
title: '今日车辆情况',
list: [
{
label: '进堆料场车辆数',
count: 0
},
{
label: '出堆料场车辆数',
count: 0
},
{
label: '堆料场内车辆数',
count: 0
}
]
}
],
block3OptionsList: ['人员闸机', '车辆闸机'],
block3OptionsIndex: 1,
block3List: [
]
}
},
mounted() {
this.getPerpleCarGateMachineCount()
this.getMachineCount()
this.listPerpleCarGateMachine('1')
},
destroyed() {
clearInterval(this.timer) //
},
methods: {
//
startPersonnelDataTimer() {
this.timer = setInterval(() => {
this.getPerpleCarGateMachineCount()
this.obtainPersonnelData()
this.getCameraCount()
}, 300000)
},
getMachineCount() {
requestFN(
'/map/getGatePositionCount',
{
id: this.id,
TYPE: this.type
}
).then((data) => {
this.block1OptionsList[0].count1 = data.data.personMachineCount
// this.block1OptionsList[0].count2 =
this.block1OptionsList[1].count1 = data.data.carMachineCount
// this.block1OptionsList[1].count2 =
this.block1OptionsList[2].count1 = data.data.cameraCount
}).catch((e) => {
})
},
getPerpleCarGateMachineCount() {
requestFN(
'/map/getPersonAndCarGateInAndOutCount',
{
TYPE: this.type
}
).then((data) => {
this.block2OptionsList[2].list[0].count = data.data.carInCount
console.log(data.data.data)
this.block2OptionsList[2].list[1].count = data.data.carOutCount
this.block2OptionsList[2].list[2].count = data.data.carOnSiteCount
this.block2OptionsList[0].list[0].count = data.data.personInCount
this.block2OptionsList[0].list[1].count = data.data.personOutCount
this.block2OptionsList[0].list[2].count = 0
}).catch((e) => {
})
},
//
obtainPersonnelData() {
requestFN(
'/UserPosition/getCurrentPersonnelData',
).then((data) => {
this.block2OptionsList[0].list[2].count = 333
this.block2OptionsList[0].list[0].count = 444
this.block2OptionsList[0].list[1].count = 555
}).catch((e) => {
})
},
listPerpleCarGateMachine(type) {
requestFN(
'/map/listGateMachine',
{
TYPE: type
}
).then((data) => {
this.block3List = data.varList.slice(0, 10)
console.log(this.block3List)
}).catch((e) => {
})
},
block3OptionsClick(index) {
this.block3OptionsIndex = index
this.listPerpleCarGateMachine(index)
},
//
obtainCarData() {
requestFN(
'/UserPosition/getCurrentCarData',
{ route: '/region/access/areaCarType' }
).then((data) => {
this.block2OptionsList[2].list[2].count = data.pd.onlineCarCount
}).catch((e) => {
})
}
}
}
</script>
<style lang="scss" scoped>
.menjin {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
.circular {
margin-top: 5px;
background-image: url("../../../assets/map/menjin/img1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 50px;
height: 50px;
text-align: center;
padding-top: 13px;
img {
width: 30px;
height: 26px;
animation: scale 2s infinite;
}
}
.label {
margin-top: 5px;
font-size: 12px;
color: #fff;
}
}
}
}
.block2 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
.items {
display: flex;
flex-wrap: wrap;
margin-bottom: 10px;
.item {
margin-top: 10px;
font-size: 12px;
color: #fff;
flex-basis: 50%;
}
}
}
}
}
.block3 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
&:nth-child(2) {
flex-basis: 20%;
}
&.green {
color: #7ccf41;
}
&.yellow {
color: #ffcb05;
}
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.line1 {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

View File

@ -0,0 +1,424 @@
<template>
<div class="menjin">
<div class="block1">
<layout-title title="设备在线情况"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title active">{{ item.title }}</div>
<div class="circular">
<img :src="item.img" alt="">
</div>
<div class="label">
{{ item.label1 }}
<count-to :start-val="0" :end-val="+item.count1" :duration="3600"/>
</div>
<div v-if="item.label2" class="label">
{{ item.label2 }}
<count-to :start-val="0" :end-val="+item.count2" :duration="3600"/>
</div>
<div v-if="item.label3" class="label">
{{ item.label3 }}
<count-to :start-val="0" :end-val="+item.count3" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="口门进出数据"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="title active">{{ item.title }}</div>
<div class="items">
<div v-for="(item1,index1) in item.list" :key="index1" class="item">
<div class="label">
{{ item1.label }}<count-to :start-val="0" :end-val="item1.count" :duration="3600"/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="口门进出记录"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block3OptionsList"
:key="index"
:class="['title', {active:index === block3OptionsIndex}]"
@click="block3OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div class="table">
<div class="tr">
<div class="td">卡口名称</div>
<div class="td">车牌</div>
<div class="td">时间</div>
<div class="td">状态</div>
</div>
<div v-infinite-scroll="load" :infinite-scroll-disabled="disabled" class="scroll">
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div v-if="block3OptionsIndex == 0" class="td line1">{{ item.USERNAME }}</div>
<div v-if="block3OptionsIndex == 1" class="td">{{ item.LICENSE_PLATE }}</div>
<div class="td">{{ item.TIME }}</div>
<div v-if="block3OptionsIndex == 0" :class="['td',{green:item.STATE == '0'}]">
{{ item.STATE == '0' ? '进入' : '出港' }}
</div>
<div v-if="block3OptionsIndex == 0" :class="['td',{yellow:item.STATE == '0'}]">{{
item.EQUIPMENTNAME
}}
</div>
<div v-if="block3OptionsIndex == 1" :class="['td',{green:item.STATE == '4'}]">
{{ item.STATE == '4' ? '进场' : '出场' }}
</div>
<div v-if="block3OptionsIndex == 1" :class="['td',{yellow:item.STATE == '4'}]">{{
item.COMING_REASON
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
export default {
components: {
layoutTitle,
CountTo
},
props: {
corpInfoId: {
type: String,
default: ''
},
area: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
block1OptionsList: [
{
title: '人员闸机',
img: require('../../../assets/map/menjin/ico1.png'),
label1: '今日进数',
count1: 0,
label2: '今日出数',
count2: 0,
label3: '今日剩余人数',
count3: 0
},
{
title: '车辆闸机',
img: require('../../../assets/map/menjin/ico2.png'),
label1: '今日进数',
count1: 0,
label2: '今日出数',
count2: 0,
label3: '今日剩余车数',
count3: 0
},
{
title: '摄像头数',
img: require('../../../assets/map/menjin/ico3.png'),
label1: '摄像头数',
count1: 0
}
],
block2OptionsList: [
{
title: '矿石作业区',
list: [
{
label: '进矿石作业区车辆数',
count: 0
},
{
label: '出矿石作业区车辆数',
count: 0
},
{
label: '矿石作业区场内车辆数',
count: 0
}
]
},
{
title: '杂货作业区',
list: [
{
label: '进杂货作业区车辆数',
count: 0
},
{
label: '出杂货作业区车辆数',
count: 0
},
{
label: '杂货作业区场内车辆数',
count: 0
}
]
}
],
block3OptionsList: ['矿石作业区', '杂货作业区'],
block3OptionsIndex: 0,
loading: false,
currentPage: 1,
count: 0,
totalPage: 0,
block3List: []
}
},
computed: {
noMore() {
return this.currentPage >= this.totalPage
},
disabled() {
return this.loading || this.noMore
}
},
created() {
this.getDoorManagement()
},
methods: {
load() {
this.loading = true
this.currentPage += 1
this.loadRecord(this.block3OptionsIndex)
},
loadRecord(index) {
this.getDoorWayRecords(index)
},
getDoorManagement() {
requestFN(
'/map/getDoorManagement',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block2OptionsList[0].list[0].count = data.czksCarToday.oreInAll
this.block2OptionsList[0].list[1].count = data.czksCarToday.oreOutAll
this.block2OptionsList[0].list[2].count = data.czksCarToday.oreInAll - data.czksCarToday.oreOutAll
this.block2OptionsList[1].list[0].count = data.czksCarToday.groceryInAll
this.block2OptionsList[1].list[1].count = data.czksCarToday.groceryOutAll
this.block2OptionsList[1].list[2].count = data.czksCarToday.groceryInAll - data.czksCarToday.groceryOutAll
})
},
block3OptionsClick(index) {
this.block3List = []
this.block3OptionsIndex = index
this.getDoorWayRecords(index)
}
}
}
</script>
<style lang="scss" scoped>
.menjin {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
.circular {
margin-top: 5px;
background-image: url("../../../assets/map/menjin/img1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 50px;
height: 50px;
text-align: center;
padding-top: 13px;
img {
width: 30px;
height: 26px;
animation: scale 2s infinite;
}
}
.label {
margin-top: 5px;
font-size: 12px;
color: #fff;
}
}
}
}
.block2 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
.items {
display: flex;
flex-wrap: wrap;
margin-bottom: 10px;
.item {
margin-top: 10px;
font-size: 12px;
color: #fff;
flex-basis: 50%;
}
}
}
}
}
.block3 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.scroll {
max-height: 200px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 5px;
}
&::-webkit-scrollbar-thumb {
border-radius: 5px;
background: rgba(2, 30, 81, 0.851);
}
&::-webkit-scrollbar-track {
border-radius: 5px;
background: rgba(255, 255, 255, 0.1);
}
.tr {
&:nth-child(odd) {
background-color: transparent;
}
}
}
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
&:nth-child(2) {
flex-basis: 20%;
}
&:nth-child(3) {
flex: none;
flex-basis: 50px;
}
&.green {
color: #7ccf41;
}
&.yellow {
color: #ffcb05;
}
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(1);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.line1 {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
</style>

View File

@ -203,7 +203,8 @@ export default {
requestFN(
'/map/listbymeteorological',
{
CORPINFO_ID: this.corpInfoId || '035958e685cf4850bc40151c5e0617a6'
CORPINFO_ID: this.corpInfoId || '035958e685cf4850bc40151c5e0617a6',
GANGKOU: this.gangkou
}
).then((data) => {
this.listLoading = false

View File

@ -0,0 +1,418 @@
<template>
<div class="renyuan">
<div class="block1">
<layout-title title="定位基础信息"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="imger">
<img :src="item.img" alt="">
</div>
<div class="info">
<div class="label">{{ item.title }}</div>
<div class="text"><count-to :start-val="0" :end-val="item.count" :duration="3600"/></div>
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="告警数据"/>
<div class="options">
<div class="bg"/>
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="label">{{ item.alarmTypeName }}</div>
<div class="info">
<span class="count"><count-to :start-val="0" :end-val="item.alarmCount" :duration="3600"/></span>
<span class="company"></span>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="定位标签状态"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block3OptionsList"
:key="index"
:class="['title', {active:index === block3OptionsIndex}]"
@click="block3OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div class="table">
<div class="tr">
<div class="td">卡号</div>
<div class="td">姓名</div>
<div class="td">状态</div>
</div>
<div v-infinite-scroll="load" :infinite-scroll-disabled="disabled" class="scroll">
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td">{{ item.devidno }}</div>
<div class="td">{{ item.fullName }}</div>
<div class="td">{{ item.onlineornot ? '在线':'离线' }}</div>
<!-- <div :class="['td',{error:item.STATE == '1'}]">{{ item.STATE == '1' ? '异常' : '正常' }}</div>-->
</div>
<div v-if="loading" class="tr">
<div class="td">加载中...</div>
</div>
</div>
<!-- <div v-for="(item,index) in block3List" :key="index" class="tr">-->
<!-- <div class="td">{{ item.cardNo }}</div>-->
<!-- <div class="td">{{ item.name }}</div>-->
<!-- <div class="td">{{ item.cardType }}</div>-->
<!-- </div>-->
</div>
<!-- <div v-show="block3OptionsIndex=== 1" class="table">-->
<!-- <div class="tr">-->
<!-- <div class="td">车牌号</div>-->
<!-- <div class="td">状态</div>-->
<!-- </div>-->
<!-- <div v-for="(item,index) in block4List" :key="index" class="tr">-->
<!-- <div class="td">{{ item.name }}</div>-->
<!-- <div class="td">在线</div>-->
<!-- </div>-->
<!-- </div>-->
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import { requestFN } from '../../../utils/request'
import CountTo from 'vue-count-to'
export default {
components: {
layoutTitle,
CountTo
},
data() {
return {
block1OptionsList: [
{
title: '在线员工',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: 0
},
{
title: '外协人员',
img: require('../../../assets/map/renyuan/img1ico4.png'),
count: 0
},
{
title: '内部人员',
img: require('../../../assets/map/renyuan/img1ico3.png'),
count: 0
}
// ,
// {
// title: '线',
// img: require('../../../assets/map/renyuan/img1ico2.png'),
// count: 0
// },
// {
// title: '',
// img: require('../../../assets/map/renyuan/img1ico5.png'),
// count: 0
// }
],
block2OptionsList: [
{
title: '电子围栏告警',
count: 0
},
{
title: '静超时告警',
count: 0
},
{
title: '超员/缺员告警',
count: 0
},
{
title: '离岗告警',
count: 0
},
{
title: '车辆超速告警',
count: 0
},
{
title: 'SOS求救',
count: 0
}
],
block3OptionsList: ['相关方员工', '普通员工'],
block3OptionsIndex: 0,
currentPage: 1,
loading: false,
count: 0,
totalPage: 0,
block3List: [],
block4List: [],
timer: ''
}
},
computed: {
noMore() {
return this.currentPage >= this.totalPage
},
disabled() {
return this.loading || this.noMore
}
},
mounted() {
// this.obtainPersonnelData()
// this.personPositioningStatistics()
// this.startPersonnelDataTimer() //
// this.obtainCarData()
// this.carPositioningStatistics()
},
destroyed() {
clearInterval(this.timer) //
},
created() {
this.getCmtWorkCardLocationCount()
},
methods: {
getCmtWorkCardLocationCount() {
requestFN(
'/map/findWorkCardLocation',
{}
).then((data) => {
this.block1OptionsList[0].count = data.onlineCount
}).catch((e) => {
})
},
getCmtWorkCardLocation() {
requestFN(
'/map/findWorkCardLocation',
{}
).then((data) => {
this.block3List = this.block3List.concat(data.list)
}).catch((e) => {
})
},
block3OptionsClick(index) {
this.currentPage = 1
this.block3List = []
this.block3OptionsIndex = index
if (index === 1) {
this.getCmtWorkCardLocation()
}
// this.getCzksPersonStaffListPage()
}
}
}
</script>
<style lang="scss" scoped>
.renyuan {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
.option {
display: flex;
width: 50%;
align-items: center;
margin-top: 10px;
&:nth-child(-n+2) {
margin-top: 0;
}
.imger {
width: 50px;
height: 50px;
background-image: url("../../../assets/map/menjin/img1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
text-align: center;
margin-left: 20px;
img {
width: 30px;
height: 30px;
animation: scale 2s infinite;
margin-top: 10px;
}
}
.info {
color: #FFFFFF;
margin-left: 10px;
.label {
font-size: 12px;
height: 25px;
line-height: 25px;
}
.text {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
margin-top: -5px;
}
}
}
}
}
.block2 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
margin-top: 10px;
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
position: relative;
height: 244px;
.bg {
background-image: url("../../../assets/map/renyuan/img2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 287px;
height: 244px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.option {
flex-basis: 35%;
text-align: center;
.label {
font-size: 14px;
color: #fff;
}
.info {
.count {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.company {
font-size: 14px;
color: #fff;
}
}
}
}
}
.block3 {
margin-top: 10px;
width: 400px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.scroll {
max-height: 250px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 5px;
}
&::-webkit-scrollbar-thumb {
border-radius: 5px;
background: rgba(2, 30, 81, 0.851);
}
&::-webkit-scrollbar-track {
border-radius: 5px;
background: rgba(255, 255, 255, 0.1);
}
}
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(0.9);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(0.9);
}
}
</style>

View File

@ -0,0 +1,429 @@
<template>
<div class="renyuan">
<div class="block1">
<layout-title title="定位基础信息"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="imger">
<img :src="item.img" alt="">
</div>
<div class="info">
<div class="label">{{ item.title }}</div>
<div class="text"><count-to :start-val="0" :end-val="item.count" :duration="3600"/></div>
</div>
</div>
</div>
</div>
<div class="block2">
<layout-title title="定位状态数据"/>
<div class="options">
<div class="bg"/>
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="label">{{ item.alarmTypeName }}</div>
<div class="info">
<span class="count"><count-to :start-val="0" :end-val="item.alarmCount" :duration="3600"/></span>
<span class="company"></span>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="定位标签状态"/>
<div class="content">
<div class="options">
<div
v-for="(item,index) in block3OptionsList"
:key="index"
:class="['title', {active:index === block3OptionsIndex}]"
@click="block3OptionsClick(index)"
>
{{ item }}
</div>
</div>
<div class="table">
<div class="tr">
<div class="td">卡号</div>
<div class="td">姓名</div>
<div class="td">状态</div>
</div>
<div v-infinite-scroll="load" :infinite-scroll-disabled="disabled" class="scroll">
<div v-for="(item,index) in block3List" :key="index" class="tr">
<div class="td">{{ item.cardId }}</div>
<div class="td">{{ item.realName }}</div>
<div class="td">{{ item.online?'在线':'离线' }}</div>
</div>
<div v-if="loading" class="tr">
<div class="td">加载中...</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '../../../utils/request'
export default {
components: {
CountTo,
layoutTitle
},
data() {
return {
block1OptionsList: [
{
title: '在线员工',
img: require('../../../assets/map/renyuan/img1ico1.png'),
count: 0
},
{
title: '外协人员',
img: require('../../../assets/map/renyuan/img1ico4.png'),
count: 0
},
{
title: '内部人员',
img: require('../../../assets/map/renyuan/img1ico3.png'),
count: 0
}
// ,
// {
// title: '线',
// img: require('../../../assets/map/renyuan/img1ico2.png'),
// count: 0
// },
// {
// title: '',
// img: require('../../../assets/map/renyuan/img1ico5.png'),
// count: 0
// }
],
block2OptionsList: [
{
title: '电子围栏告警',
count: 0
},
{
title: '静超时告警',
count: 0
},
{
title: '超员/缺员告警',
count: 0
},
{
title: '离岗告警',
count: 0
},
{
title: '车辆超速告警',
count: 0
},
{
title: 'SOS求救',
count: 0
}
],
block3OptionsList: ['相关方员工', '普通员工'],
block3OptionsIndex: 0,
currentPage: 1,
loading: false,
count: 0,
totalPage: 0,
block3List: [],
block4List: [],
timer: ''
}
},
computed: {
noMore() {
return this.currentPage >= this.totalPage
},
disabled() {
return this.loading || this.noMore
}
},
created() {
this.getCzksBasicLocationInfoData()
this.getAlarmNum()
this.getCzksPersonStaffListPage()
},
mounted() {
},
destroyed() {
},
methods: {
load() {
this.loading = true
this.currentPage += 1
this.getCzksPersonStaffListPage()
},
//
// startPersonnelDataTimer() {
// this.timer = setInterval(() => {
// this.obtainPersonnelData()
// this.personPositioningStatistics()
// }, 300000)
// },
//
getAlarmNum() {
requestFN(
'/czks/map/getAlarmData',
{}
).then((data) => {
this.block2OptionsList = data.data
}).catch((e) => {
})
},
getCzksBasicLocationInfoData() {
requestFN(
'/czks/map/getCzksBasicLocationInfoData',
{}
).then((data) => {
let baseData = []
baseData = data.data
for (let i = 0; i < baseData.length; i++) {
this.block1OptionsList[i].title = baseData[i].personTypeName
this.block1OptionsList[i].count = baseData[i].personCount
}
}).catch((e) => {
})
},
getCzksPersonStaffListPage() {
requestFN(
'/czks/map/personStaffList',
{
pageNum: this.currentPage,
type: this.block3OptionsIndex,
pageSize: 20
}
).then((data) => {
this.block3List = this.block3List.concat(data.data)
this.totalPage = data.total
this.loading = false
}).catch((e) => {
})
},
block3OptionsClick(index) {
this.currentPage = 1
this.block3List = []
this.block3OptionsIndex = index
this.getCzksPersonStaffListPage()
}
}
}
</script>
<style lang="scss" scoped>
.renyuan {
.title {
background-image: url("../../../assets/map/menjin/title_on.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
&.active {
background-image: url("../../../assets/map/menjin/title.png");
}
}
.block1 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
.option {
display: flex;
width: 50%;
align-items: center;
margin-top: 10px;
&:nth-child(-n+2) {
margin-top: 0;
}
.imger {
width: 50px;
height: 50px;
background-image: url("../../../assets/map/menjin/img1.png");
background-size: 100% 100%;
background-repeat: no-repeat;
text-align: center;
margin-left: 20px;
img {
width: 30px;
height: 30px;
animation: scale 2s infinite;
margin-top: 10px;
}
}
.info {
color: #FFFFFF;
margin-left: 10px;
.label {
font-size: 12px;
height: 25px;
line-height: 25px;
}
.text {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
margin-top: -5px;
}
}
}
}
}
.block2 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
margin-top: 10px;
.options {
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
align-items: center;
position: relative;
height: 244px;
.bg {
background-image: url("../../../assets/map/renyuan/img2.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 287px;
height: 244px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.option {
flex-basis: 35%;
text-align: center;
.label {
font-size: 14px;
color: #fff;
}
.info {
.count {
font-size: 24px;
background: linear-gradient(to top, #48bbf0, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
.company {
font-size: 14px;
color: #fff;
}
}
}
}
}
.block3 {
margin-top: 10px;
width: 400px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.content {
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
padding: 10px;
.options {
display: flex;
justify-content: flex-end;
.title {
cursor: pointer;
}
}
.table {
margin-top: 5px;
.scroll {
max-height: 250px;
overflow-y: auto;
&::-webkit-scrollbar {
width: 5px;
}
&::-webkit-scrollbar-thumb {
border-radius: 5px;
background: rgba(2, 30, 81, 0.851);
}
&::-webkit-scrollbar-track {
border-radius: 5px;
background: rgba(255, 255, 255, 0.1);
}
}
.tr {
display: flex;
&:nth-child(odd) {
background-color: rgba(42, 86, 158, 0.53);
}
.td {
flex: 1;
text-align: center;
font-size: 12px;
color: #fff;
padding: 5px;
}
}
}
}
}
}
@keyframes scale {
0% {
transform: scale(0.9);
}
50% {
transform: scale(0.8);
}
100% {
transform: scale(0.9);
}
}
</style>

View File

@ -261,10 +261,18 @@ export default {
this.measuresList = data.measuresList // map
this.gasList = data.gasList // map
this.gas = data.gas || {} // map
this.pd.CONFIRM_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.pd.APPROVE_USER_MEASURES = this.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
this.info.CONFIRM_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[0]
this.info.APPROVE_USER_MEASURES = data.pd.OTHER_PROTECTIVE_MEASURES.split(';_;')[1]
}).catch((e) => {
console.log(e)
})
},
findCharIndex(str, char, num) {
let index = str.indexOf(char)
for (let i = 0; i < num - 1; i++) {
index = str.indexOf(char, index + 1)
}
return index
}
}
}

View File

@ -7,14 +7,17 @@
<temperaturestation v-if="type === '561347f0cff641dba8b2b22c0f443348'" :id="id" :type="type" :gangkou="gangkou"/>
<humiditystation v-if="type === '732fe73933b845c6b1e2aee06a38ed31'" :id="id" :type="type" :gangkou="gangkou"/>
<windspeedstation v-if="type === '2da29f00852a4653ba3e760b9de57412'" :id="id" :type="type" :gangkou="gangkou"/>
<windspeedstation-cmt v-if="type === '2da29f00852a4653ba3e760b9de5741200005'" :name="name" :id="id" :type="type" :gangkou="gangkou"/>
<xf-point v-if="type === 'point'" :id="id" :type="type" :gangkou="gangkou"/>
<xf-control v-if="type === 'xfbf01' || type ==='xfkzs01' || type ==='xfjyd01' || type ==='xfsy01'" :id="id" :type="type" :gangkou="gangkou"/>
<mk-gate-machine v-if="type === 'CAR'||type ==='PERSON' || type ==='CAMERA'" :id="id" :type="type" :gangkou="gangkou"/>
<mk-gate-machine-cfd v-if="type === 'CAR00004'||type ==='PERSON00004' " :id="id" :type="type" :gangkou="gangkou" :infoname="infoname"/>
<mk-gate-machine-cmt v-if="type === 'CAR00005'||type ==='PERSON00005' " :id="id" :type="type" :gangkou="gangkou" :infoname="infoname"/>
<zhong_da_info v-if="type === 'majordangersource'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play v-if="type === 'video'" :id="id" :type="type" :gangkou="gangkou" request-url="/api/homemajor/getVideoInfo"/>
<video-play-cmt v-if="type === 'platcamera00005' || type === 'CAMERA00005'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play-cfd v-if="type === 'CAMERA00004' || type === 'platcamera00004'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play-plat v-if="type === 'platcamera'" :id="id" :type="type" :gangkou="gangkou"/>
<video-play-plat v-if="type === 'platcamera'" :id="id" :type="type" :gangkou="gangkou" :corp-info-id="corpInfoId"/>
<!--秦港一公司 边界入侵 详细页面 start-->
<video-play-bianjieruqin v-if="type === 'bianjieruqin'" :id="id" :type="type" :gangkou="gangkou"/>
<!--秦港一公司 边界入侵 详细页面 end-->
@ -63,10 +66,12 @@ import weatherstation from './weatherstation.vue'
import temperaturestation from './weatherstation.vue'
import humiditystation from './weatherstation.vue'
import windspeedstation from './weatherstation.vue'
import windspeedstationCmt from './weatherstationCmt.vue'
import XfControl from './xfControl.vue'
import XfPoint from './xfPoint.vue'
import MkGateMachine from './mkGateMachine.vue'
import MkGateMachineCfd from './mkGateMachineCfd.vue'
import MkGateMachineCmt from './mkGateMachineCmt.vue'
import Zhong_da_info from './zhong_da_info.vue'
import electricityOrder from './electricityOrder.vue'
import highworkOrder from './highworkOrder.vue'
@ -75,6 +80,7 @@ import blindboardOrder from './blindboardOrder.vue'
import breakgroundOrder from './breakgroundOrder.vue'
import hoistingOrder from './hoistingOrder.vue'
import videoPlay from './video_play.vue'
import videoPlayCmt from './video_play_cmt.vue'
import videoPlayCfd from './video_play_cfd.vue'
import videoPlayPlat from './video_play_plat.vue'
import videoPlayBianjieruqin from './video_play_bianjieruqin.vue'
@ -106,6 +112,7 @@ export default {
temperaturestation,
humiditystation,
windspeedstation,
windspeedstationCmt,
electricityOrder,
highworkOrder,
cutroadOrder,
@ -113,6 +120,7 @@ export default {
breakgroundOrder,
hoistingOrder,
videoPlay,
videoPlayCmt,
videoPlayCfd,
videoPlayPlat,
hotworkCfdD,
@ -129,10 +137,10 @@ export default {
videoPlayBianjieruqin,
peoplePositionOne,
hotworkFirst,
peoplePositionOne,
peoplePositionYGS,
outSourceInfo,
outSourceVideoInfo
outSourceVideoInfo,
MkGateMachineCmt
},
props: {
title: {
@ -166,7 +174,11 @@ export default {
infoname: {
type: String,
default: ''
}
},
name: {
type: String,
default: ''
},
},
methods: {
closeDialog() {

View File

@ -0,0 +1,208 @@
<template>
<div class="app-container print-work">
<div class="level-title">
<h1>卡口信息</h1>
<div class="level-btns">卡口编号:{{ id }}</div>
</div>
<table class="table-ui">
<tr>
<td class="bbg-transparent">卡口类型</td>
<td >
<template v-if="type === 'PERSON00005'">
<span>
人卡
</span>
</template>
<template v-else>
<span>
车卡
</span>
</template>
</td>
<td class="bbg-transparent">卡口位置</td>
<td >
<span>
{{ infoname }}
</span>
</td>
</tr>
<!-- <tr>-->
<!-- <td class="bbg-transparent">卡口位置名称</td>-->
<!-- <td colspan="3" >{{ '秦皇岛市北京区石家庄镇唐山村' }}</td>-->
<!-- </tr>-->
<tr>
<td class="bbg-transparent">卡口状态</td>
<td colspan="3" >{{ '在线' }}</td>
</tr>
</table>
<div class="level-title martop">
<h1>进出记录</h1>
</div>
<table class="table-ui">
<tr v-if="type === 'PERSON00005'">
<td colspan="4" style="padding: 0;">
<table class="table-vi">
<tr class="bbg-transparent">
<td>序号</td>
<td>进出位置</td>
<td>人员姓名</td>
<td>卡号</td>
<td>进出状态</td>
<td>进出时间</td>
</tr>
<tr v-for="(item, index) in measuresList" :key="item.cardNo">
<td style="text-align: center">{{ index + 1 }}</td>
<td style="text-align: center">{{ item.doorName }}</td>
<td style="text-align: center">{{ item.personName }}</td>
<td style="text-align: center">{{ item.cardNo }}</td>
<td style="text-align: center">{{ item.inAndOutType === '0' ? '出' : '进' }}</td>
<td style="text-align: center">{{ formatDate(Date.parse(new Date(item.eventTime)),"YYYY-MM-DD HH:mm:ss") }}</td>
</tr>
</table>
</td>
</tr>
<tr v-if="type === 'CAR00005'">
<td colspan="4" style="padding: 0;">
<table class="table-vi">
<tr class="bbg-transparent">
<td>序号</td>
<td>进出位置</td>
<td>车牌号</td>
<td>车辆类型</td>
<td>进出状态</td>
<td>进出时间</td>
</tr>
<tr v-for="(item, index) in measuresList" :key="item.empNo">
<td style="text-align: center">{{ index + 1 }}</td>
<td style="text-align: center">{{ item.ROADWAYNAME }}</td>
<td style="text-align: center">{{ item.PLATENO }}</td>
<td style="text-align: center">{{ item.VEHICLETYPE === '0' ? '其他车' : item.VEHICLETYPE === '1' ? '小型车' :item.VEHICLETYPE === '2' ? '大型车' : '摩托车' }}</td>
<td style="text-align: center">{{ item.VEHICLEOUT === '0' ? '进场' : '出场' }}</td>
<td style="text-align: center">{{ formatDate(Date.parse(new Date(item.CROSSTIME)),"YYYY-MM-DD HH:mm:ss") }}</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import moment from 'moment'
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
name: {
type: String,
default() {
return ''
}
},
infoname: {
type: String,
default() {
return ''
}
}
},
data() {
return {
config: config,
ISOTHER: false,
info: {
OTHER_PROTECTIVE_MEASURES: []
},
measuresList: [],
measuresScheduleList: []
}
},
created() {
this.getData()
this.startPersonnelDataTimer()
},
destroyed() {
clearInterval(this.timer) //
},
methods: {
formatDate(date, format) {
if (date) {
return moment(date).format(format)
} else {
return ''
}
},
getData() {
requestFN(
'/map/getGatesInAndOutNumById',
{
GANGKOU: '00005',
GATE_AREA_ID: this.id,
TYPE: this.type,
status: '0',
pageNo: 1,
pageSize: 100
}
).then((data) => {
this.info = data.pd
console.log(data.doorInfo.data.list)
this.measuresList = data.doorInfo.data.list
/* while (this.measuresList.length > 15) {
console.log('删除元素')
this.measuresList.splice(0,1)
}*/
}).catch((e) => {
})
},
//
startPersonnelDataTimer() {
this.timer = setInterval(() => {
console.log('执行定时器查询闸机信息')
this.getDataschedule()
for (let i = 0; i < this.measuresScheduleList.length; i++) {
this.measuresList.push(this.measuresScheduleList[i])
}
/* while (this.measuresList.length > 15) {
console.log('删除元素')
this.measuresList.splice(0,1)
}*/
}, 60000)
},
getDataschedule() {
requestFN(
'/map/getGatesInAndOutNumById',
{
id: this.id,
TYPE: this.type,
status: '1',
pageNo: 1,
pageSize: 10,
GANGKOU: '00005'
}
).then((data) => {
this.measuresScheduleList = data.doorInfo.data.list
}).catch((e) => {
})
}
}
}
</script>
<style lang="scss" scoped>
.martop {
margin-top: 20px;
}
</style>

View File

@ -0,0 +1,66 @@
<template>
<div>
<div id="aLiVideoPlayer" class="prism-player"/>
</div>
</template>
<script>
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
}
},
data() {
return {
hls: false,
player: null,
url: ''
}
},
beforeDestroy() {
this.player && this.player.dispose()
},
created() {
console.info(this.id)
this.showVideo()
},
methods: {
showVideo() {
this.$nextTick(() => {
// eslint-disable-next-line no-undef
this.player = new Aliplayer({
'id': 'aLiVideoPlayer',
'source': config.ysVideoUrl + '/live/loadmin/38f8c7d91db97445a1f6e0ef5bbd5ae0/' + config.ysVideoDefinition + '/' + this.id + '.m3u8',
// 'source': 'http://172.16.11.146:8991/videoApi/live/loadmin/38f8c7d91db97445a1f6e0ef5bbd5ae0/4/MT-CFD-MK-IPC-16216_1.m3u8',
'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')
})
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -80,18 +80,30 @@ export default {
})
},
showVideo() {
let url = this.requestUrl
console.log(this.corpInfoId)
console.log(this.corpInfoId == 'f8da1790b1034058ae2efefd69af3284')
if (this.corpInfoId == 'f8da1790b1034058ae2efefd69af3284') {
url = '/czks/map/getCameraHlsPath'
}
requestFN(
this.requestUrl,
url,
{
PLATFORMVIDEOMANAGEMENT_ID: this.id
}
).then((res) => {
this.info = res.pd
let hlsPath = ''
if (this.corpInfoId == 'f8da1790b1034058ae2efefd69af3284') {
hlsPath = res.hlsPath
} else {
hlsPath = res.data.url
}
this.$nextTick(() => {
// eslint-disable-next-line no-undef
this.player = new Aliplayer({
'id': 'aLiVideoPlayer',
'source': res.data.url,
'source': hlsPath,
'width': '100%',
'height': '380px',
'autoplay': true,

View File

@ -0,0 +1,669 @@
<template>
<div class="app-container print-work">
<div class="level-title">
<h1>{{ info.EQUIPMENTNAME }}实时监测数据 {{ info.OPERATTIME }}</h1>
</div>
<div style="display: flex">
<div v-if="info.WINDDIRECTION != '-'" id="main4"/>
<div v-if="info.TEMPERATURE != '-'" id="main5"/>
<div v-if="info.WINDSPEED != '-'" id="main6"/>
</div>
<table class="table-ui">
<tr>
<td class="bbg-transparent">风速监测</td>
<td>{{ info.WINDSPEED }}</td>
<td class="bbg-transparent">风向监测</td>
<td>{{ info.WINDDIRECTION }}</td>
</tr>
<tr>
<td class="bbg-transparent">温度监测</td>
<td>{{ info.TEMPERATURE }}</td>
<td class="bbg-transparent">湿度监测</td>
<td>{{ info.COUNTARCHIVE }}</td>
</tr>
</table>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
import * as echarts from 'echarts'
let myChart4 = null
let myChart5 = null
let myChart6 = null
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
name: {
type: String,
default() {
return ''
}
}
},
data() {
return {
timer: '',
config: config,
info: {}
}
},
mounted() {
window.onresize = function() {
myChart4 && myChart4.resize()
myChart5 && myChart5.resize()
myChart6 && myChart6.resize()
}
this.getMeteorologicalinfo()
this.start()
},
beforeDestroy() {
myChart4 = null
myChart5 = null
myChart6 = null
console.log('定时器关闭')
clearInterval(this.timer)
},
methods: {
//
start() {
console.log('定时器开启')
this.timer = setInterval(this.getMeteorologicalinfo, 10000) // : ;
},
over() {
clearInterval(this.timer)
},
getMeteorologicalinfo() {
requestFN(
'/map/getDetailByName',
{
FNAME: this.name,
type: this.type
}
).then((data) => {
this.listLoading = false
this.info = data.pd || {}
this.info.COUNTARCHIVE = data.pd.COUNTARCHIVE || '-'
this.info.TEMPERATURE = data.pd.TEMPERATURE || '-'
this.info.WINDSPEED = data.pd.WINDSPEED || '-'
this.info.WINDDIRECTION = data.pd.WINDDIRECTION || '-'
this.$nextTick(() => {
if (data.pd.WINDDIRECTION != '-') {
console.log(this.info.WINDDIRECTION)
this.initEcharts1(data)
this.info.WINDDIRECTION = this.calculateWindDirection(this.info.WINDDIRECTION)
console.log(this.info.WINDDIRECTION)
}
if (data.pd.TEMPERATURE != '-') {
this.initEcharts2(data)
}
if (data.pd.WINDSPEED != '-') {
this.initEcharts3(data)
}
})
}).catch((e) => {
})
},
initEcharts1(data) {
myChart4 = echarts.init(document.querySelector('#main4'))
var option = {
title: {
// x: "center",
top: 0,
text: '风向监测',
textStyle: {
fontWeight: 'normal',
fontSize: 16,
color: '#fff'
}
},
series: {
name: '',
type: 'gauge',
min: 0,
max: 360,
startAngle: 90,
endAngle: -269.9999,
radius: '55%',
splitNumber: 8,
axisLine: {
lineStyle: {
width: 15,
shadowBlur: 0,
color: [
[0.25, '#DDBD4D'],
[0.5, '#E43F3D'],
[0.75, '#7CBB55'],
[1, '#9CD6CE']
]
}
},
axisTick: {
show: true,
splitNumber: 5,
lineStyle: {
color: '#fff'
}
},
splitLine: {
length: 10,
lineStyle: {
width: 5,
color: '#fff'
}
},
axisLabel: {
formatter: function(e) {
switch (e + '') {
case '0':
return '北'
case '45':
return '东北'
case '135':
return '东南'
case '225':
return '西南'
case '315':
return '西北'
case '360':
return '北'
case '180':
return '南'
case '90':
return '东'
case '270':
return '西'
default:
return e
}
},
distance: -60,
textStyle: {
fontSize: 14,
fontWeight: '',
color: '#fff'
}
},
pointer: {
show: true,
length: '80%',
width: 5
},
detail: {
formatter: function(param) {
var level = ''
if (param > 0 && param < 90) {
level = '东北'
} else if (param > 90 && param < 180) {
level = '东南'
} else if (param > 180 && param < 270) {
level = '西南'
} else if (param > 270 && param < 360) {
level = '西北'
} else if (param == 360) {
level = '正北'
} else if (param == 270) {
level = '正西'
} else if (param == 90) {
level = '正东'
} else if (param == 180) {
level = '正南'
}
return '当前风向:' + level + '(' + param + '°)'
},
offsetCenter: [0, 150],
textStyle: {
fontSize: 14,
color: '#fff'
}
},
data: [data.pd.WINDDIRECTION]
}
}
myChart4.setOption(option)
},
initEcharts2(data) {
myChart5 = echarts.init(document.querySelector('#main5'))
var value = data.pd.TEMPERATURE
var kd = []
// 使35
for (var i = 0, len = 130; i <= len; i++) {
if (i > 100 || i < 30) {
kd.push('0')
} else {
if (i % 5 === 0) {
kd.push('5')
} else {
kd.push('3')
}
}
}
// console.log(kd)
// 00-1000-1300-30
function getData(value) {
return [Number(value) + 30]
}
var mercuryColor = '#fd4d49'
var borderColor = '#fd4d49'
const option = {
title: {
text: '温度监测',
show: true,
textStyle: {
fontWeight: 'normal',
fontSize: 16,
color: '#fff'
}
},
yAxis: [{
show: false,
min: 0,
max: 130
}, {
show: false,
data: [],
min: 0,
max: 130
}],
xAxis: [{
show: false,
data: []
}, {
show: false,
data: []
}, {
show: false,
data: []
}, {
show: false,
min: -110,
max: 100
}],
series: [{
name: '条',
type: 'bar',
// XAxis
xAxisIndex: 0,
data: getData(value),
barWidth: 18,
itemStyle: {
normal: {
color: mercuryColor,
barBorderRadius: 0
}
},
label: {
normal: {
show: true,
position: 'top',
formatter: function(param) {
// 00-1000-1300-30
return (((param.value * 100) - (30 * 100)) / 100) + '°C'
},
textStyle: {
color: '#ccc',
fontSize: '10'
}
}
},
z: 2
}, {
name: '白框',
type: 'bar',
xAxisIndex: 1,
barGap: '-100%',
data: [129],
barWidth: 28,
itemStyle: {
normal: {
color: '#ffffff',
barBorderRadius: 50
}
},
z: 1
}, {
name: '外框',
type: 'bar',
xAxisIndex: 2,
barGap: '-100%',
data: [130],
barWidth: 38,
itemStyle: {
normal: {
color: borderColor,
barBorderRadius: 50
}
},
z: 0
}, {
name: '圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
xAxisIndex: 0,
symbolSize: 48,
itemStyle: {
normal: {
color: mercuryColor,
opacity: 1
}
},
z: 2
}, {
name: '白圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
xAxisIndex: 1,
symbolSize: 60,
itemStyle: {
normal: {
color: '#ffffff',
opacity: 1
}
},
z: 1
}, {
name: '外圆',
type: 'scatter',
hoverAnimation: false,
data: [0],
xAxisIndex: 2,
symbolSize: 70,
itemStyle: {
normal: {
color: borderColor,
opacity: 1
}
},
z: 0
}, {
name: '刻度',
type: 'bar',
yAxisIndex: 1,
xAxisIndex: 3,
label: {
normal: {
show: true,
position: 'right',
distance: 10,
color: '#fff',
fontSize: 10,
formatter: function(params) {
// 00-1000-1300-30
if (params.dataIndex > 100 || params.dataIndex < 30) {
return ''
} else {
if (params.dataIndex % 5 === 0) {
return params.dataIndex - 30
} else {
return ''
}
}
}
}
},
barGap: '-100%',
data: kd,
barWidth: 1,
itemStyle: {
normal: {
color: borderColor,
barBorderRadius: 10
}
},
z: 0
}]
}
myChart5.setOption(option)
},
initEcharts3(data) {
myChart6 = echarts.init(document.querySelector('#main6'))
const option = {
// backgroundColor:'#0F2D5B',
title: {
text: '风速监测',
show: true,
textStyle: {
fontWeight: 'normal',
fontSize: 16,
color: '#fff'
}
},
series: [
{
name: '外圈',
type: 'gauge',
min: 0,
max: 30,
splitNumber: 10,
center: ['50%', '55%'],
radius: '73%',
axisLine: {
lineStyle: {
color: [[1, '#2E5BA1']],
width: 20
}
},
splitLine: {
distance: -20,
length: 20,
lineStyle: {
width: 2,
color: '#0F2D5B'
}
},
axisTick: {
distance: -20,
length: 5,
lineStyle: {
color: '#0F2D5B'
}
},
axisLabel: {
distance: -25,
color: '#7392C1',
fontSize: 14
},
anchor: {
show: false
},
pointer: {
show: false
}
},
{
name: '内圈',
type: 'gauge',
min: 0,
max: 30,
splitNumber: 10,
center: ['50%', '55%'],
radius: '65%',
axisLine: {
lineStyle: {
width: 20,
color: [
[0.25, '#18EC90'],
[0.5, '#E2DC2E'],
[0.75, '#E2A02E'],
[1, '#FE4747']
]
}
},
silent: true,
pointer: {
length: '85%',
width: 4,
itemStyle: {
color: 'inherit',
borderWidth: 1,
borderColor: 'inherit', // '#0D3778',
shadowColor: 'inherit',
shadowBlur: 1
}
},
axisTick: {
show: false,
distance: -20,
length: 5,
lineStyle: {
color: '#0F2D5B'
}
},
splitLine: {
distance: -20,
length: 20,
lineStyle: {
width: 2,
color: '#0F2D5B'
}
},
axisLabel: {
show: false
},
title: { //
show: true, // , true
offsetCenter: [0, '95%'], //
color: '#ccc', // , #333
fontSize: 15 // , 15
},
detail: {
valueAnimation: true,
offsetCenter: [0, '70%'],
formatter: '{value}',
color: 'inherit', // , #333
fontSize: 20
},
data: [{
name: '风速(m/s)',
value: data.pd.WINDSPEED
}]
}
]
}
myChart6.setOption(option)
},
calculateWindDirection(angle) {
const arr = [
{
directions: '北',
minAngle: '348.76',
maxAngle: '11.25'
},
{
directions: '北东北',
minAngle: '11.26',
maxAngle: '33.75'
},
{
directions: '东北',
minAngle: '33.76',
maxAngle: '56.25'
},
{
directions: '东东北',
minAngle: '56.26',
maxAngle: '78.75'
},
{
directions: '东',
minAngle: '78.76',
maxAngle: '101.25'
},
{
directions: '东东南',
minAngle: '101.26',
maxAngle: '123.75'
},
{
directions: '东南',
minAngle: '123.76',
maxAngle: '146.25'
},
{
directions: '南东南',
minAngle: '146.26',
maxAngle: '168.75'
},
{
directions: '南',
minAngle: '168.76',
maxAngle: '191.25'
},
{
directions: '南西南',
minAngle: '191.26',
maxAngle: '213.75'
},
{
directions: '西南',
minAngle: '213.76',
maxAngle: '236.25'
},
{
directions: '西西南',
minAngle: '236.26',
maxAngle: '258.75'
},
{
directions: '西',
minAngle: '258.76',
maxAngle: '281.25'
},
{
directions: '西西北',
minAngle: '281.26',
maxAngle: '303.75'
},
{
directions: '西北',
minAngle: '303.76',
maxAngle: '326.25'
},
{
directions: '北西北',
minAngle: '326.26',
maxAngle: '348.75'
}
]
for (let i = 0; i < arr.length; i++) {
if (+angle >= +arr[i].minAngle && +angle <= +arr[i].maxAngle) {
return arr[i].directions + '风'
}
}
return '静风'
}
}
}
</script>
<style lang="scss" scoped>
#main4{
width: 340px;
height: 380px;
}
#main5{
width: 340px;
height: 380px;
}
#main6{
width: 340px;
height: 380px;
}
</style>

View File

@ -25,7 +25,7 @@
<info v-if="!gangkouActive"/>
<gangkou-index v-if="gangkouActive === '00003' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && !CORP_INFO_ID" :area="area"/>
<fengongsi-index
v-if="gangkouActive && gangkouActive !== '00004' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive"
/>
@ -34,8 +34,12 @@
:corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive"
/>
<czksIndex
v-if="gangkouActive && gangkouActive === '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive"/>
<menjin
v-if="gangkouActive && gangkouActive !== '00004' && bottomOptionsIndex === 0"
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00005' && gangkouActive !== '00002' && bottomOptionsIndex === 0"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
@ -44,6 +48,21 @@
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<menjin-czks
v-if="gangkouActive && gangkouActive === '00002' && bottomOptionsIndex === 0"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<menjin-cmt
v-if="gangkouActive && gangkouActive === '00005' && bottomOptionsIndex === 0"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<zhongdian
v-if="gangkouActive && gangkouActive === '00002' && bottomOptionsIndex === 6"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<xiaofang
v-if="gangkouActive && gangkouActive !== '00004' && bottomOptionsIndex === 1"
:corp-info-id="CORP_INFO_ID"
@ -65,7 +84,7 @@
:area="area"
:gangkou="gangkouActive"/>
<renyuan
v-if="gangkouActive && gangkouActive !== '00004' && bottomOptionsIndex === 4"
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && gangkouActive !== '00005' && bottomOptionsIndex === 4"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
@ -74,8 +93,18 @@
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<renyuanCzks
v-if="gangkouActive && gangkouActive === '00002' && bottomOptionsIndex === 4"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<renyuanCmt
v-if="gangkouActive && gangkouActive === '00005' && bottomOptionsIndex === 4"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
<bianjieruqin
v-if="gangkouActive && gangkouActive !== '00004' && bottomOptionsIndex === 6"
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && bottomOptionsIndex === 6"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
@ -85,7 +114,7 @@
:area="area"
:gangkou="gangkouActive"/>
<zhongda
v-if="gangkouActive && bottomOptionsIndex === 8"
v-if="gangkouActive && bottomOptionsIndex === 8 && gangkouActive !== '00002'"
:corp-info-id="CORP_INFO_ID"
:area="area"
:gangkou="gangkouActive"/>
@ -204,6 +233,7 @@
:corp-info-id="dialog.corpInfoId"
:gangkou="gangkouActive"
:infoname="dialog.infoname"
:name="dialog.name"
/>
</div>
</template>
@ -217,8 +247,13 @@ import { requestFN } from '@/utils/request'
import gangkouIndex from './components/gangkou_index.vue'
import fengongsiIndex from './components/fengongsi_index.vue'
import caofeidianIndex from './components/caofeidian_index.vue'
import czksIndex from './components/czks_index.vue'
import menjinCzks from './components/menjinCzks.vue'
import renyuanCzks from './components/renyuanCzks.vue'
import renyuanCmt from './components/renyuanCmt.vue'
import menjin from './components/menjin.vue'
import menjinCfd from './components/menjinCfd.vue'
import menjinCmt from './components/menjinCmt.vue'
import xiaofang from './components/xiaofang.vue'
import anquan from './components/anquan.vue'
import anquanCfd from './components/anquanCfd.vue'
@ -236,18 +271,17 @@ import cloneDeep from 'lodash/cloneDeep'
import fullScreenMixins from '@/assets/mixins/fullScreen'
import { animate } from 'motion'
import loadMapBoxCfd from './js/mapboxCfd'
import loadMapBoxCzks from './js/mapboxCzks'
import loadMapBox from './js/mapbox'
import AnquanCfd from './components/anquanCfd'
import mqtt from 'mqtt'
import img4_0_1 from '../../assets/map/gangkou_index/point/icon27.png'
import img4_0_2 from '../../assets/map/gangkou_index/point/icon28.png'
import img4_0_3 from '../../assets/map/gangkou_index/point/icon29.png'
import img4_0 from '../../assets/map/gangkou_index/point/ico21.png'
let viewer = null
let drag = null
let ry_drag = null
var tiandituTk = 'e8a16137fd226a62a23cc7ba5c9c78ce'
var subdomains = ['0', '1', '2', '3', '4', '5', '6', '7']
//
let czksPerLocArr = []
const Cesium = window.Cesium
Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJkOWQ0MGYwMy0yODUwLTQ1YzktOGM4OC02MTMwY2UyZjNlMzQiLCJpZCI6MTY0NTUwLCJpYXQiOjE2OTM4OTU1Mjd9.1cC0sSzyj79LZv0ILNCcl0Mabw6hl8TNngFNFr7H8f4'
// ys使
@ -261,6 +295,10 @@ const iframeObj = null
export default {
components: {
AnquanCfd,
czksIndex,
menjinCzks,
renyuanCzks,
renyuanCmt,
// navigation,
gangkouIndex,
fengongsiIndex,
@ -268,6 +306,7 @@ export default {
layoutMenu,
menjin,
menjinCfd,
menjinCmt,
xiaofang,
anquan,
qixiang,
@ -282,6 +321,8 @@ export default {
mixins: [fullScreenMixins],
data() {
return {
//
czkswebsocket: {},
initCenter: { longitude: 119.6486945226887, latitude: 39.93555616569192, height: 900000 },
parentCenter: {},
center: { longitude: 119.6486945226887, latitude: 39.93555616569192, height: 900000 },
@ -289,8 +330,8 @@ export default {
{
'id': '00002',
'data_id': '00002',
'MAP_POINT_NAME': '沧州矿石港务',
'name': '沧州矿石港务',
'MAP_POINT_NAME': '沧州黄骅港矿石港务有限公司',
'name': '沧州黄骅港矿石港务有限公司',
'point_type': '港口',
'type': '港口',
'descr': '公司现共有10个泊位10-20万吨级设计年通过能力6400万吨。堆场面积176万平米堆存能力740万吨大型装卸设备44台套。',
@ -298,7 +339,7 @@ export default {
'x': 117.91412,
'y': 38.35902
},
CORP_INFO_ID: '016d19225e9d4ece863cce8a256a3e72'
CORP_INFO_ID: 'f8da1790b1034058ae2efefd69af3284'
},
{
'id': '00003',
@ -339,7 +380,7 @@ export default {
'x': 118.43701,
'y': 38.9866
},
CORP_INFO_ID: 'c077f4ed66844ed4a191a36fa1fc641c'
CORP_INFO_ID: '6aa255d41602497fa0f934a822820df4'
}
],
branchPoint: [],
@ -384,6 +425,7 @@ export default {
myEntityCollection: {},
poinEntity: {},
mqttPoint: {},
allOrientationPoint: [],
gangkouActive: '',
centerOptionsList: [
{ label: '秦皇岛西', AREA: '2' },
@ -818,6 +860,7 @@ export default {
carLocArr: [],
pointBoxCfd: [],
pointBox: [],
pointBoxCzks: [],
fwebsocket: {},
redList: [],
orangeList: [],
@ -1096,7 +1139,8 @@ export default {
this.initMap()
this.pointBoxCfd = loadMapBoxCfd()
this.pointBox = loadMapBox()
this.ysVideoInit()
this.pointBoxCzks = loadMapBoxCzks()
// this.ysVideoInit()
},
methods: {
getRandom() {
@ -1360,6 +1404,19 @@ export default {
this.dialog.infoname = infoname
return
}
if (this.gangkouActive === '00005' && point_id.substring(0, 1) !== '1') {
// if (this.gangkouActive === '00004' && point_type.indexOf('') !== -1 && point_id.substring(0, 1) === '0' || point_id.substring(0, 1) === '5') {
const { label, point_type, data_id, infoname,name, code } = pick.id._monitoItems.data
this.dialog.visible = true
this.dialog.title = label
this.dialog.type = point_type.substring(3) + this.gangkouActive
this.dialog.id = data_id
this.dialog.name = name
this.dialog.id = point_type.substring(3) === 'CAMERA' ? code : point_type.substring(3) === 'platcamera' ? code : data_id
this.dialog.infoname = infoname
console.log(this.dialog)
return
}
if (point_type.indexOf('标记点') !== -1) {
const { label, point_type, data_id, corpInfoId, dialog_width, infoname } = pick.id._monitoItems.data
this.dialog.visible = true
@ -1870,6 +1927,16 @@ export default {
bottomOptionsItemsClick(pindex, index, label, urlType, pointUrl, dialog_width) {
if (this.bottomOptionsList[pindex].list[index].check || this.gangkouActive === '00004' && this.cfdBottomOptionsList[pindex].list[index].check) {
//
//
if (this.gangkouActive === '00002' && urlType === 'peoplePosition') {
if (this.czkswebsocket && this.czkswebsocket.url) {
this.czkswebsocket.close()
this.czkswebsocket = {}
czksPerLocArr = []
this.clearMqttPoint('czksperson')
}
}
// websocket 使
if (this.gangkouActive === '00004' && urlType === 'peoplePosition') {
// if (this.fwebsocket) {
@ -1906,12 +1973,16 @@ export default {
}
})
} else {
//
this.bottomOptionsList[pindex].list[index].check = true
if (this.gangkouActive === '00004') {
this.cfdBottomOptionsList[pindex].list[index].check = true
this.bottomOptionsList[pindex].list[index].check = false
}
if (this.gangkouActive === '00002' && urlType === 'peoplePosition') {
this.czksPeoplePosition()
return
}
if (this.gangkouActive === '00003' && this.CORP_INFO_ID === '035958e685cf4850bc40151c5e0617a6' && urlType === 'peoplePosition') {
!this.connecting ? this.createConnection(this.CORP_INFO_ID) : this.doSubscribe()
} else {
@ -1958,6 +2029,11 @@ export default {
} else {
point.infoname = varList[i].NAME
}
//
if (this.gangkouActive === '00005') {
point.name = varList[i].MAP_POINT_NAME
point.infoname = varList[i].MAP_POINT_NAME
}
points.push(point)
}
if (this.gangkouActive === '00004' && urlType === 'carPosition') {
@ -2187,6 +2263,81 @@ export default {
this.connecting = false
this.subscribeSuccess = false
},
//
czksPeoplePosition() {
const _this = this
if (window.WebSocket) {
// 线
// const wsUrl = 'ws://172.16.130.86/gateway-service/websocket/ws'
//
const wsUrl = 'ws://221.195.199.13:7811/ws'
this.czkswebsocket = new WebSocket(encodeURI(wsUrl + '/XR_' + new Date().getTime() + '_98')) // oladressmain.jsp
console.info(wsUrl + '/XR_' + new Date().getTime() + '_98')
this.czkswebsocket.onopen = () => {
setInterval(() => {
if (this.czkswebsocket.readyState === 1) {
this.czkswebsocket.send('ok')
}
}, 10000)
this.czkswebsocket.send('ok')
// console.info(this.fwebsocket.readyState + '-----------------------------')
console.info('链接成功')
}
this.czkswebsocket.onerror = function() {
console.info('连接失败')
//
}
this.czkswebsocket.onclose = function() {
console.info('onclose')
}
this.czkswebsocket.onmessage = function(message) {
console.info('沧州矿石人员定位接收消息')
const mockData = JSON.parse(message.data)
if (mockData.msgType === 'currentPersonLocation') {
//
const czksPerLoc = czksPerLocArr.filter(item => {
const index = mockData.data.findIndex(item1 => {
return item.id.toString() === item1.cardId.toString()
})
return index !== -1
})
//
for (const item of mockData.data) {
const index = czksPerLoc.findIndex(item1 => {
return item1.id.toString() === item.cardId.toString()
})
_this.isPointWithinTheArea(_this.pointBox, { x: item.longitude, y: item.latitude })
if (index !== -1) {
czksPerLoc[index].x = item.longitude
czksPerLoc[index].y = item.latitude
czksPerLoc[index].icon_type = 'img4_0_2'
ry_drag.getPosition(czksPerLoc[index])
} else {
const perLoc = {
id: item.cardId,
name: item.realName,
idNumber: item.idNumber,
x: item.longitude,
y: item.latitude,
icon_type: 'img4_0_1',
infoname: item.realName,
personPhoto: item.personPhoto,
data_id: item.cardId + '',
point_type: 'peoplePositionCzks',
label: item.realName
}
czksPerLoc.push(perLoc)
ry_drag.addEntity(perLoc)
var qianzhui = 'czksperson'
_this.mqttPoint[qianzhui + item.cardId] = item.cardId
}
}
// ninePerLocArr
czksPerLocArr = czksPerLoc
}
}
}
},
//
createConnection(CORP_INFO_ID) {
try {

View File

@ -68,9 +68,11 @@ export { imgMap }
import './PolylineTrailLinkMaterialProperty'
import loadMapBox from './mapbox'
import loadMapBoxCfd from './mapboxCfd'
import loadMapBoxCzks from './mapboxCzks'
const polygonMap = {
'00003': loadMapBox,
'00002': loadMapBoxCzks,
'00004': loadMapBoxCfd
}

File diff suppressed because it is too large Load Diff

View File

@ -531,8 +531,8 @@ export default {
this.getDict()
await this.getDictTreeData()
await this.getDictInspectDept()
await this.handleEdit(this.$parent.INSPECTION_ID)
await this.getHiddenReginTreeList()
this.handleEdit(this.$parent.INSPECTION_ID)
loading.close()
},
mounted() {
@ -547,36 +547,39 @@ export default {
//
handleEdit(ID) {
requestFN(
'/safetyenvironmental/goEdit',
{
INSPECTION_ID: ID
}
).then((data) => {
this.form = Object.assign(this.form, data.pd) // copy obj
if (this.form.INSPECTION_TYPE_OTHER) {
this.switchInspectionType = 'value'
} else {
this.switchInspectionType = 'select'
}
for (let i = 0; i < this.form.inspectorList.length; i++) {
this.INSPECTOR_List.push([])
this.getInspectorList(this.form.inspectorList[i].INSPECTION_DEPARTMENT_ID, i)
}
for (let i = 0; i < this.form.hiddenList.length; i++) {
const formData = { fileHdImgList: [], fileVideoList: [] }
this.hdFile.push(formData)
}
this.$nextTick(() => { // 使
if (this.switchInspectionType === 'select') {
this.$refs['tree_InspectionType'].handleNodeClick({ id: this.form.INSPECTION_TYPE })
return new Promise((resolve) => {
requestFN(
'/safetyenvironmental/goEdit',
{
INSPECTION_ID: ID
}
this.$refs['deptTree_Inspected'].handleNodeClick({ id: this.form.INSPECTED_DEPARTMENT_ID })
this.getUserList(this.form.INSPECTED_DEPARTMENT_ID)
console.info(this.form)
).then((data) => {
this.form = Object.assign(this.form, data.pd) // copy obj
if (this.form.INSPECTION_TYPE_OTHER) {
this.switchInspectionType = 'value'
} else {
this.switchInspectionType = 'select'
}
for (let i = 0; i < this.form.inspectorList.length; i++) {
this.INSPECTOR_List.push([])
this.getInspectorList(this.form.inspectorList[i].INSPECTION_DEPARTMENT_ID, i)
}
for (let i = 0; i < this.form.hiddenList.length; i++) {
const formData = { fileHdImgList: [], fileVideoList: [] }
this.hdFile.push(formData)
}
this.$nextTick(() => { // 使
if (this.switchInspectionType === 'select') {
this.$refs['tree_InspectionType'].handleNodeClick({ id: this.form.INSPECTION_TYPE })
}
this.$refs['deptTree_Inspected'].handleNodeClick({ id: this.form.INSPECTED_DEPARTMENT_ID })
this.getUserList(this.form.INSPECTED_DEPARTMENT_ID)
console.info(this.form)
resolve()
})
}).catch((e) => {
this.listLoading = false
})
}).catch((e) => {
this.listLoading = false
})
},
changeSwitch(type) {
@ -1080,8 +1083,11 @@ export default {
return new Promise((resolve) => {
this.treeLoading = true
requestFN(
'/hiddenRegion/listAll',
{}
'/hiddenRegion/gerRegionList',
{
parentId: '0',
DEPARTMENT_ID: this.form.INSPECTED_DEPARTMENT_ID
}
).then((data) => {
this.treeLoading = false
this.hiddenPartList = JSON.parse(data.zTreeNodes)

View File

@ -3,7 +3,10 @@
<el-form ref="form" :rules="rules" :model="form" label-width="120px">
<el-row>
<el-col :span="24">
<el-form-item label="承诺书名称" prop="PROMISE_NAME">
<el-form-item v-if="form.TYPE!='1'" label="承诺书名称" prop="PROMISE_NAME">
<el-input v-model="form.PROMISE_NAME" placeholder="请输入"/>
</el-form-item>
<el-form-item v-if="form.TYPE =='1'" label="责任状名称" prop="PROMISE_NAME">
<el-input v-model="form.PROMISE_NAME" placeholder="请输入"/>
</el-form-item>
</el-col>
@ -43,9 +46,10 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-divider content-position="left">承诺人</el-divider>
<el-divider v-if="form.TYPE!='1'" content-position="left"></el-divider>
<el-divider v-if="form.TYPE=='1'" content-position="left"></el-divider>
</el-col>
<el-col v-if="form.DISTRIBUTIONOBJECT" :span="24">
<el-col v-if="form.DISTRIBUTIONOBJECT&&form.TYPE!='1'" :span="24">
<el-form-item style="text-align: right">
<el-button type="primary" @click="addPeople"></el-button>
</el-form-item>
@ -137,7 +141,10 @@
}"
>
<div style="display:flex;justify-content: space-between;align-items: flex-start;">
<el-select v-model="item.USER_ID" multiple style="width: calc(100% - 60px);">
<el-select v-if="form.TYPE!='1'" v-model="item.USER_ID" multiple style="width: calc(100% - 60px);">
<el-option v-for="item in item.userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
<el-select v-if="form.TYPE=='1'" v-model="item.USER_ID" style="width: calc(100% - 60px);">
<el-option v-for="item in item.userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
<el-button v-if="index !== 0" type="danger" @click="removePeople(index)"></el-button>
@ -148,7 +155,8 @@
</el-row>
<el-row>
<el-col :span="24">
<el-divider content-position="left">被承诺人</el-divider>
<el-divider v-if="form.TYPE!='1'" content-position="left"></el-divider>
<el-divider v-if="form.TYPE=='1'" content-position="left"></el-divider>
</el-col>
<!-- <el-col :span="24">-->
<!-- <el-form-item style="text-align: right">-->
@ -188,7 +196,10 @@
}"
>
<div style="display:flex;justify-content: space-between;align-items: flex-start;">
<el-select v-model="item.USER_ID" :multiple-limit="1" multiple style="width: 100%;">
<el-select v-if="form.TYPE!='1'" v-model="item.USER_ID" :multiple-limit="1" multiple style="width: 100%;">
<el-option v-for="item in item.userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
<el-select v-if="form.TYPE=='1'" v-model="item.USER_ID" style="width: 100%;">
<el-option v-for="item in item.userList" :key="item.USER_ID" :label="item.NAME" :value="item.USER_ID"/>
</el-select>
<!-- <el-button v-if="index !== 0" type="danger" @click="removeCoverPeople(index)"></el-button>-->
@ -649,6 +660,21 @@ export default {
this.form.TYPE = row.TYPE
this.dialog.visible = false
this.isSelectTemplate = true
if (this.form.TYPE == '1') {
this.form.people = [
{
treeData: [],
postList: [],
userList: [],
CORPINFO_ID: '',
DEPARTMENT_ID: null,
POST_ID: '',
USER_ID: [],
id: Math.random()
}
]
this.$forceUpdate()
}
}).catch((e) => {
})
},

View File

@ -86,7 +86,8 @@
<el-table-column prop="POSTNAME" label="涉及岗位" />
<el-table-column label="承诺人数/涉及人数">
<template slot-scope="{row}">
{{ row.ISSIGN }}/{{ row.PEOPLENUM_INVOLVED }}
<span v-if="row.TYPE!='1'">{{ row.ISSIGN }}/{{ row.PEOPLENUM_INVOLVED }}</span>
<span v-if="row.TYPE=='1'">{{ row.ISSIGN }}/2</span>
</template>
</el-table-column>
<el-table-column label="状态" width="80">

View File

@ -0,0 +1,301 @@
<template>
<div class="app-container">
<div class="filter-container">
<el-input v-model="KEYWORDS" placeholder="搜索" class="filter-item" style="width: 200px;"/>
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
</div>
<el-table
v-loading="listLoading"
ref="multipleTable"
:data="varList"
:row-key="getRowKey"
: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="MENU_NAME" label="菜单名称" />
<el-table-column prop="MENU_URL" label="菜单地址" />
<el-table-column prop="PARENT_ID" label="父节点id" />
<el-table-column prop="MENU_ORDER" label="排序" />
<el-table-column prop="CORPINFO_ID" label="企业id" />
<el-table-column prop="IS_DELETE" label="删除状态" />
<el-table-column label="操作" align="center" width="200">
<template slot-scope="{row}">
<el-button v-show="edit" type="primary" icon="el-icon-edit" size="mini" @click="handleEdit(row.APPMENUS_ID)"></el-button>
<el-button v-show="del" type="danger" icon="el-icon-delete" size="mini" @click="handleDelete(row.APPMENUS_ID)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="page-btn-group">
<div>
<el-button v-show="add" type="primary" icon="el-icon-plus" @click="handleAdd"></el-button>
<el-button v-show="del" type="danger" icon="el-icon-delete" plain @click="batchDel"></el-button>
</div>
<pagination :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.limit" @pagination="getList" />
</div>
<el-dialog :visible.sync="dialogFormEdit" :title="dialogType==='edit'?'修改':'新增'" width="600px">
<el-form ref="form" :rules="rules" :model="form" label-width="110px" style="width: 500px;">
<el-form-item label="菜单名称" prop="MENU_NAME">
<el-input ref="MENU_NAME" id="MENU_NAME" v-model="form.MENU_NAME" maxlength="255" placeholder="这里输入菜单名称..." title="菜单名称"/>
</el-form-item>
<el-form-item label="菜单地址" prop="MENU_URL">
<el-input ref="MENU_URL" id="MENU_URL" v-model="form.MENU_URL" maxlength="255" placeholder="这里输入菜单地址..." title="菜单地址"/>
</el-form-item>
<el-form-item label="父节点id" prop="PARENT_ID">
<el-input ref="PARENT_ID" id="PARENT_ID" v-model="form.PARENT_ID" maxlength="255" placeholder="这里输入父节点id..." title="父节点id"/>
</el-form-item>
<el-form-item label="排序" prop="MENU_ORDER">
<el-input ref="MENU_ORDER" id="MENU_ORDER" v-model.number="form.MENU_ORDER" maxlength="11" placeholder="这里输入排序..." title="排序"/>
</el-form-item>
<el-form-item label="企业id" prop="CORPINFO_ID">
<el-input ref="CORPINFO_ID" id="CORPINFO_ID" v-model="form.CORPINFO_ID" maxlength="255" placeholder="这里输入企业id..." title="企业id"/>
</el-form-item>
<el-form-item label="删除状态" prop="IS_DELETE">
<el-input ref="IS_DELETE" id="IS_DELETE" v-model.number="form.IS_DELETE" maxlength="2" placeholder="这里输入删除状态..." title="删除状态"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormEdit = 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,
add: false,
del: false,
edit: false,
listQuery: {
page: 1,
limit: 10
},
total: 0,
KEYWORDS: '',
varList: [],
pd: [],
form: {
MENU_NAME: '',//
MENU_URL: '',//
PARENT_ID: '',//id
MENU_ORDER: '',//
CORPINFO_ID: '',//id
IS_DELETE: '',//
},
multipleSelectionAll: [], //
multipleSelection: [], //
dialogFormEdit: false,
dialogType: 'add',
rules: {
MENU_NAME: [{ required: true, message: '菜单名称不能为空', trigger: 'blur' }],
MENU_URL: [{ required: true, message: '菜单地址不能为空', trigger: 'blur' }],
PARENT_ID: [{ required: true, message: '父节点id不能为空', trigger: 'blur' }],
MENU_ORDER: [
{ required: true, message: '排序不能为空', trigger: 'change' },
{ type: 'number', message: '排序必须为数字' }
],
CORPINFO_ID: [{ required: true, message: '企业id不能为空', trigger: 'blur' }],
IS_DELETE: [
{ required: true, message: '删除状态不能为空', trigger: 'change' },
{ type: 'number', message: '删除状态必须为数字' }
],
}
}
},
created() {
this.getList(this.ROLE_ID)
},
methods: {
getRowKey(row) {
return row.APPMENUS_ID
},
//
getQuery() {
this.$refs.multipleTable.clearSelection()
this.getList()
},
//
getList() {
this.listLoading = true
requestFN(
'/appmenus/list?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{
KEYWORDS: this.KEYWORDS
}
).then((data) => {
this.listLoading = false
this.varList = data.varList
this.total = data.page.totalResult
this.hasButton()
this.pd = data.pd
}).catch((e) => {
this.listLoading = false
})
},
//
handleAdd() {
this.dialogType = 'add'
this.resetForm()
this.getDict()
this.dialogFormEdit = true
},
//
handleEdit(ID) {
this.getDict()
this.dialogType = 'edit'
requestFN(
'/appmenus/goEdit',
{
APPMENUS_ID:ID
}
).then((data) => {
this.form = Object.assign({}, data.pd) // copy obj
}).catch((e) => {
this.listLoading = false
})
this.dialogFormEdit = true
},
//
confirm() {
this.$refs.form.validate(valid => {
if (valid) {
this.listLoading = true
requestFN(
'/appmenus/' + this.dialogType,
this.form
).then((data) => {
this.listLoading = false
this.dialogFormEdit = false
this.getList()
}).catch((e) => {
this.listLoading = false
})
} else {
return false
}
})
},
handleDelete(id) {
this.$confirm('确定要删除吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/appmenus/delete',
{
APPMENUS_ID: id
}
).then(() => {
this.$message({
message: '删除成功',
type: 'success'
})
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.APPMENUS_ID
}).join(',')
this.$confirm('确定要删除选中的数据吗?', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.listLoading = true
requestFN(
'/appmenus/deleteAll',
{
DATA_IDS: ids
}
).then(() => {
this.$message({
message: '删除成功',
type: 'success'
})
this.listLoading = false
this.varList = []
this.listQuery.page = 1
this.$refs.multipleTable.clearSelection()
this.getList()
}).catch((e) => {
this.listLoading = false
})
}).catch(() => {
})
},
//
hasButton: function() {
var keys = 'appmenus:add,appmenus:del,appmenus:edit,toExcel';
requestFN(
'/head/hasButton',
{
keys: keys
}
).then((data) => {
this.add = data.appmenusfhadminadd; //
this.del = data.appmenusfhadmindel; //
this.edit = data.appmenusfhadminedit; //
}).catch((e) => {
this.listLoading = false
})
},
//
getDict: function (){
},
resetForm() {
this.form = {
MENU_NAME: '',//
MENU_URL: '',//
PARENT_ID: '',//id
MENU_ORDER: '',//
CORPINFO_ID: '',//id
IS_DELETE: '',//
}
}
}
}
</script>

View File

@ -1,6 +1,7 @@
// eslint-disable-next-line no-unused-vars
const config = {
weburl: 'http://192.168.0.45:8082/', // 前台地址
httpurl: 'http://192.168.151.56:8092/', // 后台地址
httpurl: 'http://192.168.151.43:8092/', // 后台地址
qyurl: 'http://192.168.0.45:8080/', // 企业前台
fileUrl: 'http://192.168.192.201:8991/file/', // 附件服务器地址
publicKey: 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC2zCyUYSD0pNrbtaYdvGfHfWoRV+fo/2N9O2PLLz/jZvMkigkq4eAq4JO+Ek0wDHI9WxP6iTSLYCHhIOs9CQTPvyldJFm8riZtQZlBTD8Plkb3rjrgwTqbBi3w3+HKYdkSvGFXJIdSOPbpXnj5BzN8vlVaybs24R/vpUzG9178lwIDAQAB',