大更新
This commit is contained in:
503
package-lock.json
generated
503
package-lock.json
generated
@@ -1355,6 +1355,47 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz",
|
||||||
"integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ=="
|
"integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ=="
|
||||||
},
|
},
|
||||||
|
"@fast-csv/format": {
|
||||||
|
"version": "4.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz",
|
||||||
|
"integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==",
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "^14.0.1",
|
||||||
|
"lodash.escaperegexp": "^4.1.2",
|
||||||
|
"lodash.isboolean": "^3.0.3",
|
||||||
|
"lodash.isequal": "^4.5.0",
|
||||||
|
"lodash.isfunction": "^3.0.9",
|
||||||
|
"lodash.isnil": "^4.0.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": {
|
||||||
|
"version": "14.17.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.29.tgz",
|
||||||
|
"integrity": "sha512-sd4CHI9eTJXTH2vF3RGtGkqvWRwhsSSUFsXD4oG38GZzSZ0tNPbWikd2AbOAcKxCXhOg57fL8FPxjpfSzb2pIQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@fast-csv/parse": {
|
||||||
|
"version": "4.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz",
|
||||||
|
"integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==",
|
||||||
|
"requires": {
|
||||||
|
"@types/node": "^14.0.1",
|
||||||
|
"lodash.escaperegexp": "^4.1.2",
|
||||||
|
"lodash.groupby": "^4.6.0",
|
||||||
|
"lodash.isfunction": "^3.0.9",
|
||||||
|
"lodash.isnil": "^4.0.0",
|
||||||
|
"lodash.isundefined": "^3.0.1",
|
||||||
|
"lodash.uniq": "^4.5.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": {
|
||||||
|
"version": "14.17.29",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.29.tgz",
|
||||||
|
"integrity": "sha512-sd4CHI9eTJXTH2vF3RGtGkqvWRwhsSSUFsXD4oG38GZzSZ0tNPbWikd2AbOAcKxCXhOg57fL8FPxjpfSzb2pIQ=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"@hapi/address": {
|
"@hapi/address": {
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz",
|
||||||
@@ -5836,6 +5877,54 @@
|
|||||||
"integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
|
"integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"archiver": {
|
||||||
|
"version": "5.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz",
|
||||||
|
"integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==",
|
||||||
|
"requires": {
|
||||||
|
"archiver-utils": "^2.1.0",
|
||||||
|
"async": "^3.2.0",
|
||||||
|
"buffer-crc32": "^0.2.1",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"readdir-glob": "^1.0.0",
|
||||||
|
"tar-stream": "^2.2.0",
|
||||||
|
"zip-stream": "^4.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"async": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg=="
|
||||||
|
},
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"archiver-utils": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
|
||||||
|
"requires": {
|
||||||
|
"glob": "^7.1.4",
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"lazystream": "^1.0.0",
|
||||||
|
"lodash.defaults": "^4.2.0",
|
||||||
|
"lodash.difference": "^4.5.0",
|
||||||
|
"lodash.flatten": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.union": "^4.6.0",
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"readable-stream": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"argparse": {
|
"argparse": {
|
||||||
"version": "1.0.10",
|
"version": "1.0.10",
|
||||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
|
||||||
@@ -6142,8 +6231,7 @@
|
|||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"base": {
|
"base": {
|
||||||
"version": "0.11.2",
|
"version": "0.11.2",
|
||||||
@@ -6203,8 +6291,7 @@
|
|||||||
"base64-js": {
|
"base64-js": {
|
||||||
"version": "1.5.1",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
|
||||||
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
|
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"batch": {
|
"batch": {
|
||||||
"version": "0.6.1",
|
"version": "0.6.1",
|
||||||
@@ -6233,17 +6320,62 @@
|
|||||||
"tryer": "^1.0.1"
|
"tryer": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"big-integer": {
|
||||||
|
"version": "1.6.50",
|
||||||
|
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.50.tgz",
|
||||||
|
"integrity": "sha512-+O2uoQWFRo8ysZNo/rjtri2jIwjr3XfeAgRjAUADRqGG+ZITvyn8J1kvXLTaKVr3hhGXk+f23tKfdzmklVM9vQ=="
|
||||||
|
},
|
||||||
"big.js": {
|
"big.js": {
|
||||||
"version": "5.2.2",
|
"version": "5.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
|
||||||
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"binary": {
|
||||||
|
"version": "0.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
|
||||||
|
"integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=",
|
||||||
|
"requires": {
|
||||||
|
"buffers": "~0.1.1",
|
||||||
|
"chainsaw": "~0.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"binary-extensions": {
|
"binary-extensions": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
|
||||||
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
|
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
|
||||||
},
|
},
|
||||||
|
"bl": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/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.npmjs.org/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.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"bluebird": {
|
"bluebird": {
|
||||||
"version": "3.7.2",
|
"version": "3.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
|
||||||
@@ -6329,7 +6461,6 @@
|
|||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
@@ -6486,6 +6617,11 @@
|
|||||||
"isarray": "^1.0.0"
|
"isarray": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"buffer-crc32": {
|
||||||
|
"version": "0.2.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
|
||||||
|
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
|
||||||
|
},
|
||||||
"buffer-from": {
|
"buffer-from": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
|
||||||
@@ -6497,6 +6633,11 @@
|
|||||||
"integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
|
"integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"buffer-indexof-polyfill": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
|
||||||
|
},
|
||||||
"buffer-json": {
|
"buffer-json": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/buffer-json/-/buffer-json-2.0.0.tgz",
|
||||||
@@ -6509,6 +6650,11 @@
|
|||||||
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
"integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"buffers": {
|
||||||
|
"version": "0.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
||||||
|
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
|
||||||
|
},
|
||||||
"builtin-status-codes": {
|
"builtin-status-codes": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
|
||||||
@@ -6679,6 +6825,14 @@
|
|||||||
"printj": "~1.1.2"
|
"printj": "~1.1.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"chainsaw": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz",
|
||||||
|
"integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=",
|
||||||
|
"requires": {
|
||||||
|
"traverse": ">=0.3.0 <0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "2.4.2",
|
"version": "2.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
|
||||||
@@ -7071,6 +7225,29 @@
|
|||||||
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
|
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"compress-commons": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==",
|
||||||
|
"requires": {
|
||||||
|
"buffer-crc32": "^0.2.13",
|
||||||
|
"crc32-stream": "^4.0.2",
|
||||||
|
"normalize-path": "^3.0.0",
|
||||||
|
"readable-stream": "^3.6.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"compressible": {
|
"compressible": {
|
||||||
"version": "2.0.18",
|
"version": "2.0.18",
|
||||||
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
|
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
|
||||||
@@ -7240,8 +7417,7 @@
|
|||||||
"concat-map": {
|
"concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"concat-stream": {
|
"concat-stream": {
|
||||||
"version": "1.6.2",
|
"version": "1.6.2",
|
||||||
@@ -7581,6 +7757,27 @@
|
|||||||
"printj": "~1.1.0"
|
"printj": "~1.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"crc32-stream": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==",
|
||||||
|
"requires": {
|
||||||
|
"crc-32": "^1.2.0",
|
||||||
|
"readable-stream": "^3.4.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"create-ecdh": {
|
"create-ecdh": {
|
||||||
"version": "4.0.4",
|
"version": "4.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
|
||||||
@@ -8092,6 +8289,11 @@
|
|||||||
"assert-plus": "^1.0.0"
|
"assert-plus": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dayjs": {
|
||||||
|
"version": "1.10.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz",
|
||||||
|
"integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig=="
|
||||||
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "4.3.2",
|
"version": "4.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
|
||||||
@@ -8567,6 +8769,14 @@
|
|||||||
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
|
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"duplexer2": {
|
||||||
|
"version": "0.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
||||||
|
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "^2.0.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"duplexify": {
|
"duplexify": {
|
||||||
"version": "3.7.1",
|
"version": "3.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
|
||||||
@@ -8682,7 +8892,6 @@
|
|||||||
"version": "1.4.4",
|
"version": "1.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
|
||||||
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"once": "^1.4.0"
|
"once": "^1.4.0"
|
||||||
}
|
}
|
||||||
@@ -9139,6 +9348,55 @@
|
|||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"exceljs": {
|
||||||
|
"version": "4.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/exceljs/-/exceljs-4.3.0.tgz",
|
||||||
|
"integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==",
|
||||||
|
"requires": {
|
||||||
|
"archiver": "^5.0.0",
|
||||||
|
"dayjs": "^1.8.34",
|
||||||
|
"fast-csv": "^4.3.1",
|
||||||
|
"jszip": "^3.5.0",
|
||||||
|
"readable-stream": "^3.6.0",
|
||||||
|
"saxes": "^5.0.1",
|
||||||
|
"tmp": "^0.2.0",
|
||||||
|
"unzipper": "^0.10.11",
|
||||||
|
"uuid": "^8.3.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rimraf": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||||
|
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||||
|
"requires": {
|
||||||
|
"glob": "^7.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tmp": {
|
||||||
|
"version": "0.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
|
||||||
|
"integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
|
||||||
|
"requires": {
|
||||||
|
"rimraf": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"uuid": {
|
||||||
|
"version": "8.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||||
|
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"execa": {
|
"execa": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
|
||||||
@@ -9413,6 +9671,15 @@
|
|||||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"fast-csv": {
|
||||||
|
"version": "4.3.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz",
|
||||||
|
"integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==",
|
||||||
|
"requires": {
|
||||||
|
"@fast-csv/format": "4.3.5",
|
||||||
|
"@fast-csv/parse": "4.3.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"fast-deep-equal": {
|
"fast-deep-equal": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
@@ -9706,6 +9973,11 @@
|
|||||||
"readable-stream": "^2.0.0"
|
"readable-stream": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"fs-constants": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
|
||||||
|
},
|
||||||
"fs-extra": {
|
"fs-extra": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz",
|
||||||
@@ -9740,8 +10012,7 @@
|
|||||||
"fs.realpath": {
|
"fs.realpath": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
|
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"fsevents": {
|
"fsevents": {
|
||||||
"version": "2.3.2",
|
"version": "2.3.2",
|
||||||
@@ -9749,6 +10020,17 @@
|
|||||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"fstream": {
|
||||||
|
"version": "1.0.12",
|
||||||
|
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
|
||||||
|
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
|
||||||
|
"requires": {
|
||||||
|
"graceful-fs": "^4.1.2",
|
||||||
|
"inherits": "~2.0.0",
|
||||||
|
"mkdirp": ">=0.5 0",
|
||||||
|
"rimraf": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"function-bind": {
|
"function-bind": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
|
||||||
@@ -9895,7 +10177,6 @@
|
|||||||
"version": "7.1.7",
|
"version": "7.1.7",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
|
||||||
"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
|
"integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"fs.realpath": "^1.0.0",
|
"fs.realpath": "^1.0.0",
|
||||||
"inflight": "^1.0.4",
|
"inflight": "^1.0.4",
|
||||||
@@ -10491,6 +10772,11 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"immediate": {
|
||||||
|
"version": "3.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
||||||
|
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
|
||||||
|
},
|
||||||
"import-cwd": {
|
"import-cwd": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
|
||||||
@@ -10602,7 +10888,6 @@
|
|||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"once": "^1.3.0",
|
"once": "^1.3.0",
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
@@ -11256,6 +11541,17 @@
|
|||||||
"verror": "1.10.0"
|
"verror": "1.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jszip": {
|
||||||
|
"version": "3.7.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
|
||||||
|
"integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
|
||||||
|
"requires": {
|
||||||
|
"lie": "~3.3.0",
|
||||||
|
"pako": "~1.0.2",
|
||||||
|
"readable-stream": "~2.3.6",
|
||||||
|
"set-immediate-shim": "~1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"kdbush": {
|
"kdbush": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
|
||||||
@@ -11298,6 +11594,14 @@
|
|||||||
"launch-editor": "^2.2.1"
|
"launch-editor": "^2.2.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lazystream": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
|
||||||
|
"requires": {
|
||||||
|
"readable-stream": "^2.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"less": {
|
"less": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/less/-/less-4.1.1.tgz",
|
||||||
@@ -11394,6 +11698,14 @@
|
|||||||
"type-check": "~0.3.2"
|
"type-check": "~0.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"lie": {
|
||||||
|
"version": "3.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
|
||||||
|
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
|
||||||
|
"requires": {
|
||||||
|
"immediate": "~3.0.5"
|
||||||
|
}
|
||||||
|
},
|
||||||
"lineclip": {
|
"lineclip": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/lineclip/-/lineclip-1.1.5.tgz",
|
||||||
@@ -11405,6 +11717,11 @@
|
|||||||
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
|
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"listenercount": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc="
|
||||||
|
},
|
||||||
"loader-fs-cache": {
|
"loader-fs-cache": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
|
||||||
@@ -11525,22 +11842,62 @@
|
|||||||
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
|
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.defaults": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
||||||
|
"integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw="
|
||||||
|
},
|
||||||
"lodash.defaultsdeep": {
|
"lodash.defaultsdeep": {
|
||||||
"version": "4.6.1",
|
"version": "4.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
|
||||||
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.difference": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
|
||||||
|
"integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw="
|
||||||
|
},
|
||||||
|
"lodash.escaperegexp": {
|
||||||
|
"version": "4.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
|
||||||
|
"integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c="
|
||||||
|
},
|
||||||
|
"lodash.flatten": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||||
|
"integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8="
|
||||||
|
},
|
||||||
|
"lodash.groupby": {
|
||||||
|
"version": "4.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz",
|
||||||
|
"integrity": "sha1-Cwih3PaDl8OXhVwyOXg4Mt90A9E="
|
||||||
|
},
|
||||||
"lodash.isarray": {
|
"lodash.isarray": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-4.0.0.tgz",
|
||||||
"integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM="
|
"integrity": "sha1-KspJayjEym1yZxUxNZDALm6jRAM="
|
||||||
},
|
},
|
||||||
|
"lodash.isboolean": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
|
||||||
|
"integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
|
||||||
|
},
|
||||||
|
"lodash.isequal": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
|
||||||
|
"integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
|
||||||
|
},
|
||||||
"lodash.isfinite": {
|
"lodash.isfinite": {
|
||||||
"version": "3.3.2",
|
"version": "3.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz",
|
||||||
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M="
|
"integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M="
|
||||||
},
|
},
|
||||||
|
"lodash.isfunction": {
|
||||||
|
"version": "3.0.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
|
||||||
|
"integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw=="
|
||||||
|
},
|
||||||
"lodash.isnil": {
|
"lodash.isnil": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz",
|
||||||
@@ -11600,6 +11957,11 @@
|
|||||||
"integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
|
"integrity": "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.union": {
|
||||||
|
"version": "4.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
|
||||||
|
"integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg="
|
||||||
|
},
|
||||||
"lodash.uniq": {
|
"lodash.uniq": {
|
||||||
"version": "4.5.0",
|
"version": "4.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
|
||||||
@@ -11924,7 +12286,6 @@
|
|||||||
"version": "3.0.4",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
@@ -12048,7 +12409,6 @@
|
|||||||
"version": "0.5.5",
|
"version": "0.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
|
||||||
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"minimist": "^1.2.5"
|
"minimist": "^1.2.5"
|
||||||
}
|
}
|
||||||
@@ -12486,7 +12846,6 @@
|
|||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
@@ -12632,8 +12991,7 @@
|
|||||||
"pako": {
|
"pako": {
|
||||||
"version": "1.0.11",
|
"version": "1.0.11",
|
||||||
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
|
||||||
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
|
"integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"parallel-transform": {
|
"parallel-transform": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
@@ -12759,8 +13117,7 @@
|
|||||||
"path-is-absolute": {
|
"path-is-absolute": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"path-is-inside": {
|
"path-is-inside": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@@ -14547,6 +14904,14 @@
|
|||||||
"util-deprecate": "~1.0.1"
|
"util-deprecate": "~1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"readdir-glob": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==",
|
||||||
|
"requires": {
|
||||||
|
"minimatch": "^3.0.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"readdirp": {
|
"readdirp": {
|
||||||
"version": "3.6.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
|
||||||
@@ -14909,7 +15274,6 @@
|
|||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"glob": "^7.1.3"
|
"glob": "^7.1.3"
|
||||||
}
|
}
|
||||||
@@ -14999,6 +15363,14 @@
|
|||||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
|
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"saxes": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
|
||||||
|
"requires": {
|
||||||
|
"xmlchars": "^2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"schema-utils": {
|
"schema-utils": {
|
||||||
"version": "2.7.1",
|
"version": "2.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
|
||||||
@@ -15174,6 +15546,11 @@
|
|||||||
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"set-immediate-shim": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
|
||||||
|
"integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
|
||||||
|
},
|
||||||
"set-value": {
|
"set-value": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
|
||||||
@@ -15209,8 +15586,7 @@
|
|||||||
"setimmediate": {
|
"setimmediate": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
|
||||||
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
|
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"setprototypeof": {
|
"setprototypeof": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
@@ -16116,6 +16492,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tar-stream": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
|
||||||
|
"requires": {
|
||||||
|
"bl": "^4.0.3",
|
||||||
|
"end-of-stream": "^1.4.1",
|
||||||
|
"fs-constants": "^1.0.0",
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"readable-stream": "^3.1.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"terser": {
|
"terser": {
|
||||||
"version": "4.8.0",
|
"version": "4.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
|
||||||
@@ -16418,6 +16818,11 @@
|
|||||||
"punycode": "^2.1.1"
|
"punycode": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"traverse": {
|
||||||
|
"version": "0.3.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz",
|
||||||
|
"integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk="
|
||||||
|
},
|
||||||
"tryer": {
|
"tryer": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz",
|
||||||
@@ -16669,6 +17074,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"unzipper": {
|
||||||
|
"version": "0.10.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
|
||||||
|
"integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
|
||||||
|
"requires": {
|
||||||
|
"big-integer": "^1.6.17",
|
||||||
|
"binary": "~0.3.0",
|
||||||
|
"bluebird": "~3.4.1",
|
||||||
|
"buffer-indexof-polyfill": "~1.0.0",
|
||||||
|
"duplexer2": "~0.1.4",
|
||||||
|
"fstream": "^1.0.12",
|
||||||
|
"graceful-fs": "^4.2.2",
|
||||||
|
"listenercount": "~1.0.1",
|
||||||
|
"readable-stream": "~2.3.6",
|
||||||
|
"setimmediate": "~1.0.4"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bluebird": {
|
||||||
|
"version": "3.4.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
|
||||||
|
"integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"upath": {
|
"upath": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
|
||||||
@@ -17826,8 +18255,7 @@
|
|||||||
"wrappy": {
|
"wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
|
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"write": {
|
"write": {
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
@@ -17902,6 +18330,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"xmlchars": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
|
||||||
|
},
|
||||||
"xtend": {
|
"xtend": {
|
||||||
"version": "4.0.2",
|
"version": "4.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
|
||||||
@@ -18028,6 +18461,28 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"zip-stream": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==",
|
||||||
|
"requires": {
|
||||||
|
"archiver-utils": "^2.1.0",
|
||||||
|
"compress-commons": "^4.1.0",
|
||||||
|
"readable-stream": "^3.6.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"readable-stream": {
|
||||||
|
"version": "3.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||||
|
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||||
|
"requires": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"zrender": {
|
"zrender": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.1.1.tgz",
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
"cropperjs": "~1.5.12",
|
"cropperjs": "~1.5.12",
|
||||||
"echarts": "~5.1.2",
|
"echarts": "~5.1.2",
|
||||||
"echarts-wordcloud": "~2.0.0",
|
"echarts-wordcloud": "~2.0.0",
|
||||||
|
"exceljs": "^4.3.0",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"nprogress": "~0.2.0",
|
"nprogress": "~0.2.0",
|
||||||
"tinymce": "~5.8.2",
|
"tinymce": "~5.8.2",
|
||||||
|
|||||||
BIN
public/template/环境空气-县.xlsx
Normal file
BIN
public/template/环境空气-县.xlsx
Normal file
Binary file not shown.
BIN
public/template/环境空气-市.xlsx
Normal file
BIN
public/template/环境空气-市.xlsx
Normal file
Binary file not shown.
BIN
public/template/环境空气-站点.xlsx
Normal file
BIN
public/template/环境空气-站点.xlsx
Normal file
Binary file not shown.
BIN
public/template/酸雨-县.xlsx
Normal file
BIN
public/template/酸雨-县.xlsx
Normal file
Binary file not shown.
BIN
public/template/酸雨-市.xls
Normal file
BIN
public/template/酸雨-市.xls
Normal file
Binary file not shown.
@@ -56,7 +56,10 @@ const getHistoryyears = function () {
|
|||||||
const getColumnOptions = function(column){
|
const getColumnOptions = function(column){
|
||||||
return axios.get("/acidRain/acidRain/options",{params:{column}})
|
return axios.get("/acidRain/acidRain/options",{params:{column}})
|
||||||
}
|
}
|
||||||
|
// ---gis--
|
||||||
|
const getPlaceGis = function(data){
|
||||||
|
return axios.get("/acidRain/acidRain/gis/place",{params:data})
|
||||||
|
}
|
||||||
const statisticCity = "/acidRain/acidRain/statistic/city"
|
const statisticCity = "/acidRain/acidRain/statistic/city"
|
||||||
const statisticCounty = "/acidRain/acidRain/statistic/county"
|
const statisticCounty = "/acidRain/acidRain/statistic/county"
|
||||||
const statisticIon = "/acidRain/acidRain/statistic/ion"
|
const statisticIon = "/acidRain/acidRain/statistic/ion"
|
||||||
@@ -79,5 +82,6 @@ export {
|
|||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
statisticCity,
|
statisticCity,
|
||||||
statisticIon,
|
statisticIon,
|
||||||
statisticCounty
|
statisticCounty,
|
||||||
|
getPlaceGis
|
||||||
}
|
}
|
||||||
@@ -67,6 +67,10 @@ const statisticUrl = "/ambientAir/ambientAir/statistic";
|
|||||||
const statisticAreaBase = "/ambientAir/ambientAir/statistic/areaBase";
|
const statisticAreaBase = "/ambientAir/ambientAir/statistic/areaBase";
|
||||||
const statisticArea = "/ambientAir/ambientAir/statistic/area";
|
const statisticArea = "/ambientAir/ambientAir/statistic/area";
|
||||||
|
|
||||||
|
// ---gis--
|
||||||
|
const getPlaceGis = function(data){
|
||||||
|
return axios.get("/ambientAir/ambientAir/gis/place",{params:data})
|
||||||
|
}
|
||||||
// 排行
|
// 排行
|
||||||
const airDayRankUrl = "/zhenQiWang/ambientAirZhenqiCityDayAqiRankData";
|
const airDayRankUrl = "/zhenQiWang/ambientAirZhenqiCityDayAqiRankData";
|
||||||
const airMonthRankUrl = "/zhenQiWang/ambientAirZhenqiCityMonthComprehensiveAqiRankData/page";
|
const airMonthRankUrl = "/zhenQiWang/ambientAirZhenqiCityMonthComprehensiveAqiRankData/page";
|
||||||
@@ -90,6 +94,7 @@ export {
|
|||||||
updateAir,
|
updateAir,
|
||||||
removeBatchAir,
|
removeBatchAir,
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
|
getPlaceGis,
|
||||||
statisticAvg,
|
statisticAvg,
|
||||||
statisticUrl,
|
statisticUrl,
|
||||||
statisticAreaBase,
|
statisticAreaBase,
|
||||||
@@ -60,12 +60,10 @@ const getHistoryyears = function () {
|
|||||||
const getColumnOptions = function(column){
|
const getColumnOptions = function(column){
|
||||||
return axios.get("/sound/function/noise/options",{params:{column}})
|
return axios.get("/sound/function/noise/options",{params:{column}})
|
||||||
}
|
}
|
||||||
const getGisBase = function(data){
|
|
||||||
return axios.get("/sound/function/noise/gis",{params:data})
|
|
||||||
}
|
|
||||||
|
|
||||||
const getGisArea = function(data){
|
// ---gis--
|
||||||
return axios.get("/sound/function/noise/gis/area",{params:data})
|
const getPlaceGis = function(data){
|
||||||
|
return axios.get("/sound/function/noise/gis/place",{params:data})
|
||||||
}
|
}
|
||||||
export {
|
export {
|
||||||
pageBillUrl,
|
pageBillUrl,
|
||||||
@@ -83,8 +81,7 @@ export {
|
|||||||
pageFunctionNoiseStatisticUrl,
|
pageFunctionNoiseStatisticUrl,
|
||||||
getHistoryyears,
|
getHistoryyears,
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
getGisBase,
|
getPlaceGis,
|
||||||
getGisArea,
|
|
||||||
listAllFunctionNoiseUrl,
|
listAllFunctionNoiseUrl,
|
||||||
listAllFunctionNoise,
|
listAllFunctionNoise,
|
||||||
pageFunctionNoiseStatisticAvgUrl
|
pageFunctionNoiseStatisticAvgUrl
|
||||||
|
|||||||
@@ -62,7 +62,10 @@ const getHistoryyears = function () {
|
|||||||
const getColumnOptions = function(column){
|
const getColumnOptions = function(column){
|
||||||
return axios.get("/sound/zone/noise/options",{params:{column}})
|
return axios.get("/sound/zone/noise/options",{params:{column}})
|
||||||
}
|
}
|
||||||
|
// ---gis--
|
||||||
|
const getPlaceGis = function(data){
|
||||||
|
return axios.get("/sound/zone/noise/gis/place",{params:data})
|
||||||
|
}
|
||||||
export {
|
export {
|
||||||
pageBillUrl,
|
pageBillUrl,
|
||||||
saveZoneNoiseBill,
|
saveZoneNoiseBill,
|
||||||
@@ -82,6 +85,7 @@ export {
|
|||||||
statisticSourceUrl,
|
statisticSourceUrl,
|
||||||
statisticYearUrl,
|
statisticYearUrl,
|
||||||
listALlZoneNoise,
|
listALlZoneNoise,
|
||||||
statisticLevelDistributionUrl
|
statisticLevelDistributionUrl,
|
||||||
|
getPlaceGis
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
16353
src/utils/450100.js
16353
src/utils/450100.js
File diff suppressed because it is too large
Load Diff
@@ -1,10 +1,43 @@
|
|||||||
const exportTableData = function(columns,data){rt
|
const ExcelJS = require('exceljs');
|
||||||
|
|
||||||
|
const exportTableData = function(columns,data){
|
||||||
|
|
||||||
return columns + data
|
return columns + data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const downloadTemplate = function (name){
|
||||||
|
var a = document.createElement("a"); //创建一个<a></a>标签
|
||||||
|
a.href = `/template/${name}.xlsx`; // 给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.
|
||||||
|
a.download = `${name}-导入模板.xlsx`; //设置下载文件文件名,这里加上.xlsx指定文件类型,pdf文件就指定.fpd即可
|
||||||
|
a.style.display = "none"; // 障眼法藏起来a标签
|
||||||
|
document.body.appendChild(a); // 将a标签追加到文档对象中
|
||||||
|
a.click(); // 模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
|
||||||
|
a.remove(); // 一次性的,用完就删除a标签
|
||||||
|
}
|
||||||
|
|
||||||
|
const excelToJson = async function (buffer){
|
||||||
|
const wb = new ExcelJS.Workbook();
|
||||||
|
await wb.xlsx.load(buffer);
|
||||||
|
const worksheet = wb.worksheets[0];
|
||||||
|
const res = [];
|
||||||
|
worksheet.eachRow((row)=>{
|
||||||
|
const cs = [];
|
||||||
|
row.eachCell({ includeEmpty: true },(cell)=>{
|
||||||
|
var value = cell.value;
|
||||||
|
if(value!= undefined && typeof value == "object" && !(value instanceof Date)){
|
||||||
|
value = value.text
|
||||||
|
}
|
||||||
|
cs.push(value)
|
||||||
|
})
|
||||||
|
res.push(cs)
|
||||||
|
})
|
||||||
|
console.log(res)
|
||||||
|
return res;
|
||||||
|
}
|
||||||
export {
|
export {
|
||||||
exportTableData
|
exportTableData,
|
||||||
|
downloadTemplate,
|
||||||
|
excelToJson
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ const tableColumns = [
|
|||||||
{title: "降雨量(mm)",dataIndex: "precipitation",sorter: true,},
|
{title: "降雨量(mm)",dataIndex: "precipitation",sorter: true,},
|
||||||
{title: "pH值(无量纲)",dataIndex: "ph",sorter: true,},
|
{title: "pH值(无量纲)",dataIndex: "ph",sorter: true,},
|
||||||
{title: "电导率(mS/m)",dataIndex: "conductivity",sorter: true,},
|
{title: "电导率(mS/m)",dataIndex: "conductivity",sorter: true,},
|
||||||
{title: "氟离子",dataIndex: "fluorine",sorter: true,},
|
{title: "氟离子",dataIndex: "f",sorter: true,},
|
||||||
{title: "氯离子",dataIndex: "chlorine",sorter: true,},
|
{title: "氯离子",dataIndex: "cl",sorter: true,},
|
||||||
{title: "硫酸根离子",dataIndex: "sulfateRadical",sorter: true,},
|
{title: "硫酸根离子",dataIndex: "so42",sorter: true,},
|
||||||
{title: "硝酸根离子",dataIndex: "nitrate",sorter: true,},
|
{title: "硝酸根离子",dataIndex: "no3",sorter: true,},
|
||||||
{title: "钠离子",dataIndex: "na",sorter: true,},
|
{title: "钠离子",dataIndex: "na",sorter: true,},
|
||||||
{title: "铵根离子",dataIndex: "ammoniumRadical",sorter: true,},
|
{title: "铵根离子",dataIndex: "nh4",sorter: true,},
|
||||||
{title: "钾离子",dataIndex: "k",sorter: true,},
|
{title: "钾离子",dataIndex: "k",sorter: true,},
|
||||||
{title: "镁离子",dataIndex: "mg",sorter: true,},
|
{title: "镁离子",dataIndex: "mg",sorter: true,},
|
||||||
{title: "钙离子",dataIndex: "ca",sorter: true,},
|
{title: "钙离子",dataIndex: "ca",sorter: true,},
|
||||||
|
|||||||
@@ -2,15 +2,23 @@
|
|||||||
<div class="ele-body">
|
<div class="ele-body">
|
||||||
<a-card style="width: 100%" :bordered="false">
|
<a-card style="width: 100%" :bordered="false">
|
||||||
<template #title>
|
<template #title>
|
||||||
|
<a-select
|
||||||
|
ref="select"
|
||||||
|
v-model:value="regionLevel"
|
||||||
|
style="width: 120px"
|
||||||
|
>
|
||||||
|
<a-select-option value="city">市</a-select-option>
|
||||||
|
<a-select-option value="county">县</a-select-option>
|
||||||
|
</a-select>
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-upload
|
<a-upload
|
||||||
:before-upload="importFileCity"
|
:before-upload="importFileCity"
|
||||||
:showUploadList="false"
|
:showUploadList="false"
|
||||||
accept=".xls,.xlsx,.csv"
|
accept=".xls,.xlsx,.csv"
|
||||||
>
|
>
|
||||||
<a-button>数据导入</a-button>
|
<a-button>数据导入</a-button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
|
<a-button @click="download">模板下载</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
<a-tabs v-model:activeKey="activeKey">
|
<a-tabs v-model:activeKey="activeKey">
|
||||||
@@ -27,7 +35,8 @@ import XLSX from "xlsx";
|
|||||||
import utils from "./utils";
|
import utils from "./utils";
|
||||||
import {Modal} from "ant-design-vue";
|
import {Modal} from "ant-design-vue";
|
||||||
import RainBill from "./rain-bill.vue";
|
import RainBill from "./rain-bill.vue";
|
||||||
import {saveAcidRainBill} from "@/api/ecology/acid";
|
import {saveAcidRainBill} from "@/api/ecology/atmosphere/acid"
|
||||||
|
import {downloadTemplate} from "@/utils/excel-util";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "RainCollectIndex",
|
name: "RainCollectIndex",
|
||||||
@@ -37,93 +46,117 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activeKey: "rain",
|
activeKey: "rain",
|
||||||
|
regionLevel: "city",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
download() {
|
||||||
|
let filename = "酸雨-"
|
||||||
|
if (this.regionLevel == "city") {
|
||||||
|
filename += "市"
|
||||||
|
} else if (this.regionLevel == "county") {
|
||||||
|
filename += "县"
|
||||||
|
} else {
|
||||||
|
filename += "站点"
|
||||||
|
}
|
||||||
|
downloadTemplate(filename)
|
||||||
|
},
|
||||||
/* 导入本地excel文件 */
|
/* 导入本地excel文件 */
|
||||||
async importFileCity(file) {
|
async importFileCity(file) {
|
||||||
const hide = this.$message.loading("导入中..", 0);
|
const hide = this.$message.loading("导入中..", 0);
|
||||||
|
|
||||||
let reader = new FileReader();
|
let reader = new FileReader();
|
||||||
reader.onload = async (e) => {
|
reader.onload = async (e) => {
|
||||||
try {
|
try {
|
||||||
let data = new Uint8Array(e.target.result);
|
|
||||||
let workbook = XLSX.read(data, {
|
|
||||||
type: "array",
|
|
||||||
});
|
|
||||||
let sheetNames = workbook.SheetNames;
|
|
||||||
// 解析成二维数组
|
|
||||||
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
|
||||||
header: 1,
|
|
||||||
});
|
|
||||||
|
|
||||||
const reportDate = aoa[2][0].replace(/[^\d]+/g, "-");
|
let data = new Uint8Array(e.target.result);
|
||||||
|
let workbook = XLSX.read(data, {
|
||||||
|
type: "array",
|
||||||
|
});
|
||||||
|
let sheetNames = workbook.SheetNames;
|
||||||
|
// 解析成二维数组
|
||||||
|
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
||||||
|
header: 1,
|
||||||
|
});
|
||||||
|
|
||||||
const acidList = aoa.filter((item) => {
|
|
||||||
return item.length >= 16 && item[0] && !item[0].includes("编号");
|
|
||||||
});
|
|
||||||
// 解析成对象数组
|
|
||||||
const billName = aoa[0][0] + aoa[1][0];
|
|
||||||
const billData = await utils.toObjData(acidList, new Date(reportDate).getFullYear());
|
|
||||||
|
|
||||||
if (
|
const acidList = aoa.filter((item) => {
|
||||||
!billData ||
|
if (this.regionLevel == "city") {
|
||||||
billData.length == 0
|
return item.length >= 20 && item[0] && !item[0].includes("编号");
|
||||||
// (!billData2 || billData2.length == 0)
|
} else if (this.regionLevel == "county") {
|
||||||
) {
|
console.log(item.length,item[0])
|
||||||
hide();
|
return item.length >= 27 && item[0] && item[0] != "行政代码";
|
||||||
Modal.error({
|
}
|
||||||
title: "导入失败",
|
});
|
||||||
content: "找不到数据",
|
// 解析成对象数组
|
||||||
});
|
const billName =file.name;
|
||||||
return;
|
let billData = undefined
|
||||||
}
|
if (this.regionLevel == "city") {
|
||||||
|
const reportDate = aoa[2][0].replace(/[^\d]+/g, "-");
|
||||||
|
|
||||||
const tasks = [];
|
billData = await utils.toObjData(acidList, new Date(reportDate).getFullYear());
|
||||||
if (billData.length > 0) {
|
} else if (this.regionLevel == "county") {
|
||||||
tasks.push(
|
billData = utils.toCountyObjData(acidList);
|
||||||
saveAcidRainBill({
|
|
||||||
// reportTime: new Date(reportDate).getTime(),
|
|
||||||
billName: billName,
|
|
||||||
regionLevel: "市级",
|
|
||||||
acidRainList: billData,
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 上传到服务器
|
|
||||||
Promise.all(tasks)
|
|
||||||
.then((res) => {
|
|
||||||
if (res[0].data.code == 0) {
|
|
||||||
Modal.success({
|
|
||||||
title: "导入成功",
|
|
||||||
content: `成功导入${billData.length}条数据`,
|
|
||||||
});
|
|
||||||
this.$refs.rain && this.$refs.rain.reload();
|
|
||||||
} else {
|
|
||||||
Modal.error({
|
|
||||||
title: "导入失败",
|
|
||||||
content: "数据上传出错",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch(() => {
|
|
||||||
Modal.error({
|
|
||||||
title: "导入失败",
|
|
||||||
content: "数据上传出错",
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
hide();
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
hide();
|
|
||||||
Modal.error({
|
|
||||||
title: "导入失败",
|
|
||||||
content: error.message,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
// console.log(billData);
|
|
||||||
|
if (
|
||||||
|
!billData ||
|
||||||
|
billData.length == 0
|
||||||
|
// (!billData2 || billData2.length == 0)
|
||||||
|
) {
|
||||||
|
hide();
|
||||||
|
Modal.error({
|
||||||
|
title: "导入失败",
|
||||||
|
content: "找不到数据",
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const tasks = [];
|
||||||
|
if (billData.length > 0) {
|
||||||
|
tasks.push(
|
||||||
|
saveAcidRainBill({
|
||||||
|
// reportTime: new Date(reportDate).getTime(),
|
||||||
|
billName: billName,
|
||||||
|
regionLevel: this.regionLevel == "city"?"市级":"县级",
|
||||||
|
acidRainList: billData,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传到服务器
|
||||||
|
Promise.all(tasks)
|
||||||
|
.then((res) => {
|
||||||
|
if (res[0].data.code == 0) {
|
||||||
|
Modal.success({
|
||||||
|
title: "导入成功",
|
||||||
|
content: `成功导入${billData.length}条数据`,
|
||||||
|
});
|
||||||
|
this.$refs.rain && this.$refs.rain.reload();
|
||||||
|
} else {
|
||||||
|
Modal.error({
|
||||||
|
title: "导入失败",
|
||||||
|
content: "数据上传出错",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
Modal.error({
|
||||||
|
title: "导入失败",
|
||||||
|
content: "数据上传出错",
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
hide();
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
hide();
|
||||||
|
Modal.error({
|
||||||
|
title: "导入失败",
|
||||||
|
content: error.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// console.log(billData);
|
||||||
};
|
};
|
||||||
reader.readAsArrayBuffer(file);
|
reader.readAsArrayBuffer(file);
|
||||||
|
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
removeBatchAcidRainBill,
|
removeBatchAcidRainBill,
|
||||||
updateAcidRainBill,
|
updateAcidRainBill,
|
||||||
verifyAcidRainBill
|
verifyAcidRainBill
|
||||||
} from "@/api/ecology/acid";
|
} from "@/api/ecology/atmosphere/acid";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
export default {
|
export default {
|
||||||
name: 'RainCollectNoiseBill',
|
name: 'RainCollectNoiseBill',
|
||||||
@@ -144,11 +144,11 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// title: '区域等级',
|
title: '区域等级',
|
||||||
// dataIndex: 'regionLevel',
|
dataIndex: 'regionLevel',
|
||||||
// sorter: true,
|
sorter: true,
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
title: '条目',
|
title: '条目',
|
||||||
dataIndex: 'recordSize',
|
dataIndex: 'recordSize',
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ import {
|
|||||||
updateAcidRain,
|
updateAcidRain,
|
||||||
getAcidRainBill,
|
getAcidRainBill,
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
} from "@/api/ecology/acid";
|
} from "@/api/ecology/atmosphere/acid";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import { tableColumns } from "./colums";
|
import { tableColumns } from "./colums";
|
||||||
|
|||||||
@@ -2,6 +2,39 @@ import moment from "moment"
|
|||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import {listAllUrl} from "@/api/ecology/atmosphere/acid-rain-plcae"
|
import {listAllUrl} from "@/api/ecology/atmosphere/acid-rain-plcae"
|
||||||
export default {
|
export default {
|
||||||
|
toCountyObjData(excelData){
|
||||||
|
return excelData.map(item => {
|
||||||
|
|
||||||
|
const row = {
|
||||||
|
regionCode: item[0],
|
||||||
|
city: (typeof item[1] == "string" && item[1].includes("市"))?item[1].sub(0,item[1].lastIndexOf("市")): "南宁市",
|
||||||
|
county: (typeof item[1] == "string" && item[1].includes("县"))?item[1].sub(0,item[1].lastIndexOf("县")): "",
|
||||||
|
area: (typeof item[1] == "string" && item[1].includes("区"))?item[1].sub(0,item[1].lastIndexOf("区")): "南宁区",
|
||||||
|
place: item[2],
|
||||||
|
placeType: item[3],
|
||||||
|
monitorStartTime: moment(`${item[4]}-${item[5]}-${item[6]} ${item[7]}:${item[8]}:00`).valueOf(),
|
||||||
|
monitorEndTime: moment(`${item[9]}-${item[10]}-${item[11]} ${item[12]}:${item[13]}:00`).valueOf(),
|
||||||
|
monitorTime: moment(`${item[4]}-${item[5]}-${item[6]} ${item[7]}:${item[8]}:00`).valueOf(),
|
||||||
|
precipitationType: item[14],
|
||||||
|
precipitation: item[15],
|
||||||
|
ph: item[16],
|
||||||
|
conductivity: item[17],
|
||||||
|
so42: item[18],
|
||||||
|
no3: item[19],
|
||||||
|
f: item[20],
|
||||||
|
cl: item[21],
|
||||||
|
nh4: item[22],
|
||||||
|
ca: item[23],
|
||||||
|
mg: item[24],
|
||||||
|
na: item[25],
|
||||||
|
k: item[26],
|
||||||
|
systemCode: item[27],
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return row;
|
||||||
|
})
|
||||||
|
},
|
||||||
async toObjData(excelData,monitorYear) {
|
async toObjData(excelData,monitorYear) {
|
||||||
const res = await axios.get(listAllUrl,{params:{year:monitorYear}})
|
const res = await axios.get(listAllUrl,{params:{year:monitorYear}})
|
||||||
if(res.data.code !=0){
|
if(res.data.code !=0){
|
||||||
@@ -12,22 +45,21 @@ export default {
|
|||||||
const monitorTime = moment(monitorYear + "."+item[1],"Y.M.D");
|
const monitorTime = moment(monitorYear + "."+item[1],"Y.M.D");
|
||||||
const monitorStartTime = moment(`${monitorYear}.${item[2]}.${item[3]} ${item[4]}:${item[5]}`,"Y.M.D H:m");
|
const monitorStartTime = moment(`${monitorYear}.${item[2]}.${item[3]} ${item[4]}:${item[5]}`,"Y.M.D H:m");
|
||||||
const monitorEndTime = moment(`${monitorYear}.${item[6]}.${item[7]} ${item[8]}:${item[9]}`,"Y.M.D H:m");
|
const monitorEndTime = moment(`${monitorYear}.${item[6]}.${item[7]} ${item[8]}:${item[9]}`,"Y.M.D H:m");
|
||||||
console.log(item);
|
|
||||||
const row = {
|
const row = {
|
||||||
city: "南宁市",
|
city: "南宁市",
|
||||||
place: dict.find(p=>p.placeCode = item[0].split("~")[0]).place,
|
place: dict.find(p=>p.placeCode == item[0].split("~")[0]).place,
|
||||||
placeType:dict.find(p=>p.placeCode = item[0].split("~")[0]).attribute,
|
placeType:dict.find(p=>p.placeCode == item[0].split("~")[0]).attribute,
|
||||||
code: item[0],
|
code: item[0],
|
||||||
precipitationType:item[10],
|
precipitationType:item[10],
|
||||||
precipitation:item[11],
|
precipitation:item[11],
|
||||||
ph:item[12],
|
ph:item[12],
|
||||||
conductivity:item[13],
|
conductivity:item[13],
|
||||||
fluorine:item[14],
|
f:item[14],
|
||||||
chlorine:item[15],
|
cl:item[15],
|
||||||
sulfateRadical:item[16],
|
so42:item[16],
|
||||||
nitrate:item[17],
|
no3:item[17],
|
||||||
na:item[18],
|
na:item[18],
|
||||||
ammoniumRadical:item[19],
|
nh4:item[19],
|
||||||
k:item[20],
|
k:item[20],
|
||||||
mg:item[21],
|
mg:item[21],
|
||||||
ca:item[22],
|
ca:item[22],
|
||||||
@@ -35,6 +67,7 @@ export default {
|
|||||||
monitorEndTime: monitorEndTime.valueOf(),
|
monitorEndTime: monitorEndTime.valueOf(),
|
||||||
monitorTime: monitorTime.valueOf(),
|
monitorTime: monitorTime.valueOf(),
|
||||||
}
|
}
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@
|
|||||||
<script>
|
<script>
|
||||||
// import _ from "lodash";
|
// import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {pageAcidRainUrl, getColumnOptions} from "@/api/ecology/acid";
|
import {pageAcidRainUrl, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticCity, getColumnOptions} from "@/api/ecology/acid";
|
import {statisticCity, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticCounty, getColumnOptions} from "@/api/ecology/acid";
|
import {statisticCounty, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticIon, getColumnOptions} from "@/api/ecology/acid";
|
import {statisticIon, getColumnOptions} from "@/api/ecology/atmosphere/acid";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ import {
|
|||||||
removeBatchAirBill,
|
removeBatchAirBill,
|
||||||
updateAirBill,
|
updateAirBill,
|
||||||
verifyAirBill
|
verifyAirBill
|
||||||
} from "@/api/ecology/air";
|
} from "@/api/ecology/atmosphere/air";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ import {
|
|||||||
updateAir,
|
updateAir,
|
||||||
getAirBill,
|
getAirBill,
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
} from "@/api/ecology/air";
|
} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
@@ -272,7 +272,7 @@ export default {
|
|||||||
title: "监测日期",
|
title: "监测日期",
|
||||||
dataIndex: "monitorTime",
|
dataIndex: "monitorTime",
|
||||||
sorter: true,
|
sorter: true,
|
||||||
customRender: ({text})=> moment(text).format("YYYY-MM-DD HH:mm")
|
customRender: ({text})=> moment(text).format("YYYY-MM-DD")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "城市",
|
title: "城市",
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
>
|
>
|
||||||
<a-button type="primary">数据导入</a-button>
|
<a-button type="primary">数据导入</a-button>
|
||||||
</a-upload>
|
</a-upload>
|
||||||
<a-button>模板下载</a-button>
|
<a-button @click="download">模板下载</a-button>
|
||||||
|
|
||||||
</a-space>
|
</a-space>
|
||||||
</template>
|
</template>
|
||||||
@@ -34,12 +34,13 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import XLSX from "xlsx";
|
|
||||||
import utils from "./utils";
|
import utils from "./utils";
|
||||||
import {Modal} from "ant-design-vue";
|
import {Modal} from "ant-design-vue";
|
||||||
import AirBill from "./air-bill.vue";
|
import AirBill from "./air-bill.vue";
|
||||||
import {saveAirBill} from "@/api/ecology/air";
|
import {saveAirBill} from "@/api/ecology/atmosphere/air";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
import {downloadTemplate, excelToJson} from "@/utils/excel-util";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "AirCollectIndex",
|
name: "AirCollectIndex",
|
||||||
@@ -55,25 +56,26 @@ export default {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
download(){
|
||||||
|
let filename = "环境空气-"
|
||||||
|
if (this.regionLevel == "city") {
|
||||||
|
filename += "市"
|
||||||
|
} else if (this.regionLevel == "county") {
|
||||||
|
filename += "县"
|
||||||
|
} else {
|
||||||
|
filename += "站点"
|
||||||
|
}
|
||||||
|
downloadTemplate(filename)
|
||||||
|
},
|
||||||
/* 导入本地excel文件 */
|
/* 导入本地excel文件 */
|
||||||
importFileCity(file) {
|
importFileCity(file) {
|
||||||
const hide = this.$message.loading("导入中..", 0);
|
const hide = this.$message.loading("导入中..", 0);
|
||||||
|
|
||||||
let reader = new FileReader();
|
let reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = async (e) => {
|
||||||
try {
|
try {
|
||||||
let data = new Uint8Array(e.target.result);
|
|
||||||
let workbook = XLSX.read(data, {
|
let aoa = await excelToJson(e.target.result)
|
||||||
type: "array",
|
|
||||||
cellDates: true
|
|
||||||
});
|
|
||||||
let sheetNames = workbook.SheetNames;
|
|
||||||
// 解析成二维数组
|
|
||||||
let aoa = XLSX.utils.sheet_to_json(workbook.Sheets[sheetNames[0]], {
|
|
||||||
header: 1,
|
|
||||||
defval: ""
|
|
||||||
});
|
|
||||||
console.log(aoa.length)
|
|
||||||
const airList = aoa.filter((item) => {
|
const airList = aoa.filter((item) => {
|
||||||
if (this.regionLevel == "city") {
|
if (this.regionLevel == "city") {
|
||||||
return item.length >= 10&& item[0]&& item[0] != "城市";
|
return item.length >= 10&& item[0]&& item[0] != "城市";
|
||||||
@@ -84,7 +86,6 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
console.log(airList.length)
|
|
||||||
const billName = file.name;
|
const billName = file.name;
|
||||||
let billData = undefined;
|
let billData = undefined;
|
||||||
if (this.regionLevel == "city") {
|
if (this.regionLevel == "city") {
|
||||||
@@ -94,7 +95,6 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
billData = utils.toPlaceObjData(airList)
|
billData = utils.toPlaceObjData(airList)
|
||||||
}
|
}
|
||||||
console.log(billData.length)
|
|
||||||
// 解析成对象数组
|
// 解析成对象数组
|
||||||
if (!billData || billData.length == 0) {
|
if (!billData || billData.length == 0) {
|
||||||
hide()
|
hide()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
export default {
|
export default {
|
||||||
toCityObjData(excelData) {
|
toCityObjData(excelData) {
|
||||||
|
|
||||||
const result = excelData.map(item => {
|
const result = excelData.map(item => {
|
||||||
const row = {
|
const row = {
|
||||||
city: item[0],
|
city: item[0],
|
||||||
@@ -49,6 +50,8 @@ export default {
|
|||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
toPlaceObjData(excelData) {
|
toPlaceObjData(excelData) {
|
||||||
|
console.log(excelData[8][2]);
|
||||||
|
console.log(moment(excelData[8][2]));
|
||||||
const result = excelData.map(item => {
|
const result = excelData.map(item => {
|
||||||
const place = item[1];
|
const place = item[1];
|
||||||
// const county = place.substr(0,place.indexOf("县"))
|
// const county = place.substr(0,place.indexOf("县"))
|
||||||
@@ -58,16 +61,16 @@ export default {
|
|||||||
place,
|
place,
|
||||||
monitorTime: moment(item[2]).valueOf(),
|
monitorTime: moment(item[2]).valueOf(),
|
||||||
so2: Number(item[3]) || null,
|
so2: Number(item[3]) || null,
|
||||||
no2: Number(item[5]) || null,
|
no2: Number(item[4]) || null,
|
||||||
pm10: Number(item[7]) || null,
|
pm10: Number(item[5]) || null,
|
||||||
co: Number(item[9]) || null,
|
co: Number(item[6]) || null,
|
||||||
o3: Number(item[12]) || null,
|
o3: Number(item[7]) || null,
|
||||||
pm25: Number(item[14]) || null,
|
pm25: Number(item[8]) || null,
|
||||||
aqi: Number(item[16]) || null,
|
aqi: Number(item[9]) || null,
|
||||||
primaryPollutant: item[17],
|
primaryPollutant: item[10],
|
||||||
aqiLevel: item[18],
|
aqiLevel: item[11],
|
||||||
airQualityStatus: item[19],
|
airQualityStatus: item[12],
|
||||||
remark: item[21],
|
remark: item[13],
|
||||||
}
|
}
|
||||||
return row;
|
return row;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -43,13 +43,13 @@
|
|||||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
||||||
>
|
>
|
||||||
<a-form-item label="新年份" name="nYear">
|
<a-form-item label="新年份" name="nYear">
|
||||||
<a-input-number id="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
|
<a-input-number airEvaluationStandardId="inputNumber" v-model:value="nYear" :min="1970" :max="2050" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
<a-modal
|
<a-modal
|
||||||
v-model:visible="showEdit"
|
v-model:visible="showEdit"
|
||||||
:title="form.id !== undefined ? '修改' : '添加'"
|
:title="form.airEvaluationStandardId !== undefined ? '修改' : '添加'"
|
||||||
:confirm-loading="loading"
|
:confirm-loading="loading"
|
||||||
:width="500"
|
:width="500"
|
||||||
:body-style="{ paddingBottom: '8px' }"
|
:body-style="{ paddingBottom: '8px' }"
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
<ele-pro-table
|
<ele-pro-table
|
||||||
v-model:selection="selectionList"
|
v-model:selection="selectionList"
|
||||||
ref="table"
|
ref="table"
|
||||||
row-key="id"
|
row-key="airEvaluationStandardId"
|
||||||
:datasource="url"
|
:datasource="url"
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:where="where"
|
:where="where"
|
||||||
@@ -296,7 +296,7 @@ export default {
|
|||||||
// }
|
// }
|
||||||
const hide = this.$message.loading('请求中..', 0);
|
const hide = this.$message.loading('请求中..', 0);
|
||||||
const form = this.form;
|
const form = this.form;
|
||||||
if (form.id) {
|
if (form.airEvaluationStandardId) {
|
||||||
updateStandard(form)
|
updateStandard(form)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.data.code == 0) {
|
if (res.data.code == 0) {
|
||||||
@@ -335,7 +335,7 @@ export default {
|
|||||||
/* 删除单个 */
|
/* 删除单个 */
|
||||||
remove(row) {
|
remove(row) {
|
||||||
const hide = this.$message.loading('请求中..', 0);
|
const hide = this.$message.loading('请求中..', 0);
|
||||||
removeStandard(row.id).then((res) => {
|
removeStandard(row.airEvaluationStandardId).then((res) => {
|
||||||
hide();
|
hide();
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
this.$message.success(res.data.msg);
|
this.$message.success(res.data.msg);
|
||||||
@@ -351,7 +351,7 @@ export default {
|
|||||||
/* 批量删除 */
|
/* 批量删除 */
|
||||||
removeBatch() {
|
removeBatch() {
|
||||||
const hide = this.$message.loading('请求中..', 0);
|
const hide = this.$message.loading('请求中..', 0);
|
||||||
const ids = this.selectionList.map((item) => item.id);
|
const ids = this.selectionList.map((item) => item.airEvaluationStandardId);
|
||||||
removeBatchStandard(ids).then((res) => {
|
removeBatchStandard(ids).then((res) => {
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
this.$message.success(res.data.msg);
|
this.$message.success(res.data.msg);
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
<script>
|
<script>
|
||||||
// import _ from "lodash";
|
// import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {airDayRankUrl} from "@/api/ecology/air";
|
import {airDayRankUrl} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ import XLSX from "xlsx";
|
|||||||
import {
|
import {
|
||||||
airMonthRankUrl,
|
airMonthRankUrl,
|
||||||
airMonthProvincialCapitalRankUrl,
|
airMonthProvincialCapitalRankUrl,
|
||||||
} from "@/api/ecology/air";
|
} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ import {
|
|||||||
airPm25YearRankUrl,
|
airPm25YearRankUrl,
|
||||||
airYearProvincialCapitalRankUrl,
|
airYearProvincialCapitalRankUrl,
|
||||||
airPm25YearProvincialCapitalRankUrl
|
airPm25YearProvincialCapitalRankUrl
|
||||||
} from "@/api/ecology/air";
|
} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="结束日期:">
|
<a-form-item label="结束日期:">
|
||||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeEnd"></a-date-picker>
|
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
<a-space>
|
<a-space>
|
||||||
@@ -50,7 +50,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticAreaBase, getColumnOptions} from "@/api/ecology/air";
|
import {statisticAreaBase, getColumnOptions} from "@/api/ecology/atmosphere/air";
|
||||||
// import { Modal } from "ant-design-vue";
|
// import { Modal } from "ant-design-vue";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
@@ -76,7 +76,7 @@ export default {
|
|||||||
],
|
],
|
||||||
// 表格列配置
|
// 表格列配置
|
||||||
columns: [
|
columns: [
|
||||||
{title: "日期", dataIndex: "monitorTime", align: "center"},
|
{title: "日期", dataIndex: "monitorTime", align: "center",customRender:({text})=>moment(text).format("YYYY-MM-DD"),fixed: "left"},
|
||||||
|
|
||||||
{title: "SO2五象", dataIndex: "wuXiangXinQuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2五象", dataIndex: "wuXiangXinQuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2五象", dataIndex: "wuXiangXinQuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2五象", dataIndex: "wuXiangXinQuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -85,7 +85,7 @@ export default {
|
|||||||
{title: "O3五象", dataIndex: "wuXiangXinQuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3五象", dataIndex: "wuXiangXinQuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5五象", dataIndex: "wuXiangXinQuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5五象", dataIndex: "wuXiangXinQuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI五象", dataIndex: "wuXiangXinQuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI五象", dataIndex: "wuXiangXinQuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别五象", dataIndex: "wuXiangXinQuAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别五象", dataIndex: "wuXiangXinQuAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2兴宁", dataIndex: "xingNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2兴宁", dataIndex: "xingNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2兴宁", dataIndex: "xingNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2兴宁", dataIndex: "xingNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -94,7 +94,7 @@ export default {
|
|||||||
{title: "O3_8h兴宁", dataIndex: "xingNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h兴宁", dataIndex: "xingNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5兴宁", dataIndex: "xingNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5兴宁", dataIndex: "xingNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI兴宁", dataIndex: "xingNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI兴宁", dataIndex: "xingNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别兴宁", dataIndex: "xingNingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别兴宁", dataIndex: "xingNingAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2江南", dataIndex: "jiangNanSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2江南", dataIndex: "jiangNanSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2江南", dataIndex: "jiangNanNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2江南", dataIndex: "jiangNanNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -103,7 +103,7 @@ export default {
|
|||||||
{title: "O3_8h江南", dataIndex: "jiangNanO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h江南", dataIndex: "jiangNanO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5江南", dataIndex: "jiangNanPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5江南", dataIndex: "jiangNanPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI江南", dataIndex: "jiangNanAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI江南", dataIndex: "jiangNanAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别江南", dataIndex: "jiangNanAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别江南", dataIndex: "jiangNanAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2青秀", dataIndex: "qingXiuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2青秀", dataIndex: "qingXiuSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2青秀", dataIndex: "qingXiuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2青秀", dataIndex: "qingXiuNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -112,7 +112,7 @@ export default {
|
|||||||
{title: "O3_8h青秀", dataIndex: "qingXiuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h青秀", dataIndex: "qingXiuO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5青秀", dataIndex: "qingXiuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5青秀", dataIndex: "qingXiuPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI青秀", dataIndex: "qingXiuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI青秀", dataIndex: "qingXiuAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别青秀", dataIndex: "qingXiuAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别青秀", dataIndex: "qingXiuAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2西乡塘", dataIndex: "xiXiangTangSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2西乡塘", dataIndex: "xiXiangTangSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2西乡塘", dataIndex: "xiXiangTangNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2西乡塘", dataIndex: "xiXiangTangNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -121,7 +121,7 @@ export default {
|
|||||||
{title: "O3_8h西乡塘", dataIndex: "xiXiangTangO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h西乡塘", dataIndex: "xiXiangTangO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5西乡塘", dataIndex: "xiXiangTangPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5西乡塘", dataIndex: "xiXiangTangPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI西乡塘", dataIndex: "xiXiangTangAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI西乡塘", dataIndex: "xiXiangTangAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别西乡塘", dataIndex: "xiXiangTangAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别西乡塘", dataIndex: "xiXiangTangAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2邕宁", dataIndex: "yongNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2邕宁", dataIndex: "yongNingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2邕宁", dataIndex: "yongNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2邕宁", dataIndex: "yongNingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -130,7 +130,7 @@ export default {
|
|||||||
{title: "O3_8h邕宁", dataIndex: "yongNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h邕宁", dataIndex: "yongNingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5邕宁", dataIndex: "yongNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5邕宁", dataIndex: "yongNingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI邕宁", dataIndex: "yongNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI邕宁", dataIndex: "yongNingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别邕宁", dataIndex: "yongNingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别邕宁", dataIndex: "yongNingAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2良庆", dataIndex: "liangQingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2良庆", dataIndex: "liangQingSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2良庆", dataIndex: "liangQingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2良庆", dataIndex: "liangQingNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -139,7 +139,7 @@ export default {
|
|||||||
{title: "O3_8h良庆", dataIndex: "liangQingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h良庆", dataIndex: "liangQingO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5良庆", dataIndex: "liangQingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5良庆", dataIndex: "liangQingPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI良庆", dataIndex: "liangQingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI良庆", dataIndex: "liangQingAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别良庆", dataIndex: "liangQingAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别良庆", dataIndex: "liangQingAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2高新", dataIndex: "gaoXinSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2高新", dataIndex: "gaoXinSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2高新", dataIndex: "gaoXinNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2高新", dataIndex: "gaoXinNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -148,7 +148,7 @@ export default {
|
|||||||
{title: "O3_8h高新", dataIndex: "gaoXinO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h高新", dataIndex: "gaoXinO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5高新", dataIndex: "gaoXinPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5高新", dataIndex: "gaoXinPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI高新", dataIndex: "gaoXinAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI高新", dataIndex: "gaoXinAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别高新", dataIndex: "gaoXinAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别高新", dataIndex: "gaoXinAqiCategory", align: "center"},
|
||||||
|
|
||||||
{title: "SO2经开", dataIndex: "jingKaiSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "SO2经开", dataIndex: "jingKaiSo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "NO2经开", dataIndex: "jingKaiNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "NO2经开", dataIndex: "jingKaiNo2", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
@@ -157,7 +157,7 @@ export default {
|
|||||||
{title: "O3_8h经开", dataIndex: "jingKaiO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "O3_8h经开", dataIndex: "jingKaiO3", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "PM2.5经开", dataIndex: "jingKaiPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "PM2.5经开", dataIndex: "jingKaiPm25", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "AQI经开", dataIndex: "jingKaiAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "AQI经开", dataIndex: "jingKaiAqi", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
||||||
{title: "类别经开", dataIndex: "jingKaiAqiCategory", align: "center",customRender:({text})=> typeof text == "number"?text.toFixed(0)+"":""},
|
{title: "类别经开", dataIndex: "jingKaiAqiCategory", align: "center"},
|
||||||
],
|
],
|
||||||
regionLevelOptions: [],
|
regionLevelOptions: [],
|
||||||
time: [],
|
time: [],
|
||||||
@@ -165,7 +165,7 @@ export default {
|
|||||||
where: {
|
where: {
|
||||||
regionLevel: "place",
|
regionLevel: "place",
|
||||||
timeStart: moment(`${year}-01-01 00:00:00`).format("YYYY-MM-DD 00:00:00"),
|
timeStart: moment(`${year}-01-01 00:00:00`).format("YYYY-MM-DD 00:00:00"),
|
||||||
timeEnd: moment().format("YYYY-MM-DD 00:00:00")
|
timeEnd: moment().format("YYYY-MM-DD 23:59:59")
|
||||||
},
|
},
|
||||||
// 表格选中数据
|
// 表格选中数据
|
||||||
selectionList: [],
|
selectionList: [],
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticArea, getColumnOptions} from "@/api/ecology/air";
|
import {statisticArea, getColumnOptions} from "@/api/ecology/atmosphere/air";
|
||||||
import { Modal } from "ant-design-vue";
|
import { Modal } from "ant-design-vue";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
@@ -91,7 +91,7 @@ export default {
|
|||||||
title: "二氧化硫", children: [
|
title: "二氧化硫", children: [
|
||||||
{title: "本次", dataIndex: "so2Current",align:"center"},
|
{title: "本次", dataIndex: "so2Current",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -99,7 +99,7 @@ export default {
|
|||||||
title: "二氧化氮", children: [
|
title: "二氧化氮", children: [
|
||||||
{title: "本次", dataIndex: "no2Current",align:"center"},
|
{title: "本次", dataIndex: "no2Current",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -107,15 +107,15 @@ export default {
|
|||||||
title: "可吸入颗粒物", children: [
|
title: "可吸入颗粒物", children: [
|
||||||
{title: "本次", dataIndex: "pm10Current",align:"center"},
|
{title: "本次", dataIndex: "pm10Current",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "一氧化碳", children: [
|
title: "一氧化碳", children: [
|
||||||
{title: "本次", dataIndex: "coCurrent",align:"center"},
|
{title: "本次", dataIndex: "coCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -123,7 +123,7 @@ export default {
|
|||||||
title: "臭氧", children: [
|
title: "臭氧", children: [
|
||||||
{title: "本次", dataIndex: "o3Current",align:"center"},
|
{title: "本次", dataIndex: "o3Current",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -131,7 +131,7 @@ export default {
|
|||||||
title: "细颗粒物", children: [
|
title: "细颗粒物", children: [
|
||||||
{title: "本次", dataIndex: "pm25Current",align:"center"},
|
{title: "本次", dataIndex: "pm25Current",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -139,10 +139,19 @@ export default {
|
|||||||
title: "空气质量综合指数", children: [
|
title: "空气质量综合指数", children: [
|
||||||
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center"},
|
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},/*
|
||||||
|
|
||||||
|
BigDecimal pm25Change = BigDecimal.ZERO;
|
||||||
|
BigDecimal current = ambientAirStatisticalAnalysisExcel.getPm25Current();
|
||||||
|
BigDecimal sameTimeLastYear = ambientAirStatisticalAnalysisExcel.getPm25SameTimeLastYear();
|
||||||
|
BigDecimal subtract = current.subtract(sameTimeLastYear);
|
||||||
|
if(subtract.compareTo(BigDecimal.ZERO) != 0){
|
||||||
|
pm25Change = subtract.multiply(new BigDecimal(100)).divide(sameTimeLastYear,CHANGE_PERCENT_SCALE,ROUNDING_MODE);
|
||||||
|
}
|
||||||
|
*/
|
||||||
{
|
{
|
||||||
title: "优天数", children: [
|
title: "优天数", children: [
|
||||||
{title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
{title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
||||||
|
|||||||
@@ -52,7 +52,7 @@
|
|||||||
<script>
|
<script>
|
||||||
// import _ from "lodash";
|
// import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticAvg, getColumnOptions, listAllAir} from "@/api/ecology/air";
|
import {statisticAvg, getColumnOptions, listAllAir} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
|
|||||||
@@ -4,31 +4,28 @@
|
|||||||
<!-- 搜索表单 -->
|
<!-- 搜索表单 -->
|
||||||
<a-form
|
<a-form
|
||||||
:model="where"
|
:model="where"
|
||||||
layout="vertical"
|
layout="inline"
|
||||||
:label-col="{ md: { span: 6 }, sm: { span: 24 } }"
|
|
||||||
:wrapper-col="{ md: { span: 18 }, sm: { span: 24 } }"
|
|
||||||
>
|
>
|
||||||
<a-row>
|
<a-form-item label="起始日期:">
|
||||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||||
<a-form-item label="时间范围:">
|
</a-form-item>
|
||||||
<a-range-picker v-model:value="time"/>
|
<a-form-item label="结束日期:">
|
||||||
</a-form-item>
|
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||||
</a-col>
|
</a-form-item>
|
||||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
<a-form-item label="起始时间:">
|
||||||
|
|
||||||
|
</a-form-item>
|
||||||
<a-form-item label="区域等级:">
|
<a-form-item label="区域等级:">
|
||||||
<a-select v-model:value="where.regionLevel" allowClear showSearch>
|
<a-select v-model:value="where.regionLevel" placeholder="选择区域等级" allowClear showSearch>
|
||||||
<a-select-option
|
<a-select-option
|
||||||
v-for="(item) in regionLevelOptions"
|
v-for="(item) in regionLevelOptions"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
>{{ item.label }}
|
>{{ item.label }}
|
||||||
</a-select-option
|
</a-select-option>
|
||||||
>
|
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
|
||||||
<a-col :lg="6" :md="12" :sm="24" :xs="24">
|
|
||||||
<a-form-item label="监测点:">
|
<a-form-item label="监测点:">
|
||||||
<a-select v-model:value="where.place" allowClear showSearch>
|
<a-select v-model:value="where.place" placeholder="选择监测点" allowClear showSearch>
|
||||||
<a-select-option
|
<a-select-option
|
||||||
v-for="(item) in placeOptions"
|
v-for="(item) in placeOptions"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
@@ -37,17 +34,12 @@
|
|||||||
>
|
>
|
||||||
</a-select>
|
</a-select>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
<a-row>
|
|
||||||
<a-col :lg="24" :md="24" :sm="24" :xs="24">
|
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="primary" @click="reload">查询</a-button>
|
<a-button type="primary" @click="reload">查询</a-button>
|
||||||
<a-button @click="reset">重置</a-button>
|
<a-button @click="reset">重置</a-button>
|
||||||
<a-button @click="exportFile">导出Excel</a-button>
|
<a-button @click="exportFile">导出Excel</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</a-form>
|
</a-form>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<ele-pro-table
|
<ele-pro-table
|
||||||
@@ -59,6 +51,7 @@
|
|||||||
:where="where"
|
:where="where"
|
||||||
:scroll="{ x: 'max-content' }"
|
:scroll="{ x: 'max-content' }"
|
||||||
@done="(d) => (data = d.data)"
|
@done="(d) => (data = d.data)"
|
||||||
|
:init-load="false"
|
||||||
>
|
>
|
||||||
|
|
||||||
</ele-pro-table>
|
</ele-pro-table>
|
||||||
@@ -70,7 +63,7 @@
|
|||||||
<script>
|
<script>
|
||||||
// import _ from "lodash";
|
// import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {pageAirUrl, getColumnOptions, listAllAir} from "@/api/ecology/air";
|
import {pageAirUrl, getColumnOptions, listAllAir} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
@@ -78,6 +71,7 @@ export default {
|
|||||||
name: "StatisticAirBase",
|
name: "StatisticAirBase",
|
||||||
components: {},
|
components: {},
|
||||||
data() {
|
data() {
|
||||||
|
const year = new Date().getFullYear();
|
||||||
return {
|
return {
|
||||||
data: [],
|
data: [],
|
||||||
locale,
|
locale,
|
||||||
@@ -91,7 +85,7 @@ export default {
|
|||||||
title: "监测日期",
|
title: "监测日期",
|
||||||
dataIndex: "monitorTime",
|
dataIndex: "monitorTime",
|
||||||
sorter: true,
|
sorter: true,
|
||||||
customRender: ({text}) => moment(text).format("YYYY-MM-DD HH:mm")
|
customRender: ({text}) => moment(text).format("YYYY-MM-DD")
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "城市",
|
title: "城市",
|
||||||
@@ -175,6 +169,8 @@ export default {
|
|||||||
// 表格搜索条件
|
// 表格搜索条件
|
||||||
where: {
|
where: {
|
||||||
checked: 1,
|
checked: 1,
|
||||||
|
timeStart: moment(`${year}-01-01 00:00:00`).format("YYYY-MM-DD 00:00:00"),
|
||||||
|
timeEnd: moment().format("YYYY-MM-DD 23:59:59")
|
||||||
},
|
},
|
||||||
// 表格选中数据
|
// 表格选中数据
|
||||||
selectionList: [],
|
selectionList: [],
|
||||||
@@ -182,6 +178,7 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.loadOptionData();
|
this.loadOptionData();
|
||||||
|
this.reload();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
/**获取下来框数据 */
|
/**获取下来框数据 */
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeStart"></a-date-picker>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="结束日期:">
|
<a-form-item label="结束日期:">
|
||||||
<a-date-picker valueFormat="YYYY-MM-DD 00:00:00" v-model:value="where.timeEnd"></a-date-picker>
|
<a-date-picker valueFormat="YYYY-MM-DD 23:59:59" v-model:value="where.timeEnd"></a-date-picker>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="primary" @click="reload">查询</a-button>
|
<a-button type="primary" @click="reload">查询</a-button>
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import _ from "lodash";
|
import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import {statisticUrl, getColumnOptions,statisticArea} from "@/api/ecology/air";
|
import {statisticUrl, getColumnOptions,statisticArea} from "@/api/ecology/atmosphere/air";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
import moment from "moment";
|
||||||
|
|
||||||
@@ -77,115 +77,115 @@ export default {
|
|||||||
],
|
],
|
||||||
// 表格列配置
|
// 表格列配置
|
||||||
columns: [
|
columns: [
|
||||||
{title: "站点/县", dataIndex: "place",align:"center"},
|
{title: "站点/县", dataIndex: "place",align:"center",fixed: "left",},
|
||||||
{
|
{
|
||||||
title: "二氧化硫", children: [
|
title: "二氧化硫", children: [
|
||||||
{title: "本次", dataIndex: "so2Current",align:"center"},
|
{title: "本次", dataIndex: "so2Current",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "so2SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "so2ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "so2Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "二氧化氮", children: [
|
title: "二氧化氮", children: [
|
||||||
{title: "本次", dataIndex: "no2Current",align:"center"},
|
{title: "本次", dataIndex: "no2Current",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "no2SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "增减(%)", dataIndex: "no2ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "no2ChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "no2Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "可吸入颗粒物", children: [
|
title: "可吸入颗粒物", children: [
|
||||||
{title: "本次", dataIndex: "pm10Current",align:"center"},
|
{title: "本次", dataIndex: "pm10Current",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "pm10SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "增减(%)", dataIndex: "pm10ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "pm10ChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "pm10Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "一氧化碳", children: [
|
title: "一氧化碳", children: [
|
||||||
{title: "本次", dataIndex: "coCurrent",align:"center"},
|
{title: "本次", dataIndex: "coCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "coSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "coChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "coRank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "臭氧", children: [
|
title: "臭氧", children: [
|
||||||
{title: "本次", dataIndex: "o3Current",align:"center"},
|
{title: "本次", dataIndex: "o3Current",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "o3SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "o3ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "o3Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "细颗粒物", children: [
|
title: "细颗粒物", children: [
|
||||||
{title: "本次", dataIndex: "pm25Current",align:"center"},
|
{title: "本次", dataIndex: "pm25Current",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "pm25SameTimeLastYear",align:"center",customRender:({text})=>text + ""},
|
||||||
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "pm25ChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "pm25Rank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "空气质量综合指数", children: [
|
title: "综合指数", children: [
|
||||||
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center"},
|
{title: "本次", dataIndex: "comprehensiveAirQualityIndexCurrent",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(2)+"":""},
|
||||||
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "comprehensiveAirQualityIndexSameTimeLastYear",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(2)+"":""},
|
||||||
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "comprehensiveAirQualityIndexChangePercentage",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
{title: "排名(按浓度值)", dataIndex: "comprehensiveAirQualityIndexRank",align:"center"},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
// {
|
||||||
title: "优天数", children: [
|
// title: "优天数", children: [
|
||||||
{title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "excellentDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "excellentDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "excellentDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "excellentDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "excellentDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
// {title: "排名(按浓度值)", dataIndex: "excellentDaysRank",align:"center"},
|
// // {title: "排名(按浓度值)", dataIndex: "excellentDaysRank",align:"center"},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "良天数", children: [
|
// title: "良天数", children: [
|
||||||
{title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
// {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
// // {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "轻度污染天数", children: [
|
// title: "轻度污染天数", children: [
|
||||||
{title: "本次", dataIndex: "lightPollutionDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "lightPollutionDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "lightPollutionDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "lightPollutionDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "lightPollutionDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "lightPollutionDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
// {title: "排名(按浓度值)", dataIndex: "lightPollutionDaysRank",align:"center"},
|
// // {title: "排名(按浓度值)", dataIndex: "lightPollutionDaysRank",align:"center"},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "中度污染天数", children: [
|
// title: "中度污染天数", children: [
|
||||||
{title: "本次", dataIndex: "moderatelyPollutedDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "moderatelyPollutedDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "moderatelyPollutedDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "moderatelyPollutedDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "moderatelyPollutedDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "moderatelyPollutedDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
// {title: "排名(按浓度值)", dataIndex: "moderatelyPollutedDaysRank",align:"center"},
|
// // {title: "排名(按浓度值)", dataIndex: "moderatelyPollutedDaysRank",align:"center"},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "良天数", children: [
|
// title: "良天数", children: [
|
||||||
{title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "goodDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "goodDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "goodDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
// {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
// // {title: "排名(按浓度值)", dataIndex: "goodDaysRank",align:"center"},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
// {
|
||||||
title: "重度污染天数", children: [
|
// title: "重度污染天数", children: [
|
||||||
{title: "本次", dataIndex: "heavyPollutionDaysCurrent",align:"center"},
|
// {title: "本次", dataIndex: "heavyPollutionDaysCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "heavyPollutionDaysSameTimeLastYear",align:"center"},
|
// {title: "上年同期", dataIndex: "heavyPollutionDaysSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "heavyPollutionDaysChangePercentage",align:"center"},
|
// {title: "增减(%)", dataIndex: "heavyPollutionDaysChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
]
|
// ]
|
||||||
},
|
// },
|
||||||
{
|
{
|
||||||
title: "优良率", children: [
|
title: "优良率", children: [
|
||||||
{title: "本次", dataIndex: "excellentRateCurrent",align:"center"},
|
{title: "本次", dataIndex: "excellentRateCurrent",align:"center"},
|
||||||
{title: "上年同期", dataIndex: "excellentRateSameTimeLastYear",align:"center"},
|
{title: "上年同期", dataIndex: "excellentRateSameTimeLastYear",align:"center"},
|
||||||
{title: "增减(%)", dataIndex: "excellentRateChangePercentage",align:"center"},
|
{title: "增减(%)", dataIndex: "excellentRateChangePercentage",align:"center",customRender:({text})=> typeof text == "number"?text.toFixed(1)+"":""},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activeKey: 'area'
|
activeKey: 'ccp'
|
||||||
};
|
};
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -246,7 +246,7 @@
|
|||||||
},
|
},
|
||||||
detail(record) {
|
detail(record) {
|
||||||
this.$router.replace({
|
this.$router.replace({
|
||||||
path: "/sound/function/collect/noise/" + record.functionNoiseBillId
|
path: "/sound/acid/collect/noise/" + record.functionNoiseBillId
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
|
|||||||
@@ -245,7 +245,7 @@
|
|||||||
},
|
},
|
||||||
detail(record) {
|
detail(record) {
|
||||||
this.$router.replace({
|
this.$router.replace({
|
||||||
path: "/sound/zone/collect/noise/" + record.zoneNoiseBillId
|
path: "/sound/air/collect/noise/" + record.zoneNoiseBillId
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
|
|||||||
168
src/views/visualiz/atmosphere/acid/index.vue
Normal file
168
src/views/visualiz/atmosphere/acid/index.vue
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
<template>
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card class="ele-card" :bordered="false">
|
||||||
|
<a-space>
|
||||||
|
<a-select @change="whereChange" v-model:value="where.year">
|
||||||
|
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||||
|
item.label
|
||||||
|
}}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||||
|
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||||
|
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||||
|
</a-space>
|
||||||
|
</a-card>
|
||||||
|
<div id="map"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||||
|
import { GaodeMap } from "@antv/l7-maps";
|
||||||
|
import {
|
||||||
|
getPlaceGis,
|
||||||
|
} from "@/api/ecology/atmosphere/acid";
|
||||||
|
import {
|
||||||
|
getColumnOptions,
|
||||||
|
} from "@/api/ecology/atmosphere/acid-rain-plcae";
|
||||||
|
let scene = null;
|
||||||
|
let pointLayer = null;
|
||||||
|
let cityLayer = null;
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
yearOptions: [],
|
||||||
|
where: {
|
||||||
|
regionLevel: "市级",
|
||||||
|
year: "选择年份",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
scene = new Scene({
|
||||||
|
id: "map",
|
||||||
|
map: new GaodeMap({
|
||||||
|
style: "light",
|
||||||
|
center: [108.33, 22.84],
|
||||||
|
// pitch: 48.62562,
|
||||||
|
// rotation: -0.76,
|
||||||
|
zoom: 12,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
scene.on("loaded", () => {
|
||||||
|
this.initData();
|
||||||
|
});
|
||||||
|
|
||||||
|
// const control = new DrawControl(scene, {
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
getColumnOptions("year").then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
this.yearOptions = res.data.data.map((item) => {
|
||||||
|
return {
|
||||||
|
label: item,
|
||||||
|
value: item,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this.where.year = res.data.data[res.data.data.length - 1];
|
||||||
|
this.whereChange();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setPlaceData() {},
|
||||||
|
whereChange() {
|
||||||
|
if(scene && pointLayer){
|
||||||
|
scene.removeLayer(pointLayer)
|
||||||
|
}
|
||||||
|
getPlaceGis(this.where).then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
if(cityLayer){
|
||||||
|
cityLayer.destroy()
|
||||||
|
scene.removeLayer(cityLayer)
|
||||||
|
}
|
||||||
|
pointLayer = new PointLayer({})
|
||||||
|
.source(res.data.data, {
|
||||||
|
parser: {
|
||||||
|
type: "json",
|
||||||
|
x: "longitude",
|
||||||
|
y: "latitude",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.shape('circle').size(10)
|
||||||
|
// .size("leq", acid (level) {
|
||||||
|
// return [4, 4, level];
|
||||||
|
// })
|
||||||
|
.active(true)
|
||||||
|
.color("leq", () => {
|
||||||
|
// const { timeSlot } = this.where;
|
||||||
|
// const color =
|
||||||
|
// timeSlot == "昼"
|
||||||
|
// ? leq > 70
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2"
|
||||||
|
// : leq > 65
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2";
|
||||||
|
return "#13c2c2";
|
||||||
|
})
|
||||||
|
.style({
|
||||||
|
opacity: 1,
|
||||||
|
});
|
||||||
|
pointLayer.on("mousemove", (e) => {
|
||||||
|
const popup = new Popup({
|
||||||
|
offsets: [0, 0],
|
||||||
|
closeButton: false,
|
||||||
|
})
|
||||||
|
.setLnglat(e.lngLat)
|
||||||
|
.setHTML(
|
||||||
|
`<p>点位名称: ${e.feature.place}</p><p>点位编号: ${e.feature.placeCode}</p><p>点位属性: ${e.feature.attribute}</p><p>ph: ${e.feature.ph}</p>`
|
||||||
|
);
|
||||||
|
scene.addPopup(popup);
|
||||||
|
});
|
||||||
|
pointLayer.setData(res.data.data);
|
||||||
|
scene.addLayer(pointLayer);
|
||||||
|
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||||
|
// scene.setPitch(48);
|
||||||
|
scene.render()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getAreaData() {},
|
||||||
|
exportMap(){
|
||||||
|
console.log("exportMap");
|
||||||
|
scene.exportMap("png");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.ele-body {
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
.ele-card {
|
||||||
|
z-index: 10;
|
||||||
|
margin: 0 16px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
170
src/views/visualiz/atmosphere/air/index.vue
Normal file
170
src/views/visualiz/atmosphere/air/index.vue
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
<template>
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card class="ele-card" :bordered="false">
|
||||||
|
<a-space>
|
||||||
|
<a-select @change="whereChange" v-model:value="where.year">
|
||||||
|
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||||
|
item.label
|
||||||
|
}}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||||
|
<a-radio-button value="city"> 市级 </a-radio-button>
|
||||||
|
<a-radio-button value="county"> 县级 </a-radio-button>
|
||||||
|
<a-radio-button value="place"> 站点 </a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||||
|
</a-space>
|
||||||
|
</a-card>
|
||||||
|
<div id="map"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||||
|
import { GaodeMap } from "@antv/l7-maps";
|
||||||
|
import {
|
||||||
|
getPlaceGis,
|
||||||
|
} from "@/api/ecology/atmosphere/air";
|
||||||
|
import {
|
||||||
|
getColumnOptions,
|
||||||
|
} from "@/api/ecology/atmosphere/air-plcae";
|
||||||
|
let scene = null;
|
||||||
|
let pointLayer = null;
|
||||||
|
let cityLayer = null;
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
yearOptions: [],
|
||||||
|
where: {
|
||||||
|
regionLevel: "place",
|
||||||
|
year: "选择年份",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
scene = new Scene({
|
||||||
|
id: "map",
|
||||||
|
map: new GaodeMap({
|
||||||
|
style: "light",
|
||||||
|
center: [108.33, 22.84],
|
||||||
|
// pitch: 48.62562,
|
||||||
|
// rotation: -0.76,
|
||||||
|
zoom: 12,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
scene.on("loaded", () => {
|
||||||
|
this.initData();
|
||||||
|
});
|
||||||
|
|
||||||
|
// const control = new DrawControl(scene, {
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
getColumnOptions("year").then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
this.yearOptions = res.data.data.map((item) => {
|
||||||
|
return {
|
||||||
|
label: item,
|
||||||
|
value: item,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this.where.year = res.data.data[res.data.data.length - 1];
|
||||||
|
this.whereChange();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setPlaceData() {},
|
||||||
|
whereChange() {
|
||||||
|
if(scene && pointLayer){
|
||||||
|
scene.removeLayer(pointLayer)
|
||||||
|
}
|
||||||
|
getPlaceGis(this.where).then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
if(cityLayer){
|
||||||
|
cityLayer.destroy()
|
||||||
|
scene.removeLayer(cityLayer)
|
||||||
|
}
|
||||||
|
pointLayer = new PointLayer({})
|
||||||
|
.source(res.data.data, {
|
||||||
|
parser: {
|
||||||
|
type: "json",
|
||||||
|
x: "longitude",
|
||||||
|
y: "latitude",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.shape('circle').size(10)
|
||||||
|
// .size("leq", acid (level) {
|
||||||
|
// return [4, 4, level];
|
||||||
|
// })
|
||||||
|
.active(true)
|
||||||
|
.color("leq", () => {
|
||||||
|
// const { timeSlot } = this.where;
|
||||||
|
// const color =
|
||||||
|
// timeSlot == "昼"
|
||||||
|
// ? leq > 70
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2"
|
||||||
|
// : leq > 65
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2";
|
||||||
|
return "#13c2c2";
|
||||||
|
})
|
||||||
|
.style({
|
||||||
|
opacity: 1,
|
||||||
|
});
|
||||||
|
pointLayer.on("mousemove", (e) => {
|
||||||
|
const popup = new Popup({
|
||||||
|
offsets: [0, 0],
|
||||||
|
closeButton: false,
|
||||||
|
})
|
||||||
|
.setLnglat(e.lngLat)
|
||||||
|
.setHTML(
|
||||||
|
`<p>点位名称: ${e.feature.place}</p><p>点位属性: ${e.feature.attributes}</p><p>片区名称: ${e.feature.districtName}</p><p>所在功能区类别: ${e.feature.placeFunctionalAreaCategory}</p>
|
||||||
|
<p>SO2: ${e.feature.avgSo2} NO2: ${e.feature.avgNo2}</p><p>PM10: ${e.feature.avgPm10} CO: ${e.feature.avgCo}</p><p>O3: ${e.feature.avgO3} PM2.5: ${e.feature.avgPm25}</p>`
|
||||||
|
);
|
||||||
|
scene.addPopup(popup);
|
||||||
|
});
|
||||||
|
pointLayer.setData(res.data.data);
|
||||||
|
scene.addLayer(pointLayer);
|
||||||
|
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||||
|
// scene.setPitch(48);
|
||||||
|
scene.render()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getAreaData() {},
|
||||||
|
exportMap(){
|
||||||
|
console.log("exportMap");
|
||||||
|
scene.exportMap("png");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.ele-body {
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
.ele-card {
|
||||||
|
z-index: 10;
|
||||||
|
margin: 0 16px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -4,12 +4,18 @@
|
|||||||
<a-space>
|
<a-space>
|
||||||
<a-select @change="whereChange" v-model:value="where.monitorYear">
|
<a-select @change="whereChange" v-model:value="where.monitorYear">
|
||||||
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||||
item.label
|
item.label
|
||||||
}}</a-select-option>
|
}}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-radio-group @change="whereChange" v-model:value="where.type">
|
<a-select v-model:value="where.quarter" placeholder="季度" allowClear>
|
||||||
<a-radio-button value="place"> 点位 </a-radio-button>
|
<a-select-option value="1">第一季度</a-select-option>
|
||||||
<a-radio-button value="area"> 城区 </a-radio-button>
|
<a-select-option value="2">第二季度</a-select-option>
|
||||||
|
<a-select-option value="3">第三季度</a-select-option>
|
||||||
|
<a-select-option value="4">第四季度</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||||
|
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||||
|
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||||
<a-radio-button value="昼">昼</a-radio-button>
|
<a-radio-button value="昼">昼</a-radio-button>
|
||||||
@@ -25,11 +31,9 @@
|
|||||||
// import axios from "axios";
|
// import axios from "axios";
|
||||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||||
// import { DrawControl } from '@antv/l7-draw';
|
// import { DrawControl } from '@antv/l7-draw';
|
||||||
import { CityLayer } from "@antv/l7-district";
|
|
||||||
import { GaodeMap } from "@antv/l7-maps";
|
import { GaodeMap } from "@antv/l7-maps";
|
||||||
import {
|
import {
|
||||||
getGisBase,
|
getPlaceGis,
|
||||||
getGisArea,
|
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
} from "@/api/ecology/noise/function-sound";
|
} from "@/api/ecology/noise/function-sound";
|
||||||
let scene = null;
|
let scene = null;
|
||||||
@@ -41,7 +45,8 @@ export default {
|
|||||||
yearOptions: [],
|
yearOptions: [],
|
||||||
where: {
|
where: {
|
||||||
timeSlot: "昼",
|
timeSlot: "昼",
|
||||||
type: "area",
|
regionLevel: "市级",
|
||||||
|
quarter: undefined,
|
||||||
monitorYear: "选择年份",
|
monitorYear: "选择年份",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -82,37 +87,39 @@ export default {
|
|||||||
},
|
},
|
||||||
setPlaceData() {},
|
setPlaceData() {},
|
||||||
whereChange() {
|
whereChange() {
|
||||||
if (this.where.type == "place") {
|
if(scene && pointLayer){
|
||||||
getGisBase(this.where).then((res) => {
|
scene.removeLayer(pointLayer)
|
||||||
|
}
|
||||||
|
getPlaceGis(this.where).then((res) => {
|
||||||
if (res.data.code == 0) {
|
if (res.data.code == 0) {
|
||||||
if(cityLayer){
|
if(cityLayer){
|
||||||
cityLayer.destroy()
|
cityLayer.destroy()
|
||||||
scene.removeLayer(cityLayer)
|
scene.removeLayer(cityLayer)
|
||||||
}
|
}
|
||||||
pointLayer = new PointLayer({})
|
pointLayer = new PointLayer({})
|
||||||
.source(res.data.data, {
|
.source(res.data.data, {
|
||||||
parser: {
|
parser: {
|
||||||
type: "json",
|
type: "json",
|
||||||
x: "lng",
|
x: "placeLng",
|
||||||
y: "lat",
|
y: "placeLat",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.shape("cylinder")
|
.shape('triangle').size(10)
|
||||||
.size("leq", function (level) {
|
// .size("leq", acid (level) {
|
||||||
return [4, 4, level];
|
// return [4, 4, level];
|
||||||
})
|
// })
|
||||||
.active(true)
|
.active(true)
|
||||||
.color("leq", (leq) => {
|
.color("leq", () => {
|
||||||
const { timeSlot } = this.where;
|
// const { timeSlot } = this.where;
|
||||||
const color =
|
// const color =
|
||||||
timeSlot == "昼"
|
// timeSlot == "昼"
|
||||||
? leq > 70
|
// ? leq > 70
|
||||||
? "#f5222d"
|
// ? "#f5222d"
|
||||||
: "#13c2c2"
|
// : "#13c2c2"
|
||||||
: leq > 65
|
// : leq > 65
|
||||||
? "#f5222d"
|
// ? "#f5222d"
|
||||||
: "#13c2c2";
|
// : "#13c2c2";
|
||||||
return color;
|
return "#13c2c2";
|
||||||
})
|
})
|
||||||
.style({
|
.style({
|
||||||
opacity: 1,
|
opacity: 1,
|
||||||
@@ -124,67 +131,18 @@ export default {
|
|||||||
})
|
})
|
||||||
.setLnglat(e.lngLat)
|
.setLnglat(e.lngLat)
|
||||||
.setHTML(
|
.setHTML(
|
||||||
`<span>${e.feature.place}: ${e.feature.leq}dB(A)</span>`
|
`<p>点位名称: ${e.feature.placeName}</p><p>点位等级: ${e.feature.regionLevel}</p><p>功能区代码: ${e.feature.functionCode}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||||
);
|
);
|
||||||
scene.addPopup(popup);
|
scene.addPopup(popup);
|
||||||
});
|
});
|
||||||
pointLayer.setData(res.data.data);
|
pointLayer.setData(res.data.data);
|
||||||
scene.addLayer(pointLayer);
|
scene.addLayer(pointLayer);
|
||||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||||
scene.setPitch(48);
|
// scene.setPitch(48);
|
||||||
scene.render()
|
scene.render()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
getGisArea(this.where).then((res) => {
|
|
||||||
if (res.data.code == 0) {
|
|
||||||
if(pointLayer){
|
|
||||||
pointLayer.destroy()
|
|
||||||
scene.removeLayer(pointLayer)
|
|
||||||
}
|
|
||||||
cityLayer = new CityLayer(scene, {
|
|
||||||
data: res.data.data,
|
|
||||||
joinBy: ["adcode", "regionCode"],
|
|
||||||
adcode: ["450000", "450100"],
|
|
||||||
depth: 3,
|
|
||||||
visible: true,
|
|
||||||
label: {
|
|
||||||
field: "NAME_CHN",
|
|
||||||
textAllowOverlap: false,
|
|
||||||
},
|
|
||||||
fill: {
|
|
||||||
color: {
|
|
||||||
field: "leq",
|
|
||||||
values: (leq) => {
|
|
||||||
if(!leq){
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const { timeSlot } = this.where;
|
|
||||||
const color =
|
|
||||||
timeSlot == "昼"
|
|
||||||
? leq > 70
|
|
||||||
? "#f50"
|
|
||||||
: "#2db7f5"
|
|
||||||
: leq > 65
|
|
||||||
? "#f50"
|
|
||||||
: "#2db7f5";
|
|
||||||
return color;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
popup: {
|
|
||||||
enable: true,
|
|
||||||
triggerEvent: "mousemove",
|
|
||||||
Html: (props) => {
|
|
||||||
return `<span>${props.NAME_CHN}:</span><span>${props.leq + "dB(A)" || "无"}</span>`;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
scene.setPitch(0);
|
|
||||||
// scene.setZoomAndCenter(12, [108.33, 22.84]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
getAreaData() {},
|
getAreaData() {},
|
||||||
exportMap(){
|
exportMap(){
|
||||||
|
|||||||
@@ -7,9 +7,9 @@
|
|||||||
item.label
|
item.label
|
||||||
}}</a-select-option>
|
}}</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
<a-radio-group @change="whereChange" v-model:value="where.type">
|
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||||
<a-radio-button value="place"> 点位 </a-radio-button>
|
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||||
<a-radio-button value="area"> 城区 </a-radio-button>
|
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||||
<a-radio-button value="昼">昼</a-radio-button>
|
<a-radio-button value="昼">昼</a-radio-button>
|
||||||
@@ -25,11 +25,9 @@
|
|||||||
// import axios from "axios";
|
// import axios from "axios";
|
||||||
import { Scene, PointLayer, Popup } from "@antv/l7";
|
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||||
// import { DrawControl } from '@antv/l7-draw';
|
// import { DrawControl } from '@antv/l7-draw';
|
||||||
import { CityLayer } from "@antv/l7-district";
|
|
||||||
import { GaodeMap } from "@antv/l7-maps";
|
import { GaodeMap } from "@antv/l7-maps";
|
||||||
import {
|
import {
|
||||||
getGisBase,
|
getGisBase,
|
||||||
getGisArea,
|
|
||||||
getColumnOptions,
|
getColumnOptions,
|
||||||
} from "@/api/ecology/noise/road-sound";
|
} from "@/api/ecology/noise/road-sound";
|
||||||
let scene = null;
|
let scene = null;
|
||||||
@@ -41,7 +39,7 @@ export default {
|
|||||||
yearOptions: [],
|
yearOptions: [],
|
||||||
where: {
|
where: {
|
||||||
timeSlot: "昼",
|
timeSlot: "昼",
|
||||||
type: "area",
|
regionLevel: "市级",
|
||||||
monitorYear: "选择年份",
|
monitorYear: "选择年份",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -82,7 +80,10 @@ export default {
|
|||||||
},
|
},
|
||||||
setPlaceData() {},
|
setPlaceData() {},
|
||||||
whereChange() {
|
whereChange() {
|
||||||
if (this.where.type == "place") {
|
|
||||||
|
if(scene && pointLayer){
|
||||||
|
scene.removeLayer(pointLayer)
|
||||||
|
}
|
||||||
getGisBase(this.where).then((res) => {
|
getGisBase(this.where).then((res) => {
|
||||||
if (res.data.code == 0) {
|
if (res.data.code == 0) {
|
||||||
if(cityLayer){
|
if(cityLayer){
|
||||||
@@ -97,10 +98,10 @@ export default {
|
|||||||
y: "lat",
|
y: "lat",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.shape("cylinder")
|
.shape('hexagon').size(10)
|
||||||
.size("leq", function (level) {
|
// .size("leq", acid (level) {
|
||||||
return [4, 4, level];
|
// return [4, 4, level];
|
||||||
})
|
// })
|
||||||
.active(true)
|
.active(true)
|
||||||
.color("leq", (leq) => {
|
.color("leq", (leq) => {
|
||||||
const { timeSlot } = this.where;
|
const { timeSlot } = this.where;
|
||||||
@@ -124,67 +125,18 @@ export default {
|
|||||||
})
|
})
|
||||||
.setLnglat(e.lngLat)
|
.setLnglat(e.lngLat)
|
||||||
.setHTML(
|
.setHTML(
|
||||||
`<span>${e.feature.place}: ${e.feature.leq}dB(A)</span>`
|
`<p>点位名称: ${e.feature.place}</p><p>点位等级: ${e.feature.regionLevel}</p><p>所属城区: ${e.feature.area}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||||
);
|
);
|
||||||
scene.addPopup(popup);
|
scene.addPopup(popup);
|
||||||
});
|
});
|
||||||
pointLayer.setData(res.data.data);
|
pointLayer.setData(res.data.data);
|
||||||
scene.addLayer(pointLayer);
|
scene.addLayer(pointLayer);
|
||||||
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||||
scene.setPitch(48);
|
// scene.setPitch(48);
|
||||||
scene.render()
|
scene.render()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
|
||||||
getGisArea(this.where).then((res) => {
|
|
||||||
if (res.data.code == 0) {
|
|
||||||
if(pointLayer){
|
|
||||||
pointLayer.destroy()
|
|
||||||
scene.removeLayer(pointLayer)
|
|
||||||
}
|
|
||||||
cityLayer = new CityLayer(scene, {
|
|
||||||
data: res.data.data,
|
|
||||||
joinBy: ["adcode", "regionCode"],
|
|
||||||
adcode: ["450000", "450100"],
|
|
||||||
depth: 3,
|
|
||||||
visible: true,
|
|
||||||
label: {
|
|
||||||
field: "NAME_CHN",
|
|
||||||
textAllowOverlap: false,
|
|
||||||
},
|
|
||||||
fill: {
|
|
||||||
color: {
|
|
||||||
field: "leq",
|
|
||||||
values: (leq) => {
|
|
||||||
if(!leq){
|
|
||||||
return
|
|
||||||
}
|
|
||||||
const { timeSlot } = this.where;
|
|
||||||
const color =
|
|
||||||
timeSlot == "昼"
|
|
||||||
? leq > 70
|
|
||||||
? "#f50"
|
|
||||||
: "#2db7f5"
|
|
||||||
: leq > 65
|
|
||||||
? "#f50"
|
|
||||||
: "#2db7f5";
|
|
||||||
return color;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
popup: {
|
|
||||||
enable: true,
|
|
||||||
triggerEvent: "mousemove",
|
|
||||||
Html: (props) => {
|
|
||||||
return `<span>${props.NAME_CHN}:</span><span>${props.leq + "dB(A)" || "无"}</span>`;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
scene.setPitch(0);
|
|
||||||
// scene.setZoomAndCenter(12, [108.33, 22.84]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
getAreaData() {},
|
getAreaData() {},
|
||||||
exportMap(){
|
exportMap(){
|
||||||
|
|||||||
171
src/views/visualiz/sound/zone/index.vue
Normal file
171
src/views/visualiz/sound/zone/index.vue
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
<template>
|
||||||
|
<div class="ele-body">
|
||||||
|
<a-card class="ele-card" :bordered="false">
|
||||||
|
<a-space>
|
||||||
|
<a-select @change="whereChange" v-model:value="where.monitorYear">
|
||||||
|
<a-select-option v-for="item in yearOptions" :key="item.value">{{
|
||||||
|
item.label
|
||||||
|
}}</a-select-option>
|
||||||
|
</a-select>
|
||||||
|
<a-radio-group @change="whereChange" v-model:value="where.regionLevel">
|
||||||
|
<a-radio-button value="市级"> 市级 </a-radio-button>
|
||||||
|
<a-radio-button value="县级"> 县级 </a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
<a-radio-group @change="whereChange" v-model:value="where.timeSlot">
|
||||||
|
<a-radio-button value="昼">昼</a-radio-button>
|
||||||
|
<a-radio-button value="夜">夜</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
<!-- <a-button @click="exportMap">导出</a-button> -->
|
||||||
|
</a-space>
|
||||||
|
</a-card>
|
||||||
|
<div id="map"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { Scene, PointLayer, Popup } from "@antv/l7";
|
||||||
|
import { GaodeMap } from "@antv/l7-maps";
|
||||||
|
import {
|
||||||
|
getPlaceGis,
|
||||||
|
getColumnOptions,
|
||||||
|
} from "@/api/ecology/noise/zone-sound";
|
||||||
|
let scene = null;
|
||||||
|
let pointLayer = null;
|
||||||
|
let cityLayer = null;
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
yearOptions: [],
|
||||||
|
where: {
|
||||||
|
timeSlot: "昼",
|
||||||
|
regionLevel: "市级",
|
||||||
|
monitorYear: "选择年份",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
scene = new Scene({
|
||||||
|
id: "map",
|
||||||
|
map: new GaodeMap({
|
||||||
|
style: "light",
|
||||||
|
center: [108.33, 22.84],
|
||||||
|
// pitch: 48.62562,
|
||||||
|
// rotation: -0.76,
|
||||||
|
zoom: 12,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
scene.on("loaded", () => {
|
||||||
|
this.initData();
|
||||||
|
});
|
||||||
|
|
||||||
|
// const control = new DrawControl(scene, {
|
||||||
|
// });
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
initData() {
|
||||||
|
getColumnOptions("monitor_year").then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
this.yearOptions = res.data.data.map((item) => {
|
||||||
|
return {
|
||||||
|
label: item,
|
||||||
|
value: item,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
this.where.monitorYear = res.data.data[res.data.data.length - 1];
|
||||||
|
this.whereChange();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setPlaceData() {},
|
||||||
|
whereChange() {
|
||||||
|
if(scene && pointLayer){
|
||||||
|
scene.removeLayer(pointLayer)
|
||||||
|
}
|
||||||
|
getPlaceGis(this.where).then((res) => {
|
||||||
|
if (res.data.code == 0) {
|
||||||
|
if(cityLayer){
|
||||||
|
cityLayer.destroy()
|
||||||
|
scene.removeLayer(cityLayer)
|
||||||
|
}
|
||||||
|
pointLayer = new PointLayer({})
|
||||||
|
.source(res.data.data, {
|
||||||
|
parser: {
|
||||||
|
type: "json",
|
||||||
|
x: "placeLng",
|
||||||
|
y: "placeLat",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.shape('square').size(10)
|
||||||
|
// .size("leq", acid (level) {
|
||||||
|
// return [4, 4, level];
|
||||||
|
// })
|
||||||
|
.active(true)
|
||||||
|
.color("leq", () => {
|
||||||
|
// const { timeSlot } = this.where;
|
||||||
|
// const color =
|
||||||
|
// timeSlot == "昼"
|
||||||
|
// ? leq > 70
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2"
|
||||||
|
// : leq > 65
|
||||||
|
// ? "#f5222d"
|
||||||
|
// : "#13c2c2";
|
||||||
|
return "#13c2c2";
|
||||||
|
})
|
||||||
|
.style({
|
||||||
|
opacity: 1,
|
||||||
|
});
|
||||||
|
pointLayer.on("mousemove", (e) => {
|
||||||
|
const popup = new Popup({
|
||||||
|
offsets: [0, 0],
|
||||||
|
closeButton: false,
|
||||||
|
})
|
||||||
|
.setLnglat(e.lngLat)
|
||||||
|
.setHTML(
|
||||||
|
`<p>点位名称: ${e.feature.placeName}</p><p>点位等级: ${e.feature.regionLevel}</p><p>网格边长: ${e.feature.gridLength}</p><p>所属路段: ${e.feature.road}</p><p>噪声: ${e.feature.leq}dB(A)</p>`
|
||||||
|
);
|
||||||
|
scene.addPopup(popup);
|
||||||
|
});
|
||||||
|
pointLayer.setData(res.data.data);
|
||||||
|
scene.addLayer(pointLayer);
|
||||||
|
scene.setZoomAndCenter(12, [108.33, 22.84]);
|
||||||
|
// scene.setPitch(48);
|
||||||
|
scene.render()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getAreaData() {},
|
||||||
|
exportMap(){
|
||||||
|
console.log("exportMap");
|
||||||
|
scene.exportMap("png");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body {
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.ele-body {
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
padding: 16px 0;
|
||||||
|
}
|
||||||
|
.ele-card {
|
||||||
|
z-index: 10;
|
||||||
|
margin: 0 16px;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
#map {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -51,9 +51,9 @@
|
|||||||
<script>
|
<script>
|
||||||
// import _ from "lodash";
|
// import _ from "lodash";
|
||||||
import XLSX from "xlsx";
|
import XLSX from "xlsx";
|
||||||
import { pageZoneNoiseUrl, getColumnOptions ,listAllRiver} from "@/api/ecology/river";
|
import { pageZoneNoiseUrl, getColumnOptions } from "@/api/ecology/river";
|
||||||
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
import locale from "ant-design-vue/es/date-picker/locale/zh_CN";
|
||||||
import moment from "moment";
|
// import moment from "moment";
|
||||||
// import utils from "./utils";
|
// import utils from "./utils";
|
||||||
export default {
|
export default {
|
||||||
name: "StatisticRiverIndex",
|
name: "StatisticRiverIndex",
|
||||||
|
|||||||
@@ -222,7 +222,7 @@
|
|||||||
},
|
},
|
||||||
detail(record) {
|
detail(record) {
|
||||||
this.$router.replace({
|
this.$router.replace({
|
||||||
path: "/water/river/function/collect/water/" + record.nationalLevelWaterFunctionAreaBillId
|
path: "/water/river/acid/collect/water/" + record.nationalLevelWaterFunctionAreaBillId
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
edit(record) {
|
edit(record) {
|
||||||
|
|||||||
Reference in New Issue
Block a user