Merge remote-tracking branch 'origin/dev-2024年1月8日' into dev-2024年1月8日
commit
c410e4302a
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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="">
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
|
@ -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
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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,
|
||||
|
|
|
@ -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 = []
|
||||
// 刻度使用柱状图模拟,短设置3,长的设置5;构造一个数据
|
||||
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)
|
||||
// 因为柱状初始化为0,温度存在负值,所以,原本的0-100,改为0-130,0-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) {
|
||||
// 因为柱状初始化为0,温度存在负值,所以,原本的0-100,改为0-130,0-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) {
|
||||
// 因为柱状初始化为0,温度存在负值,所以,原本的0-100,改为0-130,0-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>
|
|
@ -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')) // oladress在main.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 {
|
||||
|
|
|
@ -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
|
@ -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)
|
||||
|
|
|
@ -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) => {
|
||||
})
|
||||
},
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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 + '¤tPage=' + 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>
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue