Ver Fonte

新增运行状态统计20210714

fanghuisheng há 4 anos atrás
pai
commit
019ecf5de6

BIN
dist.zip


+ 251 - 198
package-lock.json

@@ -2885,6 +2885,15 @@
         "file-uri-to-path": "1.0.0"
       }
     },
+    "block-stream": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
+      "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.0"
+      }
+    },
     "bluebird": {
       "version": "3.7.2",
       "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1594334909881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
@@ -3275,7 +3284,7 @@
     },
     "camelcase-keys": {
       "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
+      "resolved": "https://registry.nlark.com/camelcase-keys/download/camelcase-keys-2.1.0.tgz?cache=0&sync_timestamp=1624608993530&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcamelcase-keys%2Fdownload%2Fcamelcase-keys-2.1.0.tgz",
       "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
       "dev": true,
       "requires": {
@@ -3285,7 +3294,7 @@
       "dependencies": {
         "camelcase": {
           "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz?cache=0&sync_timestamp=1603921799543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-2.1.1.tgz",
+          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz",
           "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
           "dev": true
         }
@@ -3622,6 +3631,28 @@
       "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
       "dev": true
     },
+    "clone-deep": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz",
+      "integrity": "sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=",
+      "dev": true,
+      "requires": {
+        "is-plain-object": "^2.0.4",
+        "kind-of": "^6.0.2",
+        "shallow-clone": "^3.0.0"
+      },
+      "dependencies": {
+        "is-plain-object": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+          "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+          "dev": true,
+          "requires": {
+            "isobject": "^3.0.1"
+          }
+        }
+      }
+    },
     "coa": {
       "version": "2.0.2",
       "resolved": "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz",
@@ -5038,12 +5069,6 @@
       "integrity": "sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=",
       "dev": true
     },
-    "env-paths": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npm.taobao.org/env-paths/download/env-paths-2.2.1.tgz",
-      "integrity": "sha1-QgOZ1BbOH76bwKB8Yvpo1n/Q+PI=",
-      "dev": true
-    },
     "errno": {
       "version": "0.1.8",
       "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz?cache=0&sync_timestamp=1608124607298&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferrno%2Fdownload%2Ferrno-0.1.8.tgz",
@@ -5964,15 +5989,6 @@
         "universalify": "^0.1.0"
       }
     },
-    "fs-minipass": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-2.1.0.tgz?cache=0&sync_timestamp=1579628584498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffs-minipass%2Fdownload%2Ffs-minipass-2.1.0.tgz",
-      "integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0"
-      }
-    },
     "fs-write-stream-atomic": {
       "version": "1.0.10",
       "resolved": "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz",
@@ -5998,6 +6014,18 @@
       "dev": true,
       "optional": true
     },
+    "fstream": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz",
+      "integrity": "sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "inherits": "~2.0.0",
+        "mkdirp": ">=0.5 0",
+        "rimraf": "2"
+      }
+    },
     "function-bind": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
@@ -6028,13 +6056,13 @@
       "dependencies": {
         "ansi-regex": {
           "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-2.1.1.tgz",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
           "dev": true
         },
         "is-fullwidth-code-point": {
           "version": "1.0.0",
-          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-1.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-1.0.0.tgz",
           "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
           "dev": true,
           "requires": {
@@ -6043,7 +6071,7 @@
         },
         "string-width": {
           "version": "1.0.2",
-          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1618558856477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz",
+          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-1.0.2.tgz",
           "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
           "dev": true,
           "requires": {
@@ -6054,7 +6082,7 @@
         },
         "strip-ansi": {
           "version": "3.0.1",
-          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553351145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
           "dev": true,
           "requires": {
@@ -6187,7 +6215,7 @@
     },
     "globule": {
       "version": "1.3.2",
-      "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.2.tgz?cache=0&sync_timestamp=1591641966255&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fglobule%2Fdownload%2Fglobule-1.3.2.tgz",
+      "resolved": "https://registry.npm.taobao.org/globule/download/globule-1.3.2.tgz",
       "integrity": "sha1-2L3Z6eTu+PluJFmZpd7n612FKcQ=",
       "dev": true,
       "requires": {
@@ -6254,7 +6282,7 @@
       "dependencies": {
         "ansi-regex": {
           "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-2.1.1.tgz",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
           "dev": true
         }
@@ -6815,6 +6843,12 @@
       "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
       "dev": true
     },
+    "in-publish": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.1.tgz",
+      "integrity": "sha1-lIsaU1yAMFYc6lIvc/ePS+NX4Aw=",
+      "dev": true
+    },
     "indent-string": {
       "version": "2.1.0",
       "resolved": "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz?cache=0&sync_timestamp=1618679442183&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Findent-string%2Fdownload%2Findent-string-2.1.0.tgz",
@@ -7370,7 +7404,7 @@
     },
     "js-base64": {
       "version": "2.6.4",
-      "resolved": "https://registry.npm.taobao.org/js-base64/download/js-base64-2.6.4.tgz",
+      "resolved": "https://registry.nlark.com/js-base64/download/js-base64-2.6.4.tgz?cache=0&sync_timestamp=1621703447855&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-base64%2Fdownload%2Fjs-base64-2.6.4.tgz",
       "integrity": "sha1-9OaGxd4eofhn28rT1G2WlCjfmMQ=",
       "dev": true
     },
@@ -7641,7 +7675,7 @@
       "dependencies": {
         "parse-json": {
           "version": "2.2.0",
-          "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz?cache=0&sync_timestamp=1610966667117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-2.2.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz?cache=0&sync_timestamp=1610966646988&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse-json%2Fdownload%2Fparse-json-2.2.0.tgz",
           "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
           "dev": true,
           "requires": {
@@ -7876,7 +7910,7 @@
     },
     "map-obj": {
       "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1617771296262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz",
+      "resolved": "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1617771232226&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz",
       "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
       "dev": true
     },
@@ -7924,7 +7958,7 @@
     },
     "meow": {
       "version": "3.7.0",
-      "resolved": "https://registry.nlark.com/meow/download/meow-3.7.0.tgz?cache=0&sync_timestamp=1620227920685&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmeow%2Fdownload%2Fmeow-3.7.0.tgz",
+      "resolved": "https://registry.nlark.com/meow/download/meow-3.7.0.tgz",
       "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
       "dev": true,
       "requires": {
@@ -8120,24 +8154,6 @@
         }
       }
     },
-    "minizlib": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npm.taobao.org/minizlib/download/minizlib-2.1.2.tgz",
-      "integrity": "sha1-6Q00Zrogm5MkUVCKEc49NjIUWTE=",
-      "dev": true,
-      "requires": {
-        "minipass": "^3.0.0",
-        "yallist": "^4.0.0"
-      },
-      "dependencies": {
-        "yallist": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
-          "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
-          "dev": true
-        }
-      }
-    },
     "mississippi": {
       "version": "3.0.0",
       "resolved": "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz",
@@ -8358,63 +8374,29 @@
       "dev": true
     },
     "node-gyp": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npm.taobao.org/node-gyp/download/node-gyp-7.1.2.tgz?cache=0&sync_timestamp=1617410095989&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-gyp%2Fdownload%2Fnode-gyp-7.1.2.tgz",
-      "integrity": "sha1-IagQrrsYcSAlHDvOyXmvFYexiK4=",
+      "version": "3.8.0",
+      "resolved": "https://registry.nlark.com/node-gyp/download/node-gyp-3.8.0.tgz",
+      "integrity": "sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw=",
       "dev": true,
       "requires": {
-        "env-paths": "^2.2.0",
-        "glob": "^7.1.4",
-        "graceful-fs": "^4.2.3",
-        "nopt": "^5.0.0",
-        "npmlog": "^4.1.2",
-        "request": "^2.88.2",
-        "rimraf": "^3.0.2",
-        "semver": "^7.3.2",
-        "tar": "^6.0.2",
-        "which": "^2.0.2"
+        "fstream": "^1.0.0",
+        "glob": "^7.0.3",
+        "graceful-fs": "^4.1.2",
+        "mkdirp": "^0.5.0",
+        "nopt": "2 || 3",
+        "npmlog": "0 || 1 || 2 || 3 || 4",
+        "osenv": "0",
+        "request": "^2.87.0",
+        "rimraf": "2",
+        "semver": "~5.3.0",
+        "tar": "^2.0.0",
+        "which": "1"
       },
       "dependencies": {
-        "lru-cache": {
-          "version": "6.0.0",
-          "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz?cache=0&sync_timestamp=1594427519396&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-6.0.0.tgz",
-          "integrity": "sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=",
-          "dev": true,
-          "requires": {
-            "yallist": "^4.0.0"
-          }
-        },
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-3.0.2.tgz",
-          "integrity": "sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        },
         "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1616463550093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz",
-          "integrity": "sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
-          "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
-          "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
+          "version": "5.3.0",
+          "resolved": "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz?cache=0&sync_timestamp=1616463603361&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.3.0.tgz",
+          "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=",
           "dev": true
         }
       }
@@ -8476,22 +8458,23 @@
       "dev": true
     },
     "node-sass": {
-      "version": "5.0.0",
-      "resolved": "https://registry.nlark.com/node-sass/download/node-sass-5.0.0.tgz",
-      "integrity": "sha1-To85++87rI0txy6+O1OXEYg6eNI=",
+      "version": "4.14.1",
+      "resolved": "https://registry.nlark.com/node-sass/download/node-sass-4.14.1.tgz",
+      "integrity": "sha1-mch+wu+3BH7WOPtMnbfzpC4iF7U=",
       "dev": true,
       "requires": {
         "async-foreach": "^0.1.3",
         "chalk": "^1.1.1",
-        "cross-spawn": "^7.0.3",
+        "cross-spawn": "^3.0.0",
         "gaze": "^1.0.0",
         "get-stdin": "^4.0.1",
         "glob": "^7.0.3",
+        "in-publish": "^2.0.0",
         "lodash": "^4.17.15",
         "meow": "^3.7.0",
         "mkdirp": "^0.5.1",
         "nan": "^2.13.2",
-        "node-gyp": "^7.1.0",
+        "node-gyp": "^3.8.0",
         "npmlog": "^4.0.0",
         "request": "^2.88.0",
         "sass-graph": "2.2.5",
@@ -8501,19 +8484,19 @@
       "dependencies": {
         "ansi-regex": {
           "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-2.1.1.tgz",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-2.1.1.tgz",
           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
           "dev": true
         },
         "ansi-styles": {
           "version": "2.2.1",
-          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz",
+          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz",
           "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
           "dev": true
         },
         "chalk": {
           "version": "1.1.3",
-          "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995384030&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
+          "resolved": "https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz",
           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
           "dev": true,
           "requires": {
@@ -8525,40 +8508,28 @@
           }
         },
         "cross-spawn": {
-          "version": "7.0.3",
-          "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-7.0.3.tgz",
-          "integrity": "sha1-9zqFudXUHQRVUcF34ogtSshXKKY=",
+          "version": "3.0.1",
+          "resolved": "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
+          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
           "dev": true,
           "requires": {
-            "path-key": "^3.1.0",
-            "shebang-command": "^2.0.0",
-            "which": "^2.0.1"
+            "lru-cache": "^4.0.1",
+            "which": "^1.2.9"
           }
         },
-        "path-key": {
-          "version": "3.1.1",
-          "resolved": "https://registry.npm.taobao.org/path-key/download/path-key-3.1.1.tgz?cache=0&sync_timestamp=1617971691339&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-key%2Fdownload%2Fpath-key-3.1.1.tgz",
-          "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=",
-          "dev": true
-        },
-        "shebang-command": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/shebang-command/download/shebang-command-2.0.0.tgz?cache=0&sync_timestamp=1590294659008&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshebang-command%2Fdownload%2Fshebang-command-2.0.0.tgz",
-          "integrity": "sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=",
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz",
+          "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
           "dev": true,
           "requires": {
-            "shebang-regex": "^3.0.0"
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
           }
         },
-        "shebang-regex": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-3.0.0.tgz",
-          "integrity": "sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=",
-          "dev": true
-        },
         "strip-ansi": {
           "version": "3.0.1",
-          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553351145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-3.0.1.tgz",
           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
           "dev": true,
           "requires": {
@@ -8567,25 +8538,22 @@
         },
         "supports-color": {
           "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1618560959124&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
+          "resolved": "https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-2.0.0.tgz",
           "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
           "dev": true
         },
-        "which": {
-          "version": "2.0.2",
-          "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
-          "integrity": "sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
         }
       }
     },
     "nopt": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-5.0.0.tgz?cache=0&sync_timestamp=1597649930270&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnopt%2Fdownload%2Fnopt-5.0.0.tgz",
-      "integrity": "sha1-UwlCu1ilEvzK/lP+IQ8TolNV3Ig=",
+      "version": "3.0.6",
+      "resolved": "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz",
+      "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
       "dev": true,
       "requires": {
         "abbrev": "1"
@@ -8672,7 +8640,7 @@
     },
     "number-is-nan": {
       "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
+      "resolved": "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz?cache=0&sync_timestamp=1617776101309&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnumber-is-nan%2Fdownload%2Fnumber-is-nan-1.0.1.tgz",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
       "dev": true
     },
@@ -8922,12 +8890,28 @@
       "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
       "dev": true
     },
+    "os-homedir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz",
+      "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
+      "dev": true
+    },
     "os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz",
       "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
       "dev": true
     },
+    "osenv": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz",
+      "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
+      "dev": true,
+      "requires": {
+        "os-homedir": "^1.0.0",
+        "os-tmpdir": "^1.0.0"
+      }
+    },
     "p-finally": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz",
@@ -10117,7 +10101,7 @@
       "dependencies": {
         "find-up": {
           "version": "1.1.2",
-          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz?cache=0&sync_timestamp=1597170240264&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-1.1.2.tgz",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz",
           "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
           "dev": true,
           "requires": {
@@ -10136,7 +10120,7 @@
         },
         "path-type": {
           "version": "1.1.0",
-          "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz?cache=0&sync_timestamp=1611752528858&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-1.1.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz?cache=0&sync_timestamp=1611752015315&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpath-type%2Fdownload%2Fpath-type-1.1.0.tgz",
           "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
           "dev": true,
           "requires": {
@@ -10153,7 +10137,7 @@
         },
         "read-pkg": {
           "version": "1.1.0",
-          "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz?cache=0&sync_timestamp=1616914810926&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fread-pkg%2Fdownload%2Fread-pkg-1.1.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz",
           "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
           "dev": true,
           "requires": {
@@ -10191,7 +10175,7 @@
     },
     "redent": {
       "version": "1.0.0",
-      "resolved": "https://registry.nlark.com/redent/download/redent-1.0.0.tgz?cache=0&sync_timestamp=1620069780522&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fredent%2Fdownload%2Fredent-1.0.0.tgz",
+      "resolved": "https://registry.nlark.com/redent/download/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
       "dev": true,
       "requires": {
@@ -10201,7 +10185,7 @@
       "dependencies": {
         "strip-indent": {
           "version": "1.0.1",
-          "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-1.0.1.tgz?cache=0&sync_timestamp=1620053263051&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-indent%2Fdownload%2Fstrip-indent-1.0.1.tgz",
+          "resolved": "https://registry.nlark.com/strip-indent/download/strip-indent-1.0.1.tgz?cache=0&sync_timestamp=1620053310624&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fstrip-indent%2Fdownload%2Fstrip-indent-1.0.1.tgz",
           "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
           "dev": true,
           "requires": {
@@ -10358,7 +10342,7 @@
     },
     "repeating": {
       "version": "2.0.1",
-      "resolved": "https://registry.nlark.com/repeating/download/repeating-2.0.1.tgz?cache=0&sync_timestamp=1620068853953&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frepeating%2Fdownload%2Frepeating-2.0.1.tgz",
+      "resolved": "https://registry.nlark.com/repeating/download/repeating-2.0.1.tgz",
       "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
       "dev": true,
       "requires": {
@@ -10559,7 +10543,7 @@
       "dependencies": {
         "camelcase": {
           "version": "5.3.1",
-          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz?cache=0&sync_timestamp=1603921799543&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase%2Fdownload%2Fcamelcase-5.3.1.tgz",
+          "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz",
           "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=",
           "dev": true
         },
@@ -10576,13 +10560,13 @@
         },
         "emoji-regex": {
           "version": "7.0.3",
-          "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682725186&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz",
+          "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz?cache=0&sync_timestamp=1614682707048&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femoji-regex%2Fdownload%2Femoji-regex-7.0.3.tgz",
           "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
           "dev": true
         },
         "find-up": {
           "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz?cache=0&sync_timestamp=1597170240264&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-up%2Fdownload%2Ffind-up-3.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
           "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
           "dev": true,
           "requires": {
@@ -10591,13 +10575,13 @@
         },
         "is-fullwidth-code-point": {
           "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
           "dev": true
         },
         "locate-path": {
           "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz?cache=0&sync_timestamp=1597082033698&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flocate-path%2Fdownload%2Flocate-path-3.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
           "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
           "dev": true,
           "requires": {
@@ -10607,7 +10591,7 @@
         },
         "p-locate": {
           "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz?cache=0&sync_timestamp=1597081369770&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-locate%2Fdownload%2Fp-locate-3.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
           "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
           "dev": true,
           "requires": {
@@ -10622,7 +10606,7 @@
         },
         "string-width": {
           "version": "3.1.0",
-          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558856477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-3.1.0.tgz",
           "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=",
           "dev": true,
           "requires": {
@@ -10633,7 +10617,7 @@
         },
         "strip-ansi": {
           "version": "5.2.0",
-          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553351145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-5.2.0.tgz",
           "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=",
           "dev": true,
           "requires": {
@@ -10642,7 +10626,7 @@
         },
         "wrap-ansi": {
           "version": "5.1.0",
-          "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz?cache=0&sync_timestamp=1618558923406&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-5.1.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz",
           "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=",
           "dev": true,
           "requires": {
@@ -10653,7 +10637,7 @@
         },
         "yargs": {
           "version": "13.3.2",
-          "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz?cache=0&sync_timestamp=1620086581476&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs%2Fdownload%2Fyargs-13.3.2.tgz",
+          "resolved": "https://registry.nlark.com/yargs/download/yargs-13.3.2.tgz",
           "integrity": "sha1-rX/+/sGqWVZayRX4Lcyzipwxot0=",
           "dev": true,
           "requires": {
@@ -10671,7 +10655,7 @@
         },
         "yargs-parser": {
           "version": "13.1.2",
-          "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.2.tgz",
+          "resolved": "https://registry.nlark.com/yargs-parser/download/yargs-parser-13.1.2.tgz?cache=0&sync_timestamp=1624233514145&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fyargs-parser%2Fdownload%2Fyargs-parser-13.1.2.tgz",
           "integrity": "sha1-Ew8JcC667vJlDVTObj5XBvek+zg=",
           "dev": true,
           "requires": {
@@ -10682,13 +10666,96 @@
       }
     },
     "sass-loader": {
-      "version": "11.1.1",
-      "resolved": "https://registry.nlark.com/sass-loader/download/sass-loader-11.1.1.tgz",
-      "integrity": "sha1-DbRBu74Zeyr5YSW+u39L5kdrE6c=",
+      "version": "8.0.2",
+      "resolved": "https://registry.nlark.com/sass-loader/download/sass-loader-8.0.2.tgz",
+      "integrity": "sha1-3r7NjDziQ8dkVPLoKQSCFQOACQ0=",
       "dev": true,
       "requires": {
-        "klona": "^2.0.4",
-        "neo-async": "^2.6.2"
+        "clone-deep": "^4.0.1",
+        "loader-utils": "^1.2.3",
+        "neo-async": "^2.6.1",
+        "schema-utils": "^2.6.1",
+        "semver": "^6.3.0"
+      }
+    },
+    "sass-resources-loader": {
+      "version": "2.2.3",
+      "resolved": "https://registry.nlark.com/sass-resources-loader/download/sass-resources-loader-2.2.3.tgz?cache=0&sync_timestamp=1624349448562&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsass-resources-loader%2Fdownload%2Fsass-resources-loader-2.2.3.tgz",
+      "integrity": "sha1-G+kuoyakotjXw0g6AVd6cN99f6E=",
+      "dev": true,
+      "requires": {
+        "async": "^3.2.0",
+        "chalk": "^4.1.0",
+        "glob": "^7.1.6",
+        "loader-utils": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "async": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npm.taobao.org/async/download/async-3.2.0.tgz",
+          "integrity": "sha1-s6JoXF67ZB094C0WEALGD8n4VyA=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "4.1.1",
+          "resolved": "https://registry.nlark.com/chalk/download/chalk-4.1.1.tgz?cache=0&sync_timestamp=1618995355917&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.1.tgz",
+          "integrity": "sha1-yAs/qyi/Y3HmhjMl7uZ+YYt35q0=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
+          "dev": true
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz?cache=0&sync_timestamp=1618847009337&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhas-flag%2Fdownload%2Fhas-flag-4.0.0.tgz",
+          "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-2.0.0.tgz",
+          "integrity": "sha1-5MrOW4FtQloWa18JfhDNErNgZLA=",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^2.1.2"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz?cache=0&sync_timestamp=1622293579301&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsupports-color%2Fdownload%2Fsupports-color-7.2.0.tgz",
+          "integrity": "sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        }
       }
     },
     "sax": {
@@ -10947,6 +11014,15 @@
         "safe-buffer": "^5.0.1"
       }
     },
+    "shallow-clone": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz",
+      "integrity": "sha1-jymBrZJTH1UDWwH7IwdppA4C76M=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^6.0.2"
+      }
+    },
     "shallow-equal": {
       "version": "1.2.1",
       "resolved": "https://registry.npm.taobao.org/shallow-equal/download/shallow-equal-1.2.1.tgz",
@@ -11519,7 +11595,7 @@
     },
     "strip-bom": {
       "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz",
+      "resolved": "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz?cache=0&sync_timestamp=1618599587805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-bom%2Fdownload%2Fstrip-bom-2.0.0.tgz",
       "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
       "dev": true,
       "requires": {
@@ -11663,37 +11739,14 @@
       "dev": true
     },
     "tar": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npm.taobao.org/tar/download/tar-6.1.0.tgz?cache=0&sync_timestamp=1610045993977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-6.1.0.tgz",
-      "integrity": "sha1-0XJOm8wEuXexjVxXOzM6IgcimoM=",
+      "version": "2.2.2",
+      "resolved": "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz?cache=0&sync_timestamp=1610045450553&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftar%2Fdownload%2Ftar-2.2.2.tgz",
+      "integrity": "sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA=",
       "dev": true,
       "requires": {
-        "chownr": "^2.0.0",
-        "fs-minipass": "^2.0.0",
-        "minipass": "^3.0.0",
-        "minizlib": "^2.1.1",
-        "mkdirp": "^1.0.3",
-        "yallist": "^4.0.0"
-      },
-      "dependencies": {
-        "chownr": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/chownr/download/chownr-2.0.0.tgz",
-          "integrity": "sha1-Fb++U9LqtM9w8YqM1o6+Wzyx3s4=",
-          "dev": true
-        },
-        "mkdirp": {
-          "version": "1.0.4",
-          "resolved": "https://registry.npm.taobao.org/mkdirp/download/mkdirp-1.0.4.tgz",
-          "integrity": "sha1-PrXtYmInVteaXw4qIh3+utdcL34=",
-          "dev": true
-        },
-        "yallist": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
-          "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
-          "dev": true
-        }
+        "block-stream": "*",
+        "fstream": "^1.0.12",
+        "inherits": "2"
       }
     },
     "terser": {
@@ -13186,19 +13239,19 @@
       "dependencies": {
         "ansi-regex": {
           "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-3.0.0.tgz",
+          "resolved": "https://registry.nlark.com/ansi-regex/download/ansi-regex-3.0.0.tgz",
           "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
           "dev": true
         },
         "is-fullwidth-code-point": {
           "version": "2.0.0",
-          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz?cache=0&sync_timestamp=1618552489864&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-2.0.0.tgz",
           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
           "dev": true
         },
         "string-width": {
           "version": "2.1.1",
-          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558856477&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
+          "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz?cache=0&sync_timestamp=1618558751438&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-2.1.1.tgz",
           "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
           "dev": true,
           "requires": {
@@ -13208,7 +13261,7 @@
         },
         "strip-ansi": {
           "version": "4.0.0",
-          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553351145&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz",
+          "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz?cache=0&sync_timestamp=1618553320591&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstrip-ansi%2Fdownload%2Fstrip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {

BIN
public/favicon.ico


BIN
public/favicon2.ico


+ 5 - 1
public/static/config.js

@@ -1,6 +1,10 @@
 // api 请求路径
 var PLATFROM_CONFIG = {};
-PLATFROM_CONFIG.baseUrl = "http://121.40.217.77:8081/"
+// PLATFROM_CONFIG.baseUrl = "http://121.40.217.77:8081/"
+PLATFROM_CONFIG.baseUrl = "http://172.16.120.155:8010/" //杨强本地
+// PLATFROM_CONFIG.baseUrl = "http://172.16.1.196:8010/"  //超博本地
+
+
 
 
 //alarming WEBSOCKET

+ 29 - 0
src/api/site/Device_motore.js

@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+
+export default {
+    // 获取模拟量信息列表
+    rtAnalogData(data) {
+        return request({
+            url: `rtAnalogData/one`,
+            method: 'post',
+            data: data
+        })
+    },
+    // 获取开关量信息列表
+    rtSwitchData(data) {
+        return request({
+            url: `rtSwitchData/one`,
+            method: 'post',
+            data: data
+        })
+    },
+    // 获取运行状态统计 -> 本日 本月
+    LoopStatus(data) {
+        return request({
+            url: `rtSwitchData/LoopStatus`,
+            method: 'post',
+            data: data
+        })
+    }
+}

+ 2 - 1
src/views/home/index.vue

@@ -165,7 +165,7 @@ export default {
         content:
           content ||
           `
-                <div class="tableTooltip mapTab">
+                <div class="tableTooltip mapTab" >
                   <div class="tableTitle">
                     <div>${"测试站点1"}</div>
                   </div>
@@ -176,6 +176,7 @@ export default {
                     <div><a>监控类型:</a>${"电力,视频"}</div>
                     <div><a> 电话:</a>${"18888888888"}</div>
                     <div><a> 地址:</a>${"XX路135弄"}</div>
+                    <bottom onclick="${this.Overview()}">11111</bottom>
                   </el-row>
                 </div>`,
         offset: new AMap.Pixel(16, -30),

+ 1 - 1
src/views/index.vue

@@ -327,7 +327,7 @@ export default {
 }
 </style>
 <style>
-.el-popper__arrow::before {
+.el-select__popper .el-popper__arrow::before {
   border-top-color: transparent !important;
   border-left-color: transparent !important;
   background: rgba(0, 244, 253, 1) !important;

+ 461 - 286
src/views/site/Device_motore.vue

@@ -4,13 +4,17 @@
       class="Site-details"
       :style="
         activeName === 'first'
-          ? 'height: 684px;'
+          ? 'min-height:700px;'
+          : activeName === 'second'
+          ? 'min-height:700px;'
           : activeName === 'third'
           ? 'height: 670px;'
+          : activeName === 'fourth'
+          ? 'min-height: 830px;'
           : 'height: 710px;'
       "
     >
-      <el-tabs v-model="activeName" @tab-click="handleClick">
+      <el-tabs v-model="activeName" @tab-click="handleClick" id="device_tabs">
         <el-tab-pane label="实时数据" name="first">
           <el-tabs
             v-model="ac_content"
@@ -23,75 +27,71 @@
               style="display: flex"
               class="model"
             >
-              <div>
-                <div
-                  v-for="arr in model_array.slice(0, 16)"
-                  :key="arr"
-                  class="display"
-                >
-                  <div>{{ arr.name }}</div>
-                  <div>{{ arr.value }}</div>
-                </div>
-              </div>
-              <div>
-                <div
-                  v-for="arr in model_array.slice(16, 30)"
-                  :key="arr"
-                  class="display"
-                >
-                  <div>{{ arr.name }}</div>
-                  <div>{{ arr.value }}</div>
-                </div>
-              </div>
-              <div>
-                <div
-                  v-for="arr in model_array.slice(30, 46)"
-                  :key="arr"
-                  class="display"
-                >
-                  <div>{{ arr.name }}</div>
-                  <div>{{ arr.value }}</div>
-                </div>
-              </div>
-              <div>
+              <div v-for="(all, index) in 4" :key="index">
                 <div
-                  v-for="arr in model_array.slice(46)"
+                  v-for="arr in model_array.slice(
+                    index == 0 ? 0 : index == 1 ? 20 : index == 2 ? 40 : 60,
+                    index == 0
+                      ? 20
+                      : index == 1
+                      ? 40
+                      : index == 2
+                      ? 60
+                      : model_array.length
+                  )"
                   :key="arr"
                   class="display"
                 >
-                  <div>{{ arr.name }}</div>
-                  <div>{{ arr.value }}</div>
+                  <el-tooltip
+                    :disabled="arr.name.length > 10 ? false : true"
+                    effect="dark"
+                    :content="arr.name"
+                    placement="top"
+                  >
+                    <div>{{ arr.name }}</div>
+                  </el-tooltip>
+                  <el-tooltip
+                    :disabled="arr.value.length > 10 ? false : true"
+                    effect="dark"
+                    :content="arr.value"
+                    placement="top"
+                  >
+                    <div>{{ arr.value }}</div>
+                  </el-tooltip>
                 </div>
               </div>
             </el-tab-pane>
             <el-tab-pane label="状态量" name="states" class="states">
-              <div>
+              <div v-for="(all, index) in 2" :key="index">
                 <div
-                  v-for="arr in state_array.slice(0, 17)"
+                  v-for="arr in state_array.slice(
+                    index == 0 ? 0 : state_array.length / 2,
+                    index == 0 ? state_array.length / 2 : state_array.length
+                  )"
                   :key="arr"
                   class="display"
                 >
                   <div style="display: flex">
-                    <div class="name">{{ arr.name }}</div>
-                    <div :class="'state_' + arr.value"></div>
-                  </div>
-                </div>
-              </div>
-              <div>
-                <div
-                  v-for="arr in state_array.slice(17)"
-                  :key="arr"
-                  class="display"
-                >
-                  <div style="display: flex">
-                    <div class="name1">{{ arr.name }}</div>
+                    <el-tooltip
+                      :disabled="arr.name.length > 10 ? false : true"
+                      effect="dark"
+                      :content="arr.name"
+                      placement="top"
+                    >
+                      <div :class="index == 0 ? 'name' : 'name1'">
+                        {{ arr.name }}
+                      </div>
+                    </el-tooltip>
+
                     <div :class="'state_' + arr.value"></div>
                   </div>
                 </div>
               </div>
             </el-tab-pane>
           </el-tabs>
-          <el-button type="primary" class="primary">刷新</el-button>
+          <el-button type="primary" class="primary" @click="Real_time_api"
+            >刷新</el-button
+          >
         </el-tab-pane>
         <el-tab-pane label="历史趋势" name="second" style="top: 1px">
           <el-tabs
@@ -134,23 +134,23 @@
             >
           </el-tabs>
           <div class="block">
-            <span>选择时间范围:</span>
+            <span>选择时间范围 :</span>
             <el-date-picker
-              v-model="defaultTime"
+              v-model="se_defaultTime"
               type="datetimerange"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
               range-separator="~"
-              :disabledDate="disabledDate"
+              :disabledDate="se_disabledDate"
             >
             </el-date-picker>
           </div>
         </el-tab-pane>
         <el-tab-pane label="数据报表" name="third" style="top: 2px">
           <div class="block">
-            <span>选择时间范围:</span>
+            <span>选择时间范围 :</span>
             <el-date-picker
-              v-model="defaultTime"
+              v-model="th_defaultTime"
               type="datetimerange"
               start-placeholder="开始日期"
               end-placeholder="结束日期"
@@ -159,8 +159,23 @@
             >
             </el-date-picker>
             <div class="operation">
-              <el-button type="primary" class="query" :disabled="checkedCities.length > 0 ? false : true" @click="Time_all">查询</el-button>
-              <el-button type="primary" class="export" :disabled="tableData.length > 0 ? false : true">导出</el-button>
+              <el-button
+                type="primary"
+                class="query"
+                :disabled="checkedCities.length > 0 ? false : true"
+                @click="Time_all"
+                >查询</el-button
+              >
+              <el-button
+                type="primary"
+                class="export"
+                :disabled="
+                  th_tableData.length > 0 && checkedCities.length > 0
+                    ? false
+                    : true
+                "
+                >导出</el-button
+              >
             </div>
           </div>
           <div class="box">
@@ -180,38 +195,34 @@
             </el-checkbox-group>
           </div>
           <div class="table">
-            <el-table :data="tableData" style="width: 100%" height="520" show>
-              <el-table-column prop="time" label="时间" fixed>
-              </el-table-column>
-              <el-table-column label="电流 A" v-if="columnHeaders[0].isShow">
-                <el-table-column prop="name" label="A相电流"> </el-table-column>
-                <el-table-column prop="province" label="B相电流">
-                </el-table-column>
-                <el-table-column prop="city" label="C相电流"> </el-table-column>
-              </el-table-column>
-              <el-table-column label="电流 B" v-if="columnHeaders[1].isShow">
-                <el-table-column prop="name" label="B相电流"> </el-table-column>
-                <el-table-column prop="province" label="B相电流">
-                </el-table-column>
-                <el-table-column prop="city" label="B相电流"> </el-table-column>
+            <el-table
+              class="elTable"
+              :data="th_tableData"
+              style="width: 100%"
+              height="520"
+              show
+            >
+              <el-table-column
+                prop="time"
+                label="时间"
+                :render-header="labelHead"
+                fixed
+              >
               </el-table-column>
-              <!-- <el-table-column label="地址">
-                <el-table-column prop="province" label="省份" width="120">
-                </el-table-column>
-                <el-table-column prop="city" label="市区" width="120">
-                </el-table-column>
-                <el-table-column prop="address" label="地址"> </el-table-column>
-                <el-table-column prop="zip" label="邮编" width="120">
-                </el-table-column>
-                <el-table-column prop="zip" label="邮编" width="120">
-                </el-table-column>
-                <el-table-column prop="zip" label="邮编" width="120">
-                </el-table-column>
-                <el-table-column prop="zip" label="邮编" width="120">
-                </el-table-column>
-                <el-table-column prop="zip" label="邮编" width="120">
+              <template v-for="(table, index) in table_list" :key="index">
+                <el-table-column
+                  :label="table.name"
+                  v-if="columnHeaders[index].isShow"
+                >
+                  <el-table-column
+                    :render-header="labelHead"
+                    v-for="list in table.list"
+                    :key="list"
+                    :label="list.name"
+                    :prop="list.value"
+                  ></el-table-column>
                 </el-table-column>
-              </el-table-column> -->
+              </template>
 
               <template #empty>
                 <div class="zwsj">
@@ -222,20 +233,70 @@
             </el-table>
           </div>
         </el-tab-pane>
-        <devicemotore
+        <devicesecond
           v-if="activeName === 'second'"
           ref="main"
           :defaul_tTime="defaultTime"
-        ></devicemotore>
-        <el-tab-pane label="运行状态统计" name="fourth" style="top: 3px"
-          >运行状态统计</el-tab-pane
-        >
+        ></devicesecond>
+        <el-tab-pane label="运行状态统计" name="fourth" style="top: 3px">
+          <div class="ft_content">
+            <div style="display: flex">
+              <div class="ctn_one">
+                <div class="one_text">{{ loadLive }}</div>
+                <div>当前回路带电/停电</div>
+              </div>
+              <div class="ctn_one">
+                <div>{{ day_count }}</div>
+                <div>本日 OFF 次数</div>
+              </div>
+              <div class="ctn_one">
+                <div>{{ month_count }}</div>
+                <div>本月 OFF 次数</div>
+              </div>
+              <div class="ctn_one">
+                <div>0</div>
+                <div>本日 OFF 时长</div>
+              </div>
+              <div>
+                <el-button type="primary" class="primary">下载</el-button>
+              </div>
+            </div>
+            <div class="ctn_time">
+              <span>选择时间范围 :</span>
+              <el-date-picker
+                v-model="fh_defaultTime"
+                type="datetimerange"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                range-separator="~"
+                :disabledDate="disabledDate"
+              >
+              </el-date-picker>
+            </div>
+            <div class="ctn_echarts">
+              <devicedistion
+                v-if="activeName === 'fourth'"
+                ref="distion"
+                :defaul_tTime="defaultTime"
+              ></devicedistion>
+              <deviceStateCurve
+                v-if="activeName === 'fourth'"
+                ref="statecurve"
+                :defaul_tTime="defaultTime"
+              ></deviceStateCurve>
+            </div>
+          </div>
+        </el-tab-pane>
       </el-tabs>
     </div>
   </section>
 </template>
 <script>
-import devicemotore from "../site_ehcarts/Device_motore";
+import api from "../../api/site/Device_motore";
+import devicesecond from "../site_ehcarts/Device_second";
+import devicedistion from "../site_ehcarts/Device_distion";
+import deviceStateCurve from "../site_ehcarts/Device_StateCurve";
+import { ElMessage } from "element-plus";
 const cityOptions = [
   "电流",
   "功率",
@@ -248,134 +309,43 @@ const cityOptions = [
   "通讯参数",
   "电压突变",
 ];
+const time = new Date();
+const Y = time.getFullYear(); //年
+const M = time.getMonth(); //月
+const D = time.getDate(); //日
+// const timestamp = new Date().getTime();//时间戳
+
 export default {
   name: "site_details",
-  components: { devicemotore },
+  components: { devicesecond, devicedistion, deviceStateCurve },
   data() {
     return {
-      activeName: "first",
-      ac_content: "model",
-      se_content: "flow",
-      se_label: "电流",
-
-      model_array: [
-        { name: "A相电压:", value: "236.94V" },
-        { name: "B相电压:", value: "237.94V" },
-        { name: "C相电压:", value: "237.82V" },
-        { name: "回路电压:", value: "236.94V" },
-        { name: "A相电流:", value: "0A" },
-        { name: "B相电流:", value: "0A" },
-        { name: "C相电流:", value: "0A" },
-        { name: "剩余电流(漏电流):", value: "0mA" },
-        { name: "外接温度1:", value: "-273℃" },
-        { name: "外接温度2:", value: "-273℃" },
-        { name: "外接温度3:", value: "-273℃" },
-        { name: "外接温度4:", value: "-273℃" },
-        { name: "频率:", value: "49.97Hz" },
-        { name: "AB线电压:", value: "411.06V" },
-        { name: "BC线电压:", value: "412.48V" },
-        { name: "CA线电压:", value: "410.66V" },
+      activeName: "first", //最外层tabs切换name
+      ac_content: "model", //实时数据tabs切换name
+      se_content: "flow", //历史趋势tabs切换name
+      se_label: "电流", //历史趋势label/name信息存储 tabs切换时调用接口进行判断的值
 
-        { name: "A相有功功率:", value: "0kW" },
-        { name: "A相无功功率:", value: "0kVar" },
-        { name: "A相功率因数:", value: 0 },
-        { name: "B相有功功率:", value: "0kW" },
-        { name: "B相无功功率:", value: "0kVar" },
-        { name: "B相功率因数:", value: "0" },
-        { name: "C相有功功率:", value: "0kW" },
-        { name: "C相无功功率:", value: "0kVar" },
-        { name: "C相功率因数:", value: "0" },
-        { name: "总有功功率:", value: "0kW" },
-        { name: "总无功功率:", value: "0kVar" },
-        { name: "功率因数:", value: "0" },
-        { name: "实时需量:", value: "0kW" },
-        { name: "昨日最大有功需量:", value: "0.12kW" },
+      model_array: [], //实时数据->模拟量接口返回信息存储
+      state_array: [], //实时数据->状态接口返回信息存储
+      th_tableData: [], //数据报表->table表格数据存储
 
-        { name: "昨日Pmax发生时间:", value: "1057" },
-        { name: "负序电流:", value: "0.075A" },
-        { name: "零序电流:", value: "0.05A" },
-        { name: "负序电压不平衡度:", value: "0.37%" },
-        { name: "零序电压不平衡度:", value: "0.12%" },
-        { name: "A相电压畸变率:", value: "1.59%" },
-        { name: "B相电压畸变率:", value: "1.75%" },
-        { name: "C相电压畸变率:", value: "1.6%" },
-        { name: "Ia总谐波电流:", value: "0A" },
-        { name: "Ib总谐波电流:", value: "0A" },
-        { name: "Ic总谐波电流:", value: "0A" },
-        { name: "设备温度:", value: "33.1℃" },
-        { name: "设备信号强度:", value: "29" },
-        { name: "电压暂升次数:", value: "102次" },
-        { name: "电压暂降次数:", value: "6次" },
-        { name: "电压中断次数:", value: "6次" },
+      se_defaultTime: [new Date(Y, M, D, 0, 0, 0), new Date()], //历史趋势时间选择器v-model
+      th_defaultTime: [new Date(Y, M, D, 0, 0, 0), new Date()], //数据报表时间选择器v-model
+      fh_defaultTime: [new Date(Y, M, 1, 0, 0, 0), new Date()], //运行状态统计时间选择器v-model
 
-        { name: "母线停电次数:", value: "1次" },
-        { name: "设备复位次数:", value: "0次" },
-        { name: "正有功电度:", value: "8.27.0001kWh" },
-        { name: "负有功电度:", value: "3.4kWh" },
-        { name: "正无功电度:", value: "410.2kWh" },
-        { name: "负无功电度:", value: "37kWh" },
-        { name: "尖段正向有功:", value: "0kWh" },
-        { name: "尖段反向有功:", value: "0kWh" },
-        { name: "峰段正向有功:", value: "652.8kWh" },
-        { name: "峰段反向有功:", value: "3.2kWh" },
-        { name: "平段正向有功:", value: "0kWh" },
-        { name: "平段反向有功:", value: "0kWh" },
-        { name: "谷段正向有功:", value: "157.2kWh" },
-        { name: "谷段反向有功:", value: "0.2kWh" },
-      ],
-      state_array: [
-        { name: "外接遥信1状态:", value: "OFF" },
-        { name: "外接遥信2状态:", value: "OFF" },
-        { name: "外接遥信3状态:", value: "OFF" },
-        { name: "火警预警总:", value: "OFF" },
-        { name: "线路电气故障总:", value: "OFF" },
-        { name: "电压缺相:", value: "OFF" },
-        { name: "回路带电/停电:", value: "ON" },
-        { name: "线路开关状态:", value: "ON" },
-        { name: "电压越上限告警:", value: "OFF" },
-        { name: "电压越下限告警:", value: "OFF" },
-        { name: "电流越限:", value: "OFF" },
-        { name: "回路跳闸:", value: "OFF" },
-        { name: "母线停电:", value: "OFF" },
-        { name: "剩余电流超限:", value: "OFF" },
-        { name: "测温点T1超温:", value: "OFF" },
-        { name: "测温点T2超温:", value: "OFF" },
-        { name: "测温点T3超温:", value: "OFF" },
+      disabledDate(date) {
+        return date.getTime() > new Date(); //公共时间选择器 控制当前时间之后的时间无法选择
+      },
 
-        { name: "测温点T4超温:", value: "OFF" },
-        { name: "设备温度越限:", value: "OFF" },
-        { name: "A相燃弧:", value: "OFF" },
-        { name: "B相燃弧:", value: "OFF" },
-        { name: "C相燃弧:", value: "OFF" },
-        { name: "电压谐波越限:", value: "OFF" },
-        { name: "电流谐波越限:", value: "OFF" },
-        { name: "视在需量超限:", value: "OFF" },
-        { name: "测量通道故障:", value: "OFF" },
-        { name: "设备异常:", value: "OFF" },
-        { name: "消音:", value: "OFF" },
-        { name: "继电器1状态:", value: "OFF" },
-        { name: "继电器2状态:", value: "OFF" },
-        { name: "备用遥信1:", value: "OFF" },
-        { name: "备用遥信2:", value: "OFF" },
-        { name: "备用遥信3:", value: "OFF" },
-        { name: "备用遥信4:", value: "OFF" },
-      ],
+      loadLive: "ON", //运行状态统计->当前回路带电/停电
+      month_count: 0, //运行状态统计->本月off次数
+      day_count: 0, //运行状态统计->本日off次数
 
       value: "",
-      defaultTime: [
-        new Date(2021, 6, 1, 0, 0, 0),
-        new Date(2021, 6, 1, 12, 0, 0),
-      ],
-      disabledDate(date) {
-        return date.getTime() > new Date();
-      },
       checkAll: false,
       checkedCities: [],
       cities: cityOptions,
       isIndeterminate: false,
-      tableData: [],
-
-      msg: "暂无数据",
 
       columnHeaders: [
         { index: 0, title: "电流", isShow: false },
@@ -384,58 +354,108 @@ export default {
         { index: 3, title: "电压", isShow: false },
         { index: 4, title: "温度", isShow: false },
         { index: 5, title: "频率", isShow: false },
+        { index: 6, title: "功率因数", isShow: false },
+        { index: 7, title: "谐波电流有效值", isShow: false },
+        { index: 8, title: "通讯参数", isShow: false },
+        { index: 9, title: "电压突变", isShow: false },
+      ],
+
+      table_list: [
+        {
+          name: "电流",
+          list: [
+            { name: "A相电流", value: "name" },
+            { name: "B相电流", value: "name" },
+            { name: "C相电流", value: "name" },
+          ],
+        },
+        {
+          name: "功率",
+          list: [
+            { name: "A相有功功率 kW", value: "name" },
+            { name: "A相无功功率 kVar", value: "name" },
+            { name: "B相有功功率 kW", value: "name" },
+            { name: "B相无功功率 kVar", value: "name" },
+            { name: "C相有功功率 kW", value: "name" },
+            { name: "C相无功功率 kVar", value: "name" },
+            { name: "总有功功率 kW", value: "name" },
+            { name: "总无功功率 kW", value: "name" },
+            { name: "实时需量 kW", value: "name" },
+          ],
+        },
         {
-          index: 6,
-          title: "功率因数",
-          isShow: false,
+          name: "电度",
+          list: [
+            { name: "正有功电度 kWh", value: "name" },
+            { name: "负有功电度 kWh", value: "name" },
+            { name: "正无功电度 kvarh", value: "name" },
+            { name: "负无功电度 kvarh", value: "name" },
+          ],
         },
         {
-          index: 7,
-          title: "谐波电流有效值",
-          isShow: false,
+          name: "电压",
+          list: [
+            { name: "A相电压 kV", value: "name" },
+            { name: "B相电压 kV", value: "name" },
+            { name: "C相电压 kV", value: "name" },
+            { name: "回路电压 V", value: "name" },
+            { name: "AB线电压 V", value: "name" },
+            { name: "BC线电压 V", value: "name" },
+            { name: "CA线电压 V", value: "name" },
+          ],
         },
         {
-          index: 8,
-          title: "通讯参数",
-          isShow: false,
+          name: "温度 ℃",
+          list: [
+            { name: "外接温度1", value: "name" },
+            { name: "外接温度2", value: "name" },
+            { name: "外接温度3", value: "name" },
+            { name: "外接温度4", value: "name" },
+            { name: "环境温度", value: "name" },
+          ],
         },
         {
-          index: 9,
-          title: "电压突变",
-          isShow: false,
+          name: "频率 Hz",
+          list: [{ name: "频率", value: "name" }],
+        },
+        {
+          name: "功率因数",
+          list: [
+            { name: "A相功率因数", value: "name" },
+            { name: "B相功率因数", value: "name" },
+            { name: "C相功率因数", value: "name" },
+            { name: "功率因数", value: "name" },
+          ],
+        },
+        {
+          name: "谐波电流有效值 A",
+          list: [
+            { name: "Ia总谐波电流", value: "name" },
+            { name: "Ib总谐波电流	", value: "name" },
+            { name: "Ic总谐波电流", value: "name" },
+          ],
+        },
+        {
+          name: "通讯参数",
+          list: [{ name: "设备信号强度", value: "name" }],
+        },
+        {
+          name: "电压突变 次",
+          list: [
+            { name: "电压暂升次数", value: "name" },
+            { name: "电压暂降次数	", value: "name" },
+            { name: "电压中断次数", value: "name" },
+          ],
         },
       ],
     };
   },
   mounted() {
+    this.Real_time_api();
   },
   methods: {
-    preservation() {
-      console.log(this.$refs.main.chart);
-      var url = this.$refs.main.chart.getConnectedDataURL({
-        pixelRatio: 15,
-        backgroundColor: "black",
-        excludeComponents: ["toolbox"],
-        type: "png",
-      });
-      var $a = document.createElement("a");
-      var type = "png";
-      //图片名称
-      $a.download = this.se_label + "." + type;
-      $a.target = "_blank";
-      $a.href = url;
-      if (typeof MouseEvent === "function") {
-        var evt = new MouseEvent("click", {
-          view: window,
-          bubbles: true,
-          cancelable: false,
-        });
-        $a.dispatchEvent(evt);
-      }
-    },
     //最外层tabs切换事件触发
     handleClick(tab, event) {
-      // this.Time_all();
       //   console.log(tab, event);
       //   console.log(tab.props.name)
       this.ac_content = "model";
@@ -450,21 +470,22 @@ export default {
           }
         }
       }
+      if (tab.props.name === "fourth") {
+        this.Operation_status_api();
+      }
     },
-    //实时数据 内部tabs 点击事件触发
-    handleClick1(tab, event) {
-      console.log(tab, event);
-    },
+
     //历史趋势 内部tabs 点击事件触发
     handleClick2(tab, event) {
       console.log(tab, event);
       this.se_label = tab.props.label;
     },
+
     Time_all() {
       // console.log(this.defaultTime)
       // console.log("bbbbbbb",data)
       // this.$emit("func", this.defaultTime);
-      this.tableData = [
+      this.th_tableData = [
         {
           time: "2016-05-03",
           name: "1",
@@ -617,25 +638,128 @@ export default {
           address: "2市3金沙江路 1518 弄",
           zip: 200333,
         },
-      ]
+      ];
     },
+
+    //数据报表全选按钮事件
     handleCheckAllChange(val) {
       this.checkedCities = val ? cityOptions : [];
       this.isIndeterminate = false;
     },
+    //数据报表多选按钮事件
     handleCheckedCitiesChange(value) {
       let checkedCount = value.length;
       this.checkAll = checkedCount === this.cities.length;
       this.isIndeterminate =
         checkedCount > 0 && checkedCount < this.cities.length;
     },
+    // 控制table中title盒子宽度
+    labelHead(h) {
+      let l = h.column.label.length;
+      if (l <= 6) {
+        l = l + 10;
+      }
+      let f = 16; //每个字大小,其实是每个字的比例值,大概会比字体大小差不多大一点,
+      if (h.column.label === "时间") {
+        h.column.minWidth = 100;
+      } else {
+        h.column.minWidth = f * l; //字大小乘个数即长度 ,注意不要加px像素,这里minWidth只是一个比例值,不是真正的长度 //然后将列标题放在一个div块中,注意块的宽度一定要100%,否则表格显示不完全
+      }
+      return (
+        "div",
+        { class: "table-head", style: { width: "100%" } },
+        [h.column.label]
+      );
+    },
+    //实时数据 内部tabs 点击事件触发
+    handleClick1(tab, event) {
+      // console.log(tab, event);
+      tab || event;
+      // this.Real_time_api();
+    },
+    //实时数据api请求
+    Real_time_api() {
+      var _this = this;
+      //模拟量api请求
+      function rtAnalogData() {
+        api.rtAnalogData({ siteId: 1 }).then((requset) => {
+          if (requset.status === "SUCCESS") {
+            _this.model_array = requset.data;
+          } else {
+            ElMessage.success({
+              message: requset.msg,
+              type: "success",
+            });
+          }
+        });
+      }
+      //状态量api请求
+      function rtSwitchData() {
+        api.rtSwitchData({ siteId: 1 }).then((requset) => {
+          if (requset.status === "SUCCESS") {
+            for (let i in requset.data) {
+              requset.data[i].value == 0
+                ? (requset.data[i].value = "OFF")
+                : (requset.data[i].value = "ON");
+            }
+            _this.state_array = requset.data;
+          } else {
+            ElMessage.success({
+              message: requset.msg,
+              type: "success",
+            });
+          }
+        });
+      }
+      this.ac_content === "model"
+        ? rtAnalogData()
+        : this.ac_content === "states"
+        ? rtSwitchData()
+        : "";
+    },
+    //运行状态统计api请求
+    Operation_status_api() {
+      var _this = this;
+      function LoopStatus() {
+        api.LoopStatus({ siteId: 2 }).then((requset) => {
+          // console.log(requset);
+          _this.loadLive = requset.data.LoadLive;
+          _this.month_count = requset.data.month_count;
+          _this.day_count = requset.data.day_count;
+        });
+      }
+      LoopStatus();
+    },
+    //历史趋势ehcarts保存图片
+    preservation() {
+      var url = this.$refs.main.chart.getConnectedDataURL({
+        pixelRatio: 15,
+        backgroundColor: "black",
+        excludeComponents: ["toolbox"],
+        type: "png",
+      });
+      var $a = document.createElement("a");
+      var type = "png";
+      //图片名称
+      $a.download = this.se_label + "." + type;
+      $a.target = "_blank";
+      $a.href = url;
+      if (typeof MouseEvent === "function") {
+        var evt = new MouseEvent("click", {
+          view: window,
+          bubbles: true,
+          cancelable: false,
+        });
+        $a.dispatchEvent(evt);
+      }
+    },
   },
   watch: {
     /**
      * @title 监听列显示隐藏
      */
     checkedCities(newArrayVal) {
-      newArrayVal.length <= 0 ? this.tableData=[] : ''
+      newArrayVal.length <= 0 ? (this.th_tableData = []) : "";
       // 计算为被选中的列标题数组
       var nonSelecteds = this.columnHeaders
         .filter((item) => newArrayVal.indexOf(item.title) == -1)
@@ -656,6 +780,42 @@ export default {
 };
 </script>
 
+<style>
+/* 
+  运行状态统计css样式
+*/
+.ft_content {
+  margin: 0 15px;
+}
+.ft_content div:nth-child(1) .ctn_one {
+  width: 2.675rem;
+  height: 81px;
+  border-radius: 3px;
+  box-shadow: 0 0 10px rgba(0, 244, 253, 0.7) inset;
+  background-color: rgba(8, 31, 47, 1);
+  text-align: center;
+  margin-right: 0.5rem;
+  padding: 10px;
+}
+.ft_content div:nth-child(1) .ctn_one div:nth-child(1) {
+  height: 40px;
+  line-height: 40px;
+  font-size: 0.3rem;
+  font-family: Impact Regular, Impact Regular-Regular;
+  font-weight: 400;
+  color: #00f4fd;
+}
+.ft_content div:nth-child(1) .ctn_one .one_text {
+  color: red !important;
+}
+.ft_content .ctn_time {
+  margin-top: 15px;
+}
+.ft_content .ctn_time > span {
+  margin-right: 10px;
+}
+</style>
+
 <style>
 /* 
   数据报表css样式
@@ -694,21 +854,7 @@ export default {
 #pane-third .block span {
   padding: 0 10px;
 }
-#pane-third .el-input__inner {
-  width: 414px !important;
-  height: 30px !important;
-  line-height: 30px !important;
-  background-color: transparent;
-  border: 1px solid rgba(3, 107, 119, 1);
-}
-#pane-third .el-range-input {
-  background-color: transparent;
-  color: #fff;
-}
-#pane-third .el-range-separator {
-  line-height: 20px;
-  color: #fff;
-}
+
 #pane-third .operation {
   float: right;
   margin-right: 10px;
@@ -835,6 +981,11 @@ export default {
   height: 374px !important;
   z-index: 1;
 } */
+
+/* .elTable .cell {
+  white-space: nowrap;
+  display:inline;
+} */
 </style>
 
 <style>
@@ -875,7 +1026,7 @@ export default {
   min-height: 35px !important;
   line-height: 10px;
   height: 35px;
-  margin: 5px 0.4rem 5px 0px;
+  margin: 2px 0.4rem 5px 0px;
 }
 .se-content #tab-flow {
   border-left: 1px rgba(0, 244, 253, 0.1) solid;
@@ -884,15 +1035,8 @@ export default {
 #pane-second .block {
   margin-top: 3px;
 }
-#pane-second .el-input__inner {
-  width: 414px !important;
-  height: 30px !important;
-  line-height: 30px !important;
-  background-color: transparent;
-  border: 1px solid rgba(3, 107, 119, 1);
-}
+
 #pane-second span {
-  font-size: 0.2rem;
   padding: 0 10px;
   font-family: Microsoft YaHei Regular, Microsoft YaHei Regular-Regular;
 }
@@ -900,10 +1044,6 @@ export default {
   background-color: transparent;
   color: #fff;
 }
-#pane-second .el-range-separator {
-  line-height: 20px;
-  color: #fff;
-}
 </style>
 
 <style>
@@ -945,7 +1085,12 @@ export default {
   height: 1px !important;
   background-color: rgba(0, 244, 253, 0.1) !important;
 }
+</style>
 
+<style>
+/* 
+ 实时数据css样式
+*/
 .ac-content {
   height: 100%;
 }
@@ -973,15 +1118,12 @@ export default {
   line-height: 8px;
   z-index: 10;
 }
-</style>
 
-<style>
 /* 
   模拟量css样式
  */
 .ac-content .model > div {
   width: 25%;
-  height: 580px;
   margin-top: 10px;
 }
 .ac-content .model .display {
@@ -994,6 +1136,9 @@ export default {
   text-align: right;
   width: 50%;
   color: rgba(255, 255, 255, 1);
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 .ac-content .model .display div:nth-child(2) {
   height: 36px;
@@ -1003,15 +1148,17 @@ export default {
   text-align: left;
   padding-left: 0.7rem;
   color: rgba(1, 201, 208, 1);
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
-</style>
 
-<style>
 /* 
   状态量css样式
  */
 .ac-content .states {
   display: flex;
+  margin-top: 10px;
 }
 .ac-content .states > div {
   width: 50%;
@@ -1022,6 +1169,13 @@ export default {
   font-family: Microsoft YaHei Regular, Microsoft YaHei Regular-Regular;
   font-weight: 400;
 }
+.ac-content .states .display .name1,
+.name {
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
 .ac-content .states .display > div:nth-child(1) {
   border-bottom: 1px solid rgba(0, 244, 253, 0.1);
   width: 100%;
@@ -1059,4 +1213,25 @@ export default {
   margin-top: 6px;
   margin-left: 0.2rem;
 }
-</style>
+</style>
+
+<style>
+/* 
+  公共时间选择器css样式
+*/
+#device_tabs .el-input__inner {
+  width: 414px !important;
+  height: 30px !important;
+  line-height: 30px !important;
+  background-color: transparent;
+  border: 1px solid rgba(3, 107, 119, 1);
+}
+#device_tabs .el-range-input {
+  background-color: transparent;
+  color: #fff;
+}
+#device_tabs .el-range-separator {
+  line-height: 20px;
+  color: #fff;
+}
+</style>

+ 221 - 0
src/views/site_ehcarts/Device_StateCurve.vue

@@ -0,0 +1,221 @@
+<template>
+  <div
+    ref="statecurve"
+    :class="className"
+    :style="{ height: height, width: width }"
+  ></div>
+</template>
+<script>
+import * as echarts from "echarts";
+
+export default {
+  props: {
+    defaul_tTime: {
+      type: Array,
+    },
+    className: {
+      type: String,
+      default: "chart",
+    },
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "260px",
+    },
+    perData: {
+      type: Array,
+      default: () => [
+        {
+          color: "#01ACFF",
+          name: "摄像头",
+          value: [39],
+          // nAmount: 566557.14,
+        },
+      ],
+    },
+  },
+  data() {
+    return {
+      chart: null,
+      color_XY: "rgba(0, 244, 253, 0.1)",
+      itemStyle: [
+        {
+          normal: {
+            borderColor: "rgba(0,244,253,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(0,244,253,1)",
+            },
+          },
+        },
+        {
+          normal: {
+            borderColor: "rgba(253,143,0,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(253,143,0,1)",
+            },
+          },
+        },
+        {
+          normal: {
+            borderColor: "rgba(0,255,18,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(0,255,18,1)",
+            },
+          },
+        },
+      ],
+      msgFormSon: null,
+    };
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+      console.log(this.defaul_tTime);
+    });
+  },
+  beforeUnmount() {
+    window.removeEventListener("resize", this.chart);
+  },
+  methods: {
+    //次数分布折线图
+    initChart() {
+      var chart = echarts.init(this.$refs.statecurve);
+      var data = ["2021-07-01 00:00:00", "2021-07-13 16:03:00"];
+      var option;
+      option = {
+        title: [
+          {
+            text: "运行状态曲线",
+            left: "center",
+            textStyle: {
+              color: "#fff",
+              fontSize: 14,
+            },
+          },
+          {
+            text: `OFF时长:${0}分钟`,
+            left: "right",
+            padding: [0, "7", 0, 0],
+            textStyle: {
+              color: "#fff",
+              fontSize: 14,
+            },
+          },
+        ],
+        tooltip: {
+          backgroundColor: "rgba(0, 244, 253, 0.1)",
+          borderColor: "rgba(0, 244, 253, 0.3)",
+          textStyle: {
+            color: "#fff",
+          },
+          trigger: "axis",
+          axisPointer: {
+            type: "line",
+          },
+          formatter: function (params) {
+            // console.log(params);
+            var res = params[0].data[0];
+            for (let i in params) {
+              res += `
+              <div style="display:flex">
+                  <div style="width:10px;height:10px;background:${
+                    params[i].color
+                  };border-radius: 10px;margin:10px 0;"></div>
+                  <div style="padding:4px 0px 0px 10px;">${
+                    params[i].seriesName
+                  }:</div>
+                  <div style="padding:4px 0px 0px 10px;">${
+                    params[i].data[1] == 1 ? "ON" : "OFF"
+                  }</div>
+              </div>`; //可以在这个方法中做改变
+            }
+            return res;
+          },
+        },
+        xAxis: {
+          type: "time",
+          boundaryGap: false,
+          nameTextStyle: {
+            // 名称样式
+            fontSize: 12,
+            color: "#fff",
+            fontWeight: "bold",
+          },
+
+          axisLabel: {
+            textStyle: {
+              color: "#fff", //坐标值得具体的颜色
+            },
+            formatter: {
+              year: "{MM}-{dd}\n{yyyy}",
+              month: `{MM}-{dd}\n{yyyy}`,
+              day: `{MM}-{dd}\n{yyyy}`,
+              hour: "{HH}:{mm}\n{MM}-{dd}",
+              minute: "{HH}:{mm}",
+              second: "{HH}:{mm}:{ss}",
+              millisecond: "{hh}:{mm}:{ss} {SSS}",
+              none: "{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}",
+            },
+          },
+          axisLine: {
+            lineStyle: {
+              color: this.color_XY,
+            },
+          },
+        },
+        grid: {
+          left: "3%",
+          right: "4%",
+          bottom: "10%",
+          containLabel: true,
+        },
+        yAxis: {
+          type: "value",
+          splitNumber: 1,
+          min: 0,
+          max: 1,
+          axisLabel: {
+            formatter: function (value) {
+              var texts = [];
+              if (value == 0) {
+                texts.push("OFF");
+              } else {
+                texts.push("ON");
+              }
+              return texts;
+            },
+          },
+        },
+        series: [
+          {
+            name: "回路带电/停电",
+            type: "line",
+            smooth: true,
+            data: [1, 1].map((val, ind) => {
+              return [data[ind], val];
+            }),
+          },
+        ],
+      };
+
+      chart.setOption(option);
+      window.addEventListener("resize", () => {
+        chart.resize();
+      });
+      this.chart = chart;
+    },
+  },
+};
+</script>

+ 221 - 0
src/views/site_ehcarts/Device_distion.vue

@@ -0,0 +1,221 @@
+<template>
+  <div
+    ref="distion"
+    :class="className"
+    :style="{ height: height, width: width }"
+  ></div>
+</template>
+<script>
+import * as echarts from "echarts";
+
+export default {
+  props: {
+    defaul_tTime: {
+      type: Array,
+    },
+    className: {
+      type: String,
+      default: "chart",
+    },
+    width: {
+      type: String,
+      default: "100%",
+    },
+    height: {
+      type: String,
+      default: "400px",
+    },
+    perData: {
+      type: Array,
+      default: () => [
+        {
+          color: "#01ACFF",
+          name: "摄像头",
+          value: [39],
+          // nAmount: 566557.14,
+        },
+      ],
+    },
+  },
+  data() {
+    return {
+      chart: null,
+      color_XY: "rgba(0, 244, 253, 0.1)",
+      itemStyle: [
+        {
+          normal: {
+            borderColor: "rgba(0,244,253,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(0,244,253,1)",
+            },
+          },
+        },
+        {
+          normal: {
+            borderColor: "rgba(253,143,0,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(253,143,0,1)",
+            },
+          },
+        },
+        {
+          normal: {
+            borderColor: "rgba(0,255,18,1)",
+            borderWidth: 2,
+            color: "rgba(6, 68, 83, 1)",
+            lineStyle: {
+              width: 2, //折线宽度
+              color: "rgba(0,255,18,1)",
+            },
+          },
+        },
+      ],
+      msgFormSon: null,
+    };
+  },
+  mounted() {
+    this.$nextTick(() => {
+      this.initChart();
+      console.log(this.defaul_tTime);
+    });
+  },
+  beforeUnmount() {
+    window.removeEventListener("resize", this.chart);
+  },
+  methods: {
+    //次数分布折线图
+    initChart() {
+      var chart = echarts.init(this.$refs.distion);
+      var option;
+      var data = ["2021-07-01 00:00:00", "2021-07-02 00:00:00","2021-07-03 00:00:00", "2021-07-04 00:00:00", "2021-07-05 00:00:00","2021-07-06 00:00:00", "2021-07-13 16:03:00"];
+      option = {
+        title: [
+          {
+            text: "OFF次数分布",
+            left: "center",
+            textStyle: {
+              color: "#fff",
+              fontSize: 14,
+            },
+          },
+          {
+            text: `OFF次数:${0}`,
+            left: "right",
+            padding: [0, "7", 0, 0],
+            textStyle: {
+              color: "#fff",
+              fontSize: 14,
+            },
+          },
+        ],
+        tooltip: {
+          backgroundColor: "rgba(0, 244, 253, 0.1)",
+          borderColor: "rgba(0, 244, 253, 0.3)",
+          textStyle: {
+            color: "#fff",
+          },
+          trigger: "axis",
+          axisPointer: {
+            type: "line",
+          },
+          formatter: function (params) {
+            // console.log(params);
+            var res = params[0].data[0];
+            for (let i in params) {
+              res += `
+              <div style="display:flex">
+                  <div style="width:10px;height:10px;background:${
+                    params[i].color
+                  };border-radius: 10px;margin:10px 0;"></div>
+                  <div style="padding:4px 0px 0px 10px;">${
+                    params[i].seriesName
+                  }:</div>
+                  <div style="padding:4px 0px 0px 10px;">${
+                    params[i].data[1] == 1 ? "ON" : "OFF"
+                  }</div>
+              </div>`; //可以在这个方法中做改变
+            }
+            return res;
+          },
+        },
+        xAxis: {
+          type: "time",
+          boundaryGap: false,
+          nameTextStyle: {
+            // 名称样式
+            fontSize: 12,
+            color: "#fff",
+            fontWeight: "bold",
+          },
+
+          axisLabel: {
+            textStyle: {
+              color: "#fff", //坐标值得具体的颜色
+            },
+            formatter: {
+              year: "{MM}-{dd}\n{yyyy}",
+              month: `{MM}-{dd}\n{yyyy}`,
+              day: `{MM}-{dd}\n{yyyy}`,
+              hour: "{HH}:{mm}\n{MM}-{dd}",
+              minute: "{HH}:{mm}",
+              second: "{HH}:{mm}:{ss}",
+              millisecond: "{hh}:{mm}:{ss} {SSS}",
+              none: "{yyyy}-{MM}-{dd} {hh}:{mm}:{ss} {SSS}",
+            },
+          },
+          axisLine: {
+            lineStyle: {
+              color: this.color_XY,
+            },
+          },
+        },
+        grid: {
+          left: "3%",
+          right: "4%",
+          bottom: "10%",
+          containLabel: true,
+        },
+        yAxis: {
+          type: "value",
+          splitNumber: 1,
+          min: 0,
+          max: 1,
+          axisLabel: {
+            formatter: function (value) {
+              var texts = [];
+              if (value == 0) {
+                texts.push("OFF");
+              } else {
+                texts.push("ON");
+              }
+              return texts;
+            },
+          },
+        },
+        series: [
+          {
+            name: "回路带电/停电",
+            type: "line",
+            smooth: true,
+            data: [1, 1,1,0,1,1,1].map((val, ind) => {
+              return [data[ind], val];
+            }),
+          },
+        ],
+      };
+
+      chart.setOption(option);
+      window.addEventListener("resize", () => {
+        chart.resize();
+      });
+      this.chart = chart;
+    },
+  },
+};
+</script>

+ 2 - 8
src/views/site_ehcarts/Device_motore.vue → src/views/site_ehcarts/Device_second.vue

@@ -82,7 +82,6 @@ export default {
   mounted() {
     this.$nextTick(() => {
       this.initChart();
-      // this.getMsgFormSon();
       console.log(this.defaul_tTime);
     });
   },
@@ -90,6 +89,7 @@ export default {
     window.removeEventListener("resize", this.chart);
   },
   methods: {
+    //历史趋势折线图
     initChart() {
       var chart = echarts.init(this.$refs.main);
       var option;
@@ -301,12 +301,6 @@ export default {
       });
       this.chart = chart;
     },
-    getMsgFormSon() {
-      // this.$emit("func", "aaaaaaaaaaaaaaaaaaaa");
-      console.log("aaaaaaaaaaaa");
-      // this.msgFormSon = data;
-      // console.log(this.msgFormSon);
-    },
-  },
+  }
 };
 </script>

BIN
test/favicon.ico


BIN
test/favicon1.ico


BIN
test/favicon2.ico


BIN
test/fonts/element-icons.abe71f7d.ttf


BIN
test/fonts/element-icons.d9491be2.woff


BIN
test/fonts/impact.f1290202.ttf


BIN
test/img/bg-blue.ba98dadb.png


BIN
test/img/bg-orange.1d9b56b1.png


BIN
test/img/bg-yellow.3bee5661.png


+ 2 - 0
test/index.html

@@ -6,6 +6,8 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="favicon.ico">
+    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=8e266e1ac2ad2383c7773ff504ac248f"></script>
+    <script src="//webapi.amap.com/ui/1.1/main.js?v=1.1.1"></script>
     <title>
         vue-webtopo-svgeditor
     </title>

Diff do ficheiro suprimidas por serem muito extensas
+ 5 - 5
test/js/app.js


+ 2 - 1
test/static/config.js

@@ -1,6 +1,7 @@
 // api 请求路径
 var PLATFROM_CONFIG = {};
-PLATFROM_CONFIG.baseUrl = "http://121.40.217.77:8081/"
+// PLATFROM_CONFIG.baseUrl = "http://121.40.217.77:8081/"
+PLATFROM_CONFIG.baseUrl = "http://172.16.120.155:8010/"
 
 
 //alarming WEBSOCKET

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff