xieb
2023-09-13 3667807a7b7418efc090ee3fa6a6b734bc3080bf
Merge branch 'develop' of http://s16s652780.51mypc.cn:49896/r/yskj/iot_drone_web into develop
13 files modified
1807 ■■■■ changed files
package-lock.json 1203 ●●●● patch | view | raw | blame | history
package.json 1 ●●●● patch | view | raw | blame | history
src/App.vue 26 ●●●●● patch | view | raw | blame | history
src/api/http/request.ts 13 ●●●● patch | view | raw | blame | history
src/api/http/type.ts 9 ●●●●● patch | view | raw | blame | history
src/api/manage.ts 34 ●●●● patch | view | raw | blame | history
src/components/task/CreatePlan.vue 215 ●●●●● patch | view | raw | blame | history
src/pages/page-web/projects/devices.vue 57 ●●●● patch | view | raw | blame | history
src/pages/page-web/projects/members.vue 36 ●●●●● patch | view | raw | blame | history
src/pages/page-web/projects/project_list/add_page/components/ComTable.vue 59 ●●●● patch | view | raw | blame | history
src/pages/page-web/projects/tsa.vue 3 ●●●●● patch | view | raw | blame | history
src/pages/page-web/projects/wayline.vue 10 ●●●● patch | view | raw | blame | history
yarn.lock 141 ●●●●● patch | view | raw | blame | history
package-lock.json
@@ -17,7 +17,8 @@
        "axios": "^0.21.1",
        "eventemitter3": "^5.0.0",
        "mitt": "^3.0.0",
        "mqtt": "^4.3.7",
        "moment": "^2.29.4",
        "mqtt": "4.0.1",
        "query-string": "^7.0.1",
        "reconnecting-websocket": "^4.4.0",
        "vconsole": "^3.8.1",
@@ -1934,6 +1935,11 @@
        "node": ">=8"
      }
    },
    "node_modules/async-limiter": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
    },
    "node_modules/async-validator": {
      "version": "3.5.2",
      "resolved": "https://registry.npmmirror.com/async-validator/download/async-validator-3.5.2.tgz",
@@ -2228,6 +2234,37 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/callback-stream": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz",
      "integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==",
      "dependencies": {
        "inherits": "^2.0.1",
        "readable-stream": "> 1.0.0 < 3.0.0"
      }
    },
    "node_modules/callback-stream/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/callback-stream/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/callsites": {
@@ -2576,17 +2613,39 @@
      "license": "MIT"
    },
    "node_modules/concat-stream": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz",
      "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
      "version": "1.6.2",
      "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
      "engines": [
        "node >= 6.0"
        "node >= 0.8"
      ],
      "dependencies": {
        "buffer-from": "^1.0.0",
        "inherits": "^2.0.3",
        "readable-stream": "^3.0.2",
        "readable-stream": "^2.2.2",
        "typedarray": "^0.0.6"
      }
    },
    "node_modules/concat-stream/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/concat-stream/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/constant-case": {
@@ -2660,7 +2719,6 @@
      "version": "1.0.3",
      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz",
      "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/cors": {
@@ -2829,6 +2887,15 @@
      "resolved": "https://registry.npmmirror.com/csstype/download/csstype-2.6.19.tgz?cache=0&sync_timestamp=1637224514674&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcsstype%2Fdownload%2Fcsstype-2.6.19.tgz",
      "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==",
      "license": "MIT"
    },
    "node_modules/d": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz",
      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
      "dependencies": {
        "es5-ext": "^0.10.50",
        "type": "^1.0.1"
      }
    },
    "node_modules/debug": {
      "version": "4.3.3",
@@ -3069,14 +3136,36 @@
      }
    },
    "node_modules/duplexify": {
      "version": "4.1.2",
      "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz",
      "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
      "version": "3.7.1",
      "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz",
      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
      "dependencies": {
        "end-of-stream": "^1.4.1",
        "inherits": "^2.0.3",
        "readable-stream": "^3.1.1",
        "end-of-stream": "^1.0.0",
        "inherits": "^2.0.1",
        "readable-stream": "^2.0.0",
        "stream-shift": "^1.0.0"
      }
    },
    "node_modules/duplexify/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/duplexify/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/earcut": {
@@ -3209,6 +3298,73 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/es5-ext": {
      "version": "0.10.62",
      "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz",
      "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
      "hasInstallScript": true,
      "dependencies": {
        "es6-iterator": "^2.0.3",
        "es6-symbol": "^3.1.3",
        "next-tick": "^1.1.0"
      },
      "engines": {
        "node": ">=0.10"
      }
    },
    "node_modules/es6-iterator": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
      "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
      "dependencies": {
        "d": "1",
        "es5-ext": "^0.10.35",
        "es6-symbol": "^3.1.1"
      }
    },
    "node_modules/es6-map": {
      "version": "0.1.5",
      "resolved": "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz",
      "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
      "dependencies": {
        "d": "1",
        "es5-ext": "~0.10.14",
        "es6-iterator": "~2.0.1",
        "es6-set": "~0.1.5",
        "es6-symbol": "~3.1.1",
        "event-emitter": "~0.3.5"
      }
    },
    "node_modules/es6-set": {
      "version": "0.1.6",
      "resolved": "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz",
      "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
      "dependencies": {
        "d": "^1.0.1",
        "es5-ext": "^0.10.62",
        "es6-iterator": "~2.0.3",
        "es6-symbol": "^3.1.3",
        "event-emitter": "^0.3.5",
        "type": "^2.7.2"
      },
      "engines": {
        "node": ">=0.12"
      }
    },
    "node_modules/es6-set/node_modules/type": {
      "version": "2.7.2",
      "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz",
      "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
    },
    "node_modules/es6-symbol": {
      "version": "3.1.3",
      "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz",
      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
      "dependencies": {
        "d": "^1.0.1",
        "ext": "^1.1.2"
      }
    },
    "node_modules/esbuild": {
@@ -3854,6 +4010,15 @@
        "node": ">= 0.6"
      }
    },
    "node_modules/event-emitter": {
      "version": "0.3.5",
      "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
      "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
      "dependencies": {
        "d": "1",
        "es5-ext": "~0.10.14"
      }
    },
    "node_modules/eventemitter3": {
      "version": "5.0.0",
      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.0.tgz",
@@ -3974,6 +4139,24 @@
      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/ext": {
      "version": "1.7.0",
      "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
      "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
      "dependencies": {
        "type": "^2.7.2"
      }
    },
    "node_modules/ext/node_modules/type": {
      "version": "2.7.2",
      "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz",
      "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
    },
    "node_modules/extend": {
      "version": "3.0.2",
      "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
    },
    "node_modules/extend-shallow": {
      "version": "2.0.1",
@@ -4332,6 +4515,68 @@
        "node": ">= 6"
      }
    },
    "node_modules/glob-stream": {
      "version": "6.1.0",
      "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz",
      "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
      "dependencies": {
        "extend": "^3.0.0",
        "glob": "^7.1.1",
        "glob-parent": "^3.1.0",
        "is-negated-glob": "^1.0.0",
        "ordered-read-streams": "^1.0.0",
        "pumpify": "^1.3.5",
        "readable-stream": "^2.1.5",
        "remove-trailing-separator": "^1.0.1",
        "to-absolute-glob": "^2.0.0",
        "unique-stream": "^2.0.2"
      },
      "engines": {
        "node": ">= 0.10"
      }
    },
    "node_modules/glob-stream/node_modules/glob-parent": {
      "version": "3.1.0",
      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
      "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
      "dependencies": {
        "is-glob": "^3.1.0",
        "path-dirname": "^1.0.0"
      }
    },
    "node_modules/glob-stream/node_modules/is-glob": {
      "version": "3.1.0",
      "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
      "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
      "dependencies": {
        "is-extglob": "^2.1.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/glob-stream/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/glob-stream/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/globals": {
      "version": "13.12.0",
      "resolved": "https://registry.npmmirror.com/globals/download/globals-13.12.0.tgz?cache=0&sync_timestamp=1635390798667&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglobals%2Fdownload%2Fglobals-13.12.0.tgz",
@@ -4573,12 +4818,14 @@
      "license": "0BSD"
    },
    "node_modules/help-me": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/help-me/-/help-me-3.0.0.tgz",
      "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz",
      "integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==",
      "dependencies": {
        "glob": "^7.1.6",
        "readable-stream": "^3.6.0"
        "callback-stream": "^1.0.2",
        "glob-stream": "^6.1.0",
        "through2": "^2.0.1",
        "xtend": "^4.0.0"
      }
    },
    "node_modules/htmlparser2": {
@@ -4703,6 +4950,18 @@
      },
      "engines": {
        "node": ">= 0.4"
      }
    },
    "node_modules/is-absolute": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz",
      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
      "dependencies": {
        "is-relative": "^1.0.0",
        "is-windows": "^1.0.1"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/is-accessor-descriptor": {
@@ -4905,6 +5164,14 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/is-negated-glob": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
      "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==",
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/is-negative-zero": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/is-negative-zero/download/is-negative-zero-2.0.2.tgz",
@@ -4989,6 +5256,17 @@
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/is-relative": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz",
      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
      "dependencies": {
        "is-unc-path": "^1.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/is-shared-array-buffer": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/download/is-shared-array-buffer-1.0.1.tgz",
@@ -5031,6 +5309,17 @@
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/is-unc-path": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz",
      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
      "dependencies": {
        "unc-path-regex": "^0.1.2"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/is-weakref": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/is-weakref/download/is-weakref-1.0.2.tgz",
@@ -5048,7 +5337,6 @@
      "version": "1.0.2",
      "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
      "dev": true,
      "license": "MIT",
      "engines": {
        "node": ">=0.10.0"
@@ -5058,7 +5346,6 @@
      "version": "1.0.0",
      "resolved": "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz",
      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/isexe": {
@@ -5087,11 +5374,6 @@
      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
      "dev": true,
      "license": "BSD-3-Clause"
    },
    "node_modules/js-sdsl": {
      "version": "4.3.0",
      "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz",
      "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ=="
    },
    "node_modules/js-tokens": {
      "version": "4.0.0",
@@ -5145,7 +5427,6 @@
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/json5": {
@@ -5339,6 +5620,7 @@
      "version": "6.0.0",
      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz?cache=0&sync_timestamp=1599054167787&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flru-cache%2Fdownload%2Flru-cache-6.0.0.tgz",
      "integrity": "sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=",
      "dev": true,
      "license": "ISC",
      "dependencies": {
        "yallist": "^4.0.0"
@@ -5556,44 +5838,41 @@
      }
    },
    "node_modules/moment": {
      "version": "2.29.1",
      "resolved": "https://registry.npmmirror.com/moment/download/moment-2.29.1.tgz",
      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
      "license": "MIT",
      "version": "2.29.4",
      "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
      "engines": {
        "node": "*"
      }
    },
    "node_modules/mqtt": {
      "version": "4.3.7",
      "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz",
      "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==",
      "version": "4.0.1",
      "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.0.1.tgz",
      "integrity": "sha512-sDvB/wI8e3YSSdIxJ74M81lQTFXxg1uFM5/irpQL+IH9crQiW90R69YOnk7UGj9xCqoXBBRPr8fqnkzQUKRYgg==",
      "dependencies": {
        "base64-js": "^1.3.0",
        "commist": "^1.0.0",
        "concat-stream": "^2.0.0",
        "debug": "^4.1.1",
        "duplexify": "^4.1.1",
        "help-me": "^3.0.0",
        "concat-stream": "^1.6.2",
        "end-of-stream": "^1.4.1",
        "es6-map": "^0.1.5",
        "help-me": "^1.0.1",
        "inherits": "^2.0.3",
        "lru-cache": "^6.0.0",
        "minimist": "^1.2.5",
        "mqtt-packet": "^6.8.0",
        "number-allocator": "^1.0.9",
        "minimist": "^1.2.0",
        "mqtt-packet": "^6.0.0",
        "pump": "^3.0.0",
        "readable-stream": "^3.6.0",
        "readable-stream": "^2.3.6",
        "reinterval": "^1.1.0",
        "rfdc": "^1.3.0",
        "split2": "^3.1.0",
        "ws": "^7.5.5",
        "xtend": "^4.0.2"
        "websocket-stream": "^5.1.2",
        "xtend": "^4.0.1"
      },
      "bin": {
        "mqtt": "bin/mqtt.js",
        "mqtt": "mqtt.js",
        "mqtt_pub": "bin/pub.js",
        "mqtt_sub": "bin/sub.js"
      },
      "engines": {
        "node": ">=10.0.0"
        "node": ">=4.0.0"
      }
    },
    "node_modules/mqtt-packet": {
@@ -5604,6 +5883,28 @@
        "bl": "^4.0.2",
        "debug": "^4.1.1",
        "process-nextick-args": "^2.0.1"
      }
    },
    "node_modules/mqtt/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/mqtt/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/ms": {
@@ -5738,6 +6039,11 @@
      "dev": true,
      "license": "MIT"
    },
    "node_modules/next-tick": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
    },
    "node_modules/no-case": {
      "version": "3.0.4",
      "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-3.0.4.tgz?cache=0&sync_timestamp=1606867308811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fno-case%2Fdownload%2Fno-case-3.0.4.tgz",
@@ -5789,15 +6095,6 @@
      },
      "funding": {
        "url": "https://github.com/fb55/nth-check?sponsor=1"
      }
    },
    "node_modules/number-allocator": {
      "version": "1.0.14",
      "resolved": "https://registry.npmmirror.com/number-allocator/-/number-allocator-1.0.14.tgz",
      "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
      "dependencies": {
        "debug": "^4.3.1",
        "js-sdsl": "4.3.0"
      }
    },
    "node_modules/object-assign": {
@@ -6050,6 +6347,36 @@
        "node": ">= 0.8.0"
      }
    },
    "node_modules/ordered-read-streams": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
      "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
      "dependencies": {
        "readable-stream": "^2.0.1"
      }
    },
    "node_modules/ordered-read-streams/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/ordered-read-streams/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/p-limit": {
      "version": "1.3.0",
      "resolved": "https://registry.nlark.com/p-limit/download/p-limit-1.3.0.tgz",
@@ -6177,6 +6504,11 @@
      "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
      "dev": true,
      "license": "0BSD"
    },
    "node_modules/path-dirname": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz",
      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
    },
    "node_modules/path-exists": {
      "version": "3.0.0",
@@ -6419,6 +6751,25 @@
        "once": "^1.3.1"
      }
    },
    "node_modules/pumpify": {
      "version": "1.5.1",
      "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz",
      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
      "dependencies": {
        "duplexify": "^3.6.0",
        "inherits": "^2.0.3",
        "pump": "^2.0.0"
      }
    },
    "node_modules/pumpify/node_modules/pump": {
      "version": "2.0.1",
      "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
      "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
      "dependencies": {
        "end-of-stream": "^1.1.0",
        "once": "^1.3.1"
      }
    },
    "node_modules/punycode": {
      "version": "2.1.1",
      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
@@ -6612,6 +6963,11 @@
      "resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz",
      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
    },
    "node_modules/remove-trailing-separator": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
    },
    "node_modules/repeat-element": {
      "version": "1.1.4",
      "resolved": "https://registry.nlark.com/repeat-element/download/repeat-element-1.1.4.tgz",
@@ -6698,11 +7054,6 @@
        "iojs": ">=1.0.0",
        "node": ">=0.10.0"
      }
    },
    "node_modules/rfdc": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
    },
    "node_modules/rimraf": {
      "version": "3.0.2",
@@ -8002,6 +8353,58 @@
      "dev": true,
      "license": "MIT"
    },
    "node_modules/through2": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
      "dependencies": {
        "readable-stream": "~2.3.6",
        "xtend": "~4.0.1"
      }
    },
    "node_modules/through2-filter": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz",
      "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
      "dependencies": {
        "through2": "~2.0.0",
        "xtend": "~4.0.0"
      }
    },
    "node_modules/through2/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/through2/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/to-absolute-glob": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
      "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
      "dependencies": {
        "is-absolute": "^1.0.0",
        "is-negated-glob": "^1.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/to-fast-properties": {
      "version": "2.0.0",
      "resolved": "https://registry.nlark.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz?cache=0&sync_timestamp=1628418893613&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fto-fast-properties%2Fdownload%2Fto-fast-properties-2.0.0.tgz",
@@ -8201,6 +8604,11 @@
        "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
      }
    },
    "node_modules/type": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz",
      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
    },
    "node_modules/type-check": {
      "version": "0.4.0",
      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.4.0.tgz",
@@ -8252,6 +8660,11 @@
      "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==",
      "dev": true
    },
    "node_modules/ultron": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz",
      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
    },
    "node_modules/unbox-primitive": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz?cache=0&sync_timestamp=1616706302651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funbox-primitive%2Fdownload%2Funbox-primitive-1.0.1.tgz",
@@ -8266,6 +8679,14 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/unc-path-regex": {
      "version": "0.1.2",
      "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/unimport": {
@@ -8344,6 +8765,15 @@
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/unique-stream": {
      "version": "2.3.1",
      "resolved": "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz",
      "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
      "dependencies": {
        "json-stable-stringify-without-jsonify": "^1.0.1",
        "through2-filter": "^3.0.0"
      }
    },
    "node_modules/universalify": {
@@ -9069,6 +9499,41 @@
      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
      "dev": true
    },
    "node_modules/websocket-stream": {
      "version": "5.5.2",
      "resolved": "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz",
      "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==",
      "dependencies": {
        "duplexify": "^3.5.1",
        "inherits": "^2.0.1",
        "readable-stream": "^2.3.3",
        "safe-buffer": "^5.1.2",
        "ws": "^3.2.0",
        "xtend": "^4.0.0"
      }
    },
    "node_modules/websocket-stream/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
      "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
      "dependencies": {
        "core-util-is": "~1.0.0",
        "inherits": "~2.0.3",
        "isarray": "~1.0.0",
        "process-nextick-args": "~2.0.0",
        "safe-buffer": "~5.1.1",
        "string_decoder": "~1.1.1",
        "util-deprecate": "~1.0.1"
      }
    },
    "node_modules/websocket-stream/node_modules/string_decoder": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
      "dependencies": {
        "safe-buffer": "~5.1.0"
      }
    },
    "node_modules/which": {
      "version": "2.0.2",
      "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
@@ -9119,23 +9584,13 @@
      "license": "ISC"
    },
    "node_modules/ws": {
      "version": "7.5.9",
      "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
      "engines": {
        "node": ">=8.3.0"
      },
      "peerDependencies": {
        "bufferutil": "^4.0.1",
        "utf-8-validate": "^5.0.2"
      },
      "peerDependenciesMeta": {
        "bufferutil": {
          "optional": true
        },
        "utf-8-validate": {
          "optional": true
        }
      "version": "3.3.3",
      "resolved": "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz",
      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
      "dependencies": {
        "async-limiter": "~1.0.0",
        "safe-buffer": "~5.1.0",
        "ultron": "~1.1.0"
      }
    },
    "node_modules/xtend": {
@@ -9150,6 +9605,7 @@
      "version": "4.0.0",
      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
      "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
      "dev": true,
      "license": "ISC"
    }
  },
@@ -10380,6 +10836,11 @@
      "integrity": "sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=",
      "dev": true
    },
    "async-limiter": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
    },
    "async-validator": {
      "version": "3.5.2",
      "resolved": "https://registry.npmmirror.com/async-validator/download/async-validator-3.5.2.tgz",
@@ -10608,6 +11069,39 @@
      "requires": {
        "function-bind": "^1.1.1",
        "get-intrinsic": "^1.0.2"
      }
    },
    "callback-stream": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz",
      "integrity": "sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==",
      "requires": {
        "inherits": "^2.0.1",
        "readable-stream": "> 1.0.0 < 3.0.0"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "callsites": {
@@ -10882,14 +11376,38 @@
      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
    },
    "concat-stream": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-2.0.0.tgz",
      "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
      "version": "1.6.2",
      "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
      "requires": {
        "buffer-from": "^1.0.0",
        "inherits": "^2.0.3",
        "readable-stream": "^3.0.2",
        "readable-stream": "^2.2.2",
        "typedarray": "^0.0.6"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "constant-case": {
@@ -10943,8 +11461,7 @@
    "core-util-is": {
      "version": "1.0.3",
      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.3.tgz",
      "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=",
      "dev": true
      "integrity": "sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U="
    },
    "cors": {
      "version": "2.8.5",
@@ -11060,6 +11577,15 @@
      "version": "2.6.19",
      "resolved": "https://registry.npmmirror.com/csstype/download/csstype-2.6.19.tgz?cache=0&sync_timestamp=1637224514674&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcsstype%2Fdownload%2Fcsstype-2.6.19.tgz",
      "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ=="
    },
    "d": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz",
      "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
      "requires": {
        "es5-ext": "^0.10.50",
        "type": "^1.0.1"
      }
    },
    "debug": {
      "version": "4.3.3",
@@ -11247,14 +11773,38 @@
      }
    },
    "duplexify": {
      "version": "4.1.2",
      "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-4.1.2.tgz",
      "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==",
      "version": "3.7.1",
      "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz",
      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
      "requires": {
        "end-of-stream": "^1.4.1",
        "inherits": "^2.0.3",
        "readable-stream": "^3.1.1",
        "end-of-stream": "^1.0.0",
        "inherits": "^2.0.1",
        "readable-stream": "^2.0.0",
        "stream-shift": "^1.0.0"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "earcut": {
@@ -11358,6 +11908,68 @@
        "is-callable": "^1.1.4",
        "is-date-object": "^1.0.1",
        "is-symbol": "^1.0.2"
      }
    },
    "es5-ext": {
      "version": "0.10.62",
      "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz",
      "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
      "requires": {
        "es6-iterator": "^2.0.3",
        "es6-symbol": "^3.1.3",
        "next-tick": "^1.1.0"
      }
    },
    "es6-iterator": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
      "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
      "requires": {
        "d": "1",
        "es5-ext": "^0.10.35",
        "es6-symbol": "^3.1.1"
      }
    },
    "es6-map": {
      "version": "0.1.5",
      "resolved": "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz",
      "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==",
      "requires": {
        "d": "1",
        "es5-ext": "~0.10.14",
        "es6-iterator": "~2.0.1",
        "es6-set": "~0.1.5",
        "es6-symbol": "~3.1.1",
        "event-emitter": "~0.3.5"
      }
    },
    "es6-set": {
      "version": "0.1.6",
      "resolved": "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz",
      "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==",
      "requires": {
        "d": "^1.0.1",
        "es5-ext": "^0.10.62",
        "es6-iterator": "~2.0.3",
        "es6-symbol": "^3.1.3",
        "event-emitter": "^0.3.5",
        "type": "^2.7.2"
      },
      "dependencies": {
        "type": {
          "version": "2.7.2",
          "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz",
          "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
        }
      }
    },
    "es6-symbol": {
      "version": "3.1.3",
      "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz",
      "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
      "requires": {
        "d": "^1.0.1",
        "ext": "^1.1.2"
      }
    },
    "esbuild": {
@@ -11802,6 +12414,15 @@
      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
      "dev": true
    },
    "event-emitter": {
      "version": "0.3.5",
      "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
      "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
      "requires": {
        "d": "1",
        "es5-ext": "~0.10.14"
      }
    },
    "eventemitter3": {
      "version": "5.0.0",
      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.0.tgz",
@@ -11898,6 +12519,26 @@
          "dev": true
        }
      }
    },
    "ext": {
      "version": "1.7.0",
      "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
      "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
      "requires": {
        "type": "^2.7.2"
      },
      "dependencies": {
        "type": {
          "version": "2.7.2",
          "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz",
          "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
        }
      }
    },
    "extend": {
      "version": "3.0.2",
      "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
    },
    "extend-shallow": {
      "version": "2.0.1",
@@ -12144,6 +12785,64 @@
        "is-glob": "^4.0.1"
      }
    },
    "glob-stream": {
      "version": "6.1.0",
      "resolved": "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz",
      "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==",
      "requires": {
        "extend": "^3.0.0",
        "glob": "^7.1.1",
        "glob-parent": "^3.1.0",
        "is-negated-glob": "^1.0.0",
        "ordered-read-streams": "^1.0.0",
        "pumpify": "^1.3.5",
        "readable-stream": "^2.1.5",
        "remove-trailing-separator": "^1.0.1",
        "to-absolute-glob": "^2.0.0",
        "unique-stream": "^2.0.2"
      },
      "dependencies": {
        "glob-parent": {
          "version": "3.1.0",
          "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
          "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
          "requires": {
            "is-glob": "^3.1.0",
            "path-dirname": "^1.0.0"
          }
        },
        "is-glob": {
          "version": "3.1.0",
          "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
          "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
          "requires": {
            "is-extglob": "^2.1.0"
          }
        },
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "globals": {
      "version": "13.12.0",
      "resolved": "https://registry.npmmirror.com/globals/download/globals-13.12.0.tgz?cache=0&sync_timestamp=1635390798667&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fglobals%2Fdownload%2Fglobals-13.12.0.tgz",
@@ -12316,12 +13015,14 @@
      }
    },
    "help-me": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/help-me/-/help-me-3.0.0.tgz",
      "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==",
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz",
      "integrity": "sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==",
      "requires": {
        "glob": "^7.1.6",
        "readable-stream": "^3.6.0"
        "callback-stream": "^1.0.2",
        "glob-stream": "^6.1.0",
        "through2": "^2.0.1",
        "xtend": "^4.0.0"
      }
    },
    "htmlparser2": {
@@ -12413,6 +13114,15 @@
        "get-intrinsic": "^1.1.0",
        "has": "^1.0.3",
        "side-channel": "^1.0.4"
      }
    },
    "is-absolute": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz",
      "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
      "requires": {
        "is-relative": "^1.0.0",
        "is-windows": "^1.0.1"
      }
    },
    "is-accessor-descriptor": {
@@ -12551,6 +13261,11 @@
        "is-extglob": "^2.1.1"
      }
    },
    "is-negated-glob": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz",
      "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug=="
    },
    "is-negative-zero": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/is-negative-zero/download/is-negative-zero-2.0.2.tgz",
@@ -12601,6 +13316,14 @@
        "has-tostringtag": "^1.0.0"
      }
    },
    "is-relative": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz",
      "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
      "requires": {
        "is-unc-path": "^1.0.0"
      }
    },
    "is-shared-array-buffer": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/download/is-shared-array-buffer-1.0.1.tgz",
@@ -12625,6 +13348,14 @@
        "has-symbols": "^1.0.2"
      }
    },
    "is-unc-path": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz",
      "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
      "requires": {
        "unc-path-regex": "^0.1.2"
      }
    },
    "is-weakref": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/is-weakref/download/is-weakref-1.0.2.tgz",
@@ -12637,14 +13368,12 @@
    "is-windows": {
      "version": "1.0.2",
      "resolved": "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz",
      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
      "dev": true
      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0="
    },
    "isarray": {
      "version": "1.0.0",
      "resolved": "https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz",
      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
      "dev": true
      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
    },
    "isexe": {
      "version": "2.0.0",
@@ -12666,11 +13395,6 @@
      "resolved": "https://registry.npmmirror.com/js-base64/download/js-base64-2.6.4.tgz",
      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
      "dev": true
    },
    "js-sdsl": {
      "version": "4.3.0",
      "resolved": "https://registry.npmmirror.com/js-sdsl/-/js-sdsl-4.3.0.tgz",
      "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ=="
    },
    "js-tokens": {
      "version": "4.0.0",
@@ -12707,8 +13431,7 @@
    "json-stable-stringify-without-jsonify": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz",
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
      "dev": true
      "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE="
    },
    "json5": {
      "version": "1.0.1",
@@ -12863,6 +13586,7 @@
      "version": "6.0.0",
      "resolved": "https://registry.npm.taobao.org/lru-cache/download/lru-cache-6.0.0.tgz?cache=0&sync_timestamp=1599054167787&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"
      }
@@ -13021,32 +13745,54 @@
      }
    },
    "moment": {
      "version": "2.29.1",
      "resolved": "https://registry.npmmirror.com/moment/download/moment-2.29.1.tgz",
      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
      "version": "2.29.4",
      "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
      "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
    },
    "mqtt": {
      "version": "4.3.7",
      "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.3.7.tgz",
      "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==",
      "version": "4.0.1",
      "resolved": "https://registry.npmmirror.com/mqtt/-/mqtt-4.0.1.tgz",
      "integrity": "sha512-sDvB/wI8e3YSSdIxJ74M81lQTFXxg1uFM5/irpQL+IH9crQiW90R69YOnk7UGj9xCqoXBBRPr8fqnkzQUKRYgg==",
      "requires": {
        "base64-js": "^1.3.0",
        "commist": "^1.0.0",
        "concat-stream": "^2.0.0",
        "debug": "^4.1.1",
        "duplexify": "^4.1.1",
        "help-me": "^3.0.0",
        "concat-stream": "^1.6.2",
        "end-of-stream": "^1.4.1",
        "es6-map": "^0.1.5",
        "help-me": "^1.0.1",
        "inherits": "^2.0.3",
        "lru-cache": "^6.0.0",
        "minimist": "^1.2.5",
        "mqtt-packet": "^6.8.0",
        "number-allocator": "^1.0.9",
        "minimist": "^1.2.0",
        "mqtt-packet": "^6.0.0",
        "pump": "^3.0.0",
        "readable-stream": "^3.6.0",
        "readable-stream": "^2.3.6",
        "reinterval": "^1.1.0",
        "rfdc": "^1.3.0",
        "split2": "^3.1.0",
        "ws": "^7.5.5",
        "xtend": "^4.0.2"
        "websocket-stream": "^5.1.2",
        "xtend": "^4.0.1"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "mqtt-packet": {
@@ -13156,6 +13902,11 @@
      "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
      "dev": true
    },
    "next-tick": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
    },
    "no-case": {
      "version": "3.0.4",
      "resolved": "https://registry.npm.taobao.org/no-case/download/no-case-3.0.4.tgz?cache=0&sync_timestamp=1606867308811&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fno-case%2Fdownload%2Fno-case-3.0.4.tgz",
@@ -13198,15 +13949,6 @@
      "dev": true,
      "requires": {
        "boolbase": "^1.0.0"
      }
    },
    "number-allocator": {
      "version": "1.0.14",
      "resolved": "https://registry.npmmirror.com/number-allocator/-/number-allocator-1.0.14.tgz",
      "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==",
      "requires": {
        "debug": "^4.3.1",
        "js-sdsl": "4.3.0"
      }
    },
    "object-assign": {
@@ -13388,6 +14130,38 @@
        "word-wrap": "^1.2.3"
      }
    },
    "ordered-read-streams": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
      "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==",
      "requires": {
        "readable-stream": "^2.0.1"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "p-limit": {
      "version": "1.3.0",
      "resolved": "https://registry.nlark.com/p-limit/download/p-limit-1.3.0.tgz",
@@ -13492,6 +14266,11 @@
          "dev": true
        }
      }
    },
    "path-dirname": {
      "version": "1.0.2",
      "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz",
      "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q=="
    },
    "path-exists": {
      "version": "3.0.0",
@@ -13673,6 +14452,27 @@
        "once": "^1.3.1"
      }
    },
    "pumpify": {
      "version": "1.5.1",
      "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz",
      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
      "requires": {
        "duplexify": "^3.6.0",
        "inherits": "^2.0.3",
        "pump": "^2.0.0"
      },
      "dependencies": {
        "pump": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
          "requires": {
            "end-of-stream": "^1.1.0",
            "once": "^1.3.1"
          }
        }
      }
    },
    "punycode": {
      "version": "2.1.1",
      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
@@ -13802,6 +14602,11 @@
      "resolved": "https://registry.npmmirror.com/reinterval/-/reinterval-1.1.0.tgz",
      "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ=="
    },
    "remove-trailing-separator": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
      "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw=="
    },
    "repeat-element": {
      "version": "1.1.4",
      "resolved": "https://registry.nlark.com/repeat-element/download/repeat-element-1.1.4.tgz",
@@ -13858,11 +14663,6 @@
      "version": "1.0.4",
      "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
      "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY="
    },
    "rfdc": {
      "version": "1.3.0",
      "resolved": "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz",
      "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA=="
    },
    "rimraf": {
      "version": "3.0.2",
@@ -14829,6 +15629,57 @@
      "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
      "dev": true
    },
    "through2": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
      "requires": {
        "readable-stream": "~2.3.6",
        "xtend": "~4.0.1"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "through2-filter": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz",
      "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==",
      "requires": {
        "through2": "~2.0.0",
        "xtend": "~4.0.0"
      }
    },
    "to-absolute-glob": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
      "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==",
      "requires": {
        "is-absolute": "^1.0.0",
        "is-negated-glob": "^1.0.0"
      }
    },
    "to-fast-properties": {
      "version": "2.0.0",
      "resolved": "https://registry.nlark.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz?cache=0&sync_timestamp=1628418893613&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fto-fast-properties%2Fdownload%2Fto-fast-properties-2.0.0.tgz",
@@ -14976,6 +15827,11 @@
        "tslib": "^1.8.1"
      }
    },
    "type": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz",
      "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
    },
    "type-check": {
      "version": "0.4.0",
      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.4.0.tgz",
@@ -15008,6 +15864,11 @@
      "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==",
      "dev": true
    },
    "ultron": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz",
      "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og=="
    },
    "unbox-primitive": {
      "version": "1.0.1",
      "resolved": "https://registry.npm.taobao.org/unbox-primitive/download/unbox-primitive-1.0.1.tgz?cache=0&sync_timestamp=1616706302651&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funbox-primitive%2Fdownload%2Funbox-primitive-1.0.1.tgz",
@@ -15019,6 +15880,11 @@
        "has-symbols": "^1.0.2",
        "which-boxed-primitive": "^1.0.2"
      }
    },
    "unc-path-regex": {
      "version": "0.1.2",
      "resolved": "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
      "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg=="
    },
    "unimport": {
      "version": "3.2.0",
@@ -15077,6 +15943,15 @@
        "get-value": "^2.0.6",
        "is-extendable": "^0.1.1",
        "set-value": "^2.0.1"
      }
    },
    "unique-stream": {
      "version": "2.3.1",
      "resolved": "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz",
      "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==",
      "requires": {
        "json-stable-stringify-without-jsonify": "^1.0.1",
        "through2-filter": "^3.0.0"
      }
    },
    "universalify": {
@@ -15596,6 +16471,43 @@
      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==",
      "dev": true
    },
    "websocket-stream": {
      "version": "5.5.2",
      "resolved": "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz",
      "integrity": "sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==",
      "requires": {
        "duplexify": "^3.5.1",
        "inherits": "^2.0.1",
        "readable-stream": "^2.3.3",
        "safe-buffer": "^5.1.2",
        "ws": "^3.2.0",
        "xtend": "^4.0.0"
      },
      "dependencies": {
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
          "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
          "requires": {
            "core-util-is": "~1.0.0",
            "inherits": "~2.0.3",
            "isarray": "~1.0.0",
            "process-nextick-args": "~2.0.0",
            "safe-buffer": "~5.1.1",
            "string_decoder": "~1.1.1",
            "util-deprecate": "~1.0.1"
          }
        },
        "string_decoder": {
          "version": "1.1.1",
          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
          "requires": {
            "safe-buffer": "~5.1.0"
          }
        }
      }
    },
    "which": {
      "version": "2.0.2",
      "resolved": "https://registry.npm.taobao.org/which/download/which-2.0.2.tgz",
@@ -15630,10 +16542,14 @@
      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
    },
    "ws": {
      "version": "7.5.9",
      "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
      "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
      "requires": {}
      "version": "3.3.3",
      "resolved": "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz",
      "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==",
      "requires": {
        "async-limiter": "~1.0.0",
        "safe-buffer": "~5.1.0",
        "ultron": "~1.1.0"
      }
    },
    "xtend": {
      "version": "4.0.2",
@@ -15643,7 +16559,8 @@
    "yallist": {
      "version": "4.0.0",
      "resolved": "https://registry.npm.taobao.org/yallist/download/yallist-4.0.0.tgz",
      "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI="
      "integrity": "sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=",
      "dev": true
    }
  }
}
package.json
@@ -17,6 +17,7 @@
    "axios": "^0.21.1",
    "eventemitter3": "^5.0.0",
    "mitt": "^3.0.0",
    "moment": "^2.29.4",
    "mqtt": "4.0.1",
    "query-string": "^7.0.1",
    "reconnecting-websocket": "^4.4.0",
src/App.vue
@@ -1,26 +1,16 @@
<template>
  <div class="demo-app">
    <router-view />
    <!-- <div class="map-wrapper">
      <GMap/>
    </div> -->
<!--    <a-local-provider :locale="zhCN">-->
      <router-view />
<!--    </a-local-provider>-->
  </div>
</template>
<script lang="ts">
import { computed, defineComponent, ref } from 'vue'
import { useMyStore } from './store'
import GMap from '/@/components/GMap.vue'
export default defineComponent({
  name: 'App',
  components: { GMap },
  setup () {
    const store = useMyStore()
    return {}
  }
})
<script setup lang="ts">
import zhCN from 'ant-design-vue/es/locale/zh_CN'
import moment from 'moment'
import 'moment/dist/locale/zh-cn'
moment.locale('zh-cn')
</script>
<style lang="scss" scoped>
.demo-app {
src/api/http/request.ts
@@ -33,10 +33,17 @@
instance.interceptors.response.use(
  response => {
    // console.info('URL: ' + response.config.baseURL + response.config.url, '\nData: ', response.data, '\nResponse:', response)
    if (response.data.code && !response.data.success) {
      message.error(response.data.message)
    }
      //处理消息返回
      // if (response.data.code && !response.data.success) {
    //   message.error(response.data.message)
    // }
      if (response.data.code != 5000) {
          message.error(response.data.message)
      }
    return response
  },
  err => {
src/api/http/type.ts
@@ -4,9 +4,12 @@
}
export interface IPage {
 page: number;
 total: number;
 page_size: number;
 page?: number;
 total?: number;
 page_size?: number;
 current?:number;
 size?:number;
}
export interface IListWorkspaceResponse<T> {
src/api/manage.ts
@@ -2,7 +2,8 @@
import request, { CommonListResponse, IListWorkspaceResponse, IPage, IWorkspaceResponse } from '/@/api/http/request'
import { Device } from '/@/types/device'
const HTTP_PREFIX = 'system/auth'
const HTTP_PREFIX = 'api/system'
const HTTP_PREFIX_MANAGE='api/drone'
// login
export interface LoginBody {
@@ -60,10 +61,10 @@
  return result.data
}
// Get Device Topo
export const getDeviceTopo = async function (workspace_id: string): Promise<IWorkspaceResponse<any>> {
  const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices`
  const result = await request.get(url)
// 获取在线设备信息
export const getDeviceTopo = async function (params:any): Promise<IWorkspaceResponse<any>> {
  const url = `${HTTP_PREFIX_MANAGE}/manage/device`
  const result = await request.get(url,{params})
  return result.data
}
@@ -99,6 +100,17 @@
  const result = await request.get(url)
  return result.data
}
export const getUserPage = async function (params: any, body: IPage): Promise<CommonListResponse<any>> {
  console.log(params,"++++++++++++++")
  const url = `${HTTP_PREFIX}/user/page`
  const result = await request.get(url,{params:{...params,pageNum:body.current,pageSize:body.size}})
  return result.data
}
export const updateUserInfo = async function (wid: string, user_id: string, body: {}): Promise<IWorkspaceResponse<any>> {
  const url = `${HTTP_PREFIX}/users/${wid}/users/${user_id}`
@@ -137,6 +149,18 @@
  return result.data
}
/**
 * 获取设备信息
 * @param params
 */
export const getDeviceList = async function (params:any): Promise<IListWorkspaceResponse<Device>> {
  const url = `${HTTP_PREFIX}/manage/device/getPage`
  const result = await request.get(url,{params})
  return result.data
}
export const updateDevice = async function (body: {}, workspace_id: string, device_sn: string): Promise<IWorkspaceResponse<any>> {
  const url = `${HTTP_PREFIX}/devices/${workspace_id}/devices/${device_sn}`
  const result = await request.put(url, body)
src/components/task/CreatePlan.vue
@@ -5,17 +5,14 @@
    </div>
    <div class="content">
      <a-form ref="valueRef" layout="horizontal" :hideRequiredMark="true" :rules="rules" :model="planForm"
              labelAlign="left">
        <a-form-item label="计划名称" name="name" :labelCol="{span: 23}">
          <a-input style="background: black;" placeholder="请输入计划名称" v-model:value="planForm.name"/>
        labelAlign="left">
        <a-form-item label="计划名称" name="name" :labelCol="{ span: 23 }">
          <a-input style="background: black;" placeholder="请输入计划名称" v-model:value="planForm.name" />
        </a-form-item>
        <!-- 航线 -->
        <a-form-item label="执行航线" :wrapperCol="{offset: 12}" name="fileId">
          <router-link
              :to="{name: 'select-plan'}"
              @click="selectRoute"
          >
        <a-form-item label="执行航线" :wrapperCol="{ offset: 12 }" name="fileId">
          <router-link :to="{ name: 'select-plan' }" @click="selectRoute">
            选择航线
          </router-link>
        </a-form-item>
@@ -28,22 +25,28 @@
                  {{ wayline.name }}
                </div>
              </a-tooltip>
              <div class="ml10">
                <UserOutlined/>
                <UserOutlined />
              </div>
              <a-tooltip :title="wayline.user_name">
                <div class="ml5 pr10"
                     style="width: 80px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
                  style="width: 80px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">
                  {{ wayline.user_name }}
                </div>
              </a-tooltip>
            </div>
            <div class="ml10 mt5" style="color: hsla(0,0%,100%,0.65);">
              <span><RocketOutlined/></span>
              <span>
                <RocketOutlined />
              </span>
              <span class="ml5">{{
                  Object.keys(EDeviceType)[Object.values(EDeviceType).indexOf(wayline.drone_model_key)]
                }}</span>
              <span class="ml10"><CameraFilled style="border-top: 1px solid; padding-top: -3px;"/></span>
                Object.keys(EDeviceType)[Object.values(EDeviceType).indexOf(wayline.drone_model_key)]
              }}</span>
              <span class="ml10">
                <CameraFilled style="border-top: 1px solid; padding-top: -3px;" />
              </span>
              <span class="ml5" v-for="payload in wayline.payload_model_keys" :key="payload.id">
                {{ Object.keys(EDeviceType)[Object.values(EDeviceType).indexOf(payload)] }}
              </span>
@@ -55,11 +58,8 @@
        </a-form-item>
        <!-- 设备 -->
        <a-form-item label="执行设备" :wrapperCol="{offset: 12}" v-model:value="planForm.dockSn" name="dockSn">
          <router-link
              :to="{name: 'select-plan'}"
              @click="selectDevice"
          >选择设备
        <a-form-item label="执行设备" :wrapperCol="{ offset: 12 }" v-model:value="planForm.dockSn" name="dockSn">
          <router-link :to="{ name: 'select-plan' }" @click="selectDevice">选择设备
          </router-link>
        </a-form-item>
        <a-form-item v-if="planForm.dockSn" style="margin-top: -15px;">
@@ -72,19 +72,22 @@
              </a-tooltip>
            </div>
            <div class="ml10 mt5" style="color: hsla(0,0%,100%,0.65);">
              <span><RocketOutlined/></span>
              <span>
                <RocketOutlined />
              </span>
              <span class="ml5">{{ dock.children?.nickname ?? 'No drone' }}</span>
            </div>
          </div>
        </a-form-item>
        <!-- 任务策略 -->
        <a-form-item label="任务策略" name="taskType" class="plan-timer-form-item" :labelCol="{span: 23}" >
        <a-form-item label="任务策略" name="taskType" class="plan-timer-form-item" :labelCol="{ span: 23 }">
          <div style="white-space: nowrap;">
            <a-radio-group v-model:value="planForm.taskType" button-style="solid" @change="taskTypeChange">
            <a-radio-group class="group_radio" v-model:value="planForm.taskType" button-style="solid"
              @change="taskTypeChange">
              <a-radio-button v-for="type in TaskTypeOptions" :value="type.value" :key="type.value">{{
                  type.label
                }}
                type.label
              }}
              </a-radio-button>
            </a-radio-group>
@@ -94,131 +97,132 @@
        <!-- 单次定时- -->
        <a-form-item label="执行时间" v-if="planForm.taskType === TaskType.Timed" name="executeSingleTime"
                     :labelCol="{span: 23}">
          <a-date-picker
              v-model:value="planForm.executeSingleTime"
              format="YYYY-MM-DD HH:mm"
              valueFormat="YYYY-MM-DD HH:mm"
              show-time
              placeholder="请选择日期"
          />
          :labelCol="{ span: 23 }">
          <a-date-picker v-model:value="planForm.executeSingleTime" format="YYYY-MM-DD HH:mm"
            valueFormat="YYYY-MM-DD HH:mm" show-time placeholder="请选择日期" />
        </a-form-item>
        <!--重复定时-->
        <!--执行日期-->
        <a-form-item v-if="planForm.taskType === TaskType.RepeatTimed || planForm.taskType === TaskType.Continuous"
                     label="执行日期" name="repeatExecuteTimeArr" :labelCol="{span: 23}">
          label="执行日期" name="repeatExecuteTimeArr" :labelCol="{ span: 23 }">
          <a-range-picker v-model:value="planForm.repeatExecuteTimeArr" format="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
                          :placeholder="['开始日期','结束日期']"/>
            :placeholder="['开始日期', '结束日期']" />
        </a-form-item>
        <!--执行时间-->
        <a-form-item v-if="planForm.taskType ===TaskType.RepeatTimed" label="执行时间" name="repeatTimeArr"
                     :labelCol="{span: 23}">
          <div v-for="(item ,index) in repeatTimeArr" :key="index">
            <a-time-picker style="background: black" v-model:value="item.value" placeholder="请选择时间"
                           format="HH:mm" valueFormat="HH:mm"/>
        <a-form-item v-if="planForm.taskType === TaskType.RepeatTimed" label="执行时间" name="repeatTimeArr"
          :labelCol="{ span: 23 }">
          <div v-for="(item, index) in repeatTimeArr" :key="index">
            <a-time-picker style="background: black" v-model:value="item.value" placeholder="请选择时间" format="HH:mm"
              valueFormat="HH:mm" />
            <a-button @click="addTime" type="default" shape="circle" :size="btnSize">
              <template #icon>
                <PlusCircleOutlined/>
                <PlusCircleOutlined />
              </template>
            </a-button>
            <a-button @click="deleteTime(item)" type="default" shape="circle" :size="btnSize">
              <template #icon>
                <MinusCircleOutlined/>
                <MinusCircleOutlined />
              </template>
            </a-button>
          </div>
        </a-form-item>
        <a-form-item v-if="planForm.taskType ===TaskType.Continuous" label="执行时间" name="repeatTimeArr"
                     :labelCol="{span: 23}">
          <div v-for="(item ,index) in repeatTimeArr" :key="index">
            <a-time-picker style="background: black" v-model:value="item.value[0]" placeholder="请选择时间"
                           format="HH:mm" valueFormat="HH:mm"/>
        <a-form-item v-if="planForm.taskType === TaskType.Continuous" label="执行时间" name="repeatTimeArr"
          :labelCol="{ span: 23 }">
          <div v-for="(item, index) in repeatTimeArr" :key="index">
            <a-time-picker style="background: black" v-model:value="item.value[0]" placeholder="请选择时间" format="HH:mm"
              valueFormat="HH:mm" />
            <div style="color: white">-</div>
            <a-time-picker style="background: black" v-model:value="item.value[1]" placeholder="请选择时间"
                           format="HH:mm"  valueFormat="HH:mm"/>
            <a-time-picker style="background: black" v-model:value="item.value[1]" placeholder="请选择时间" format="HH:mm"
              valueFormat="HH:mm" />
            <a-button @click="addTime" type="default" shape="circle" :size="btnSize">
              <template #icon>
                <PlusCircleOutlined/>
                <PlusCircleOutlined />
              </template>
            </a-button>
            <a-button @click="deleteTime(item)" type="default" shape="circle" :size="btnSize">
              <template #icon>
                <MinusCircleOutlined/>
                <MinusCircleOutlined />
              </template>
            </a-button>
          </div>
        </a-form-item>
        <!-- 任务开始执行的电量 -->
        <a-form-item v-if="planForm.taskType === TaskType.Continuous" label="任务开始执行的电量" :labelCol="{span: 23}"
                     name="startPower">
          <a-input style="background: black;" placeholder="请输入计划名称" v-model:value="planForm.startPower"/>
        <a-form-item v-if="planForm.taskType === TaskType.Continuous" label="任务开始执行的电量" :labelCol="{ span: 23 }"
          name="startPower">
          <a-input style="background: black;" placeholder="请输入计划名称" v-model:value="planForm.startPower" />
        </a-form-item>
        <!--重复频率-->
        <a-form-item v-if="planForm.taskType === TaskType.RepeatTimed || planForm.taskType === TaskType.Continuous"
                     label="重复频率" name="frequencyValue" :labelCol="{span: 23}">
          label="重复频率" name="frequencyValue" :labelCol="{ span: 23 }">
          <div>
            <div style="color: white">每</div>
            <a-input style="background-color: black;" placeholder="请输入计划名称"
                     v-model:value="planForm.frequencyValue"/>
            <a-input style="background-color: black;" placeholder="请输入计划名称" v-model:value="planForm.frequencyValue" />
            <a-select v-model:value="planForm.frequencyType" style="width: 200px"
                      :options="FrequencyTypeOptions"></a-select>
              :options="FrequencyTypeOptions"></a-select>
          </div>
        </a-form-item>
        <!--重复规则-->
        <a-form-item v-if="planForm.taskType === TaskType.RepeatTimed || planForm.taskType === TaskType.Continuous"
                     label="重复规则" name="repeatRuleType" :labelCol="{span: 23}">
          label="重复规则" name="repeatRuleType" :labelCol="{ span: 23 }">
          <div>
            <a-select v-model:value="planForm.repeatRuleType" style="background-color:black;width: 200px"
                      @change="repeatRuleTypeChange" :options="RepeatRuleTypeOptions"></a-select>
              @change="repeatRuleTypeChange" :options="RepeatRuleTypeOptions"></a-select>
          </div>
          <div v-if="planForm.repeatRuleType === RepeatRuleType.day">
            <a-button class="btn" :class="[item.checked?'btn-selected':'btn-unselected'] "
                      v-for="(item,index) in dayNumArr" :key="index" size="small" @click="selectBtn(item)">
            <a-button class="btn" :class="[item.checked ? 'btn-selected' : 'btn-unselected']"
              v-for="(item, index) in dayNumArr" :key="index" size="small" @click="selectBtn(item)">
              {{ item.value }}
            </a-button>
          </div>
          <div v-if="planForm.repeatRuleType===RepeatRuleType.week">
          <div v-if="planForm.repeatRuleType === RepeatRuleType.week">
            <a-select v-model:value="planForm.repeatRuleValueWeek[0]" style="width: 200px"
                      :options="WhichWeekOptions"></a-select>
              :options="WhichWeekOptions"></a-select>
            <a-select v-model:value="planForm.repeatRuleValueWeek[1]" style="width: 200px"
                      :options="WhichDayOptions"></a-select>
              :options="WhichDayOptions"></a-select>
          </div>
        </a-form-item>
        <!-- 相对机场返航高度 -->
        <a-form-item label="相对机场返航高度(ALT)" :labelCol="{span: 23}" name="rthAltitude">
        <a-form-item label="相对机场返航高度(ALT)" :labelCol="{ span: 23 }" name="rthAltitude">
          <div class="form-alt">
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',100)" @click="calculate('-',100)">-100</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',10)" @click="calculate('-',10)">-10</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',1)" @click="calculate('-',1)">-1</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 100)"
              @click="calculate('-', 100)">-100</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 10)"
              @click="calculate('-', 10)">-10</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 1)"
              @click="calculate('-', 1)">-1</a-button>
            <a-input class="alt-input" v-model:value="planForm.rthAltitude" :min="20" :max="1500"  required/>
            <a-input class="alt-input" v-model:value="planForm.rthAltitude" :min="20" :max="1500" required />
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',1)" @click="calculate('+',1)">+1</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',10)" @click="calculate('+',10)">+10</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',100)" @click="calculate('+',100)"> +100</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 1)"
              @click="calculate('+', 1)">+1</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 10)"
              @click="calculate('+', 10)">+10</a-button>
            <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 100)"
              @click="calculate('+', 100)"> +100</a-button>
          </div>
        </a-form-item>
        <!-- Lost Action -->
        <a-form-item label="航线飞行中失联" :labelCol="{span: 23}" name="outOfControl">
        <a-form-item label="航线飞行中失联" :labelCol="{ span: 23 }" name="outOfControl">
          <div class="form-outOfControl" style="white-space: nowrap;">
            <a-radio-group v-model:value="planForm.outOfControl" button-style="solid">
              <a-radio-button v-for="action in OutOfControlActionOptions" :value="action.value" :key="action.value">
              <a-radio-button v-for="(action, acIndex) in  OutOfControlActionOptions " :value="action.value"
                :key="action.value" :style="{ marginRight: ( acIndex === 0 ? '10px' : '0px' ) }">
                {{ action.label }}
              </a-radio-button>
            </a-radio-group>
@@ -226,14 +230,14 @@
        </a-form-item>
        <!--完成动作-->
        <a-form-item label="完成动作" :labelCol="{span: 23}" name="finishAction">
        <a-form-item label="完成动作" :labelCol="{ span: 23 }" name="finishAction">
          <a-select disabled v-model:value="planForm.finishAction" style="width: 200px"
                    :options="FinishActionOptions"></a-select>
            :options="FinishActionOptions"></a-select>
        </a-form-item>
        <!--断点续飞-->
        <a-form-item label="自动断点续飞" :labelCol="{span: 20}" name="breakContinue">
          <a-switch v-model:checked="planForm.breakContinue" :checkedValue="1" :unCheckedValue="2"/>
        <a-form-item label="自动断点续飞" :labelCol="{ span: 20 }" name="breakContinue">
          <a-switch v-model:checked="planForm.breakContinue" :checkedValue="1" :unCheckedValue="2" />
        </a-form-item>
        <!--提交,取消按钮-->
@@ -249,20 +253,20 @@
    </div>
  </div>
  <div v-if="drawerVisible"
       style="position: absolute; left: 335px; width: 280px; height: 100vh; float: right; top: 0; z-index: 1000; color: white; background: #282828;">
    style="position: absolute; left: 370px; width: 280px; height: 100vh; float: right; top: 0; z-index: 1000; color: white; background: #282828;">
    <div>
      <router-view :name="routeName"/>
      <router-view :name="routeName" />
    </div>
    <div style="position: absolute; top: 15px; right: 10px;">
      <a style="color: white;" @click="closePanel">
        <CloseOutlined/>
        <CloseOutlined />
      </a>
    </div>
  </div>
</template>
<script lang="ts" setup>
import { computed, onMounted, onUnmounted, reactive, ref, toRaw, UnwrapRef } from 'vue'
import { computed, onMounted, onUnmounted, reactive, ref, toRaw, UnwrapRef, watch } from 'vue'
import {
  CloseOutlined,
  RocketOutlined,
@@ -289,6 +293,7 @@
} from '/@/types/task'
import moment, { Moment } from 'moment'
import { RuleObject } from 'ant-design-vue/es/form/interface'
import { clickPoint, pointCenter } from '/@/hooks/use-center-point'
const btnSize = 'size'
const root = getRoot()
@@ -296,6 +301,13 @@
const workspaceId = localStorage.getItem(ELocalStorageKey.WorkspaceId)!
const wayline = computed<WaylineFile>(() => {
  return store.state.waylineInfo
})
watch(() => wayline, (newVal) => {
  if (newVal.value.id) {
    planForm.fileId = newVal.value.id
  }
}, {
  deep: true
})
const calculateDisabled = computed(() => {
@@ -368,8 +380,6 @@
  }
}
const repeatRuleValue = ref([] as string[])
const dock = computed<Device>(() => {
  return store.state.dockInfo
})
@@ -416,12 +426,12 @@
// 构建表单
function buildForm () {
  const form :any = {}
  const form: any = {}
  // 公共字段
  form.name = planForm.name
  form.workspaceId = store.state.common.projectId
  form.waylineId = planForm.waylineId
  form.fileId = planForm.fileId
  form.dockSn = planForm.dockSn
  form.taskType = planForm.taskType
  form.rthAltitude = planForm.rthAltitude
@@ -564,8 +574,13 @@
      margin: 10px;
    }
    form label, input, .ant-input, .ant-calendar-range-picker-separator,
    .ant-input:hover, .ant-time-picker .anticon, .ant-calendar-picker .anticon {
    form label,
    input,
    .ant-input,
    .ant-calendar-range-picker-separator,
    .ant-input:hover,
    .ant-time-picker .anticon,
    .ant-calendar-picker .anticon {
      background-color: #232323;
      color: #fff;
    }
@@ -581,10 +596,17 @@
        color: #fff;
        width: 23%;
        text-align: center;
        padding: 0;
        &.ant-radio-button-wrapper-checked {
          background-color: #1890ff;
        }
      }
      .group_radio {
        display: flex;
        align-items: center;
        justify-content: space-between;
      }
    }
  }
@@ -645,27 +667,30 @@
  }
}
.form-alt{
.form-alt {
  display: flex;
  align-items: center;
  .alt-btn{
    margin: 0 2px 0 2px ;
  .alt-btn {
    margin: 0 2px 0 2px;
    width: 45px;
    padding: 0 4px;
  }
  .alt-input{
  .alt-input {
    width: 50px;
    padding: 0;
    text-align: center;
  }
}
.btn-selected{
.btn-selected {
  background: #2d8cf0 !important;
  color:white !important;
  color: white !important;
}
.btn-unselected {
  background: #3c3c3c !important;
  color:white !important;
  color: white !important;
}
</style>
src/pages/page-web/projects/devices.vue
@@ -8,6 +8,7 @@
      机场
    </a-menu-item>
  </a-menu>
  <div class="device-table-wrap table flex-display flex-column">
    <a-table :columns="columns" :data-source="data.device" :pagination="paginationProp" @change="refreshData" row-key="device_sn" :expandedRowKeys="expandRows"
    :row-selection="rowSelection" :rowClassName="rowClassName" :scroll="{ x: '100%', y: 600 }"
@@ -26,6 +27,7 @@
          </template>
        </div>
      </template>
      <template v-for="col in ['sn', 'workspace']" #[col]="{ text }" :key="col">
        <a-tooltip :title="text">
            <span>{{ text }}</span>
@@ -113,12 +115,13 @@
      :device="currentDevice">
    </DeviceHmsDrawer>
  </div>
</template>
<script lang="ts" setup>
import { ColumnProps, TableState } from 'ant-design-vue/lib/table/interface'
import { h, onMounted, reactive, ref, UnwrapRef } from 'vue'
import { IPage } from '/@/api/http/type'
import { BindBody, bindDevice, getBindingDevices, unbindDevice, updateDevice } from '/@/api/manage'
import { BindBody, bindDevice, getBindingDevices, getDeviceList, unbindDevice, updateDevice } from '/@/api/manage'
import { EDeviceTypeName, ELocalStorageKey } from '/@/types'
import { EditOutlined, CheckOutlined, CloseOutlined, DeleteOutlined, FileSearchOutlined, CloudServerOutlined } from '@ant-design/icons-vue'
import { Device, DeviceFirmwareStatusEnum } from '/@/types/device'
@@ -139,8 +142,8 @@
const deleteTip = ref<boolean>(false)
const deleteSn = ref<string>()
const columns: ColumnProps[] = [
  { title: '设备型号', dataIndex: 'device_name', width: 100, className: 'titleStyle' },
  { title: '设备SN', dataIndex: 'device_sn', width: 100, className: 'titleStyle', ellipsis: true, slots: { customRender: 'sn' } },
  { title: '设备型号', dataIndex: 'deviceName', width: 100, className: 'titleStyle' },
  { title: '设备SN', dataIndex: 'deviceSn', width: 100, className: 'titleStyle', ellipsis: true, slots: { customRender: 'sn' } },
  {
    title: '设备组织名称',
    dataIndex: 'nickname',
@@ -150,11 +153,11 @@
    ellipsis: true,
    slots: { customRender: 'nickname' }
  },
  { title: '固件版本', dataIndex: 'firmware_version', width: 150, className: 'titleStyle', slots: { customRender: 'firmware_version' } },
  { title: '固件版本', dataIndex: 'firmwareVersion', width: 150, className: 'titleStyle', slots: { customRender: 'firmware_version' } },
  { title: '在线状态', dataIndex: 'status', width: 100, className: 'titleStyle', slots: { customRender: 'status' } },
  {
    title: '所属项目',
    dataIndex: 'workspace_name',
    dataIndex: 'workspaceName',
    width: 100,
    className: 'titleStyle',
    ellipsis: true,
@@ -172,8 +175,8 @@
      return obj
    }
  },
  { title: '加入组织时间', dataIndex: 'bound_time', width: 150, sorter: (a: Device, b: Device) => a.bound_time.localeCompare(b.bound_time), className: 'titleStyle' },
  { title: '在线时间', dataIndex: 'login_time', width: 150, sorter: (a: Device, b: Device) => a.login_time.localeCompare(b.login_time), className: 'titleStyle' },
  { title: '加入组织时间', dataIndex: 'boundTime', width: 150, sorter: (a: Device, b: Device) => a.bound_time.localeCompare(b.bound_time), className: 'titleStyle' },
  { title: '在线时间', dataIndex: 'loginTime', width: 150, sorter: (a: Device, b: Device) => a.login_time.localeCompare(b.login_time), className: 'titleStyle' },
  {
    title: '操作',
    dataIndex: 'actions',
@@ -221,8 +224,8 @@
// 获取分页信息
function getPaginationBody () {
  return {
    page: paginationProp.current,
    page_size: paginationProp.pageSize
    current: paginationProp.current,
    size: paginationProp.pageSize
  } as IPage
}
@@ -297,28 +300,22 @@
useDeviceUpgradeEvent(onDeviceUpgradeWs)
// 获取设备列表信息
function getDevices (domain: number, closeLoading?: boolean) {
  if (!closeLoading) {
    loading.value = true
  }
  getBindingDevices(workspaceId, getPaginationBody(), domain).then(res => {
    if (res.code !== 0) {
function getDevices (params:any) {
  loading.value = true
  const paginationBody = getPaginationBody()
  getDeviceList(Object.assign(params, paginationBody)).then(res => {
    if (res.code !== 5000) {
      return
    }
    const resData: Device[] = res.data.list
    expandRows.value = []
    resData.forEach((val: any) => {
      if (val.children) {
        val.children = [val.children]
      }
      if (judgeCurrentType(EDeviceTypeName.Dock)) {
        expandRows.value.push(val.device_sn)
      }
    })
    data.device = resData
    paginationProp.total = res.data.pagination.total
    paginationProp.current = res.data.pagination.page
    paginationProp.pageSize = res.data.pagination.page_size
    console.log(res, '++++++++++')
    const list = res.data.records
    data.device = list
    loading.value = false
  }).catch(err => {
    console.log('错误:', err)
    loading.value = false
  })
}
@@ -378,7 +375,7 @@
}
onMounted(() => {
  getDevices(current.value[0])
  // getDevices(current.value[0])
})
</script>
src/pages/page-web/projects/members.vue
@@ -21,10 +21,10 @@
      <template #action="{ record }">
        <div class="editable-row-operations">
          <span v-if="editableData[record.user_id]">
            <a-tooltip title="Confirm changes">
            <a-tooltip title="保存">
              <span @click="save(record)" style="color: #28d445;"><CheckOutlined /></span>
            </a-tooltip>
            <a-tooltip title="Modification canceled">
            <a-tooltip title="取消">
              <span @click="() => delete editableData[record.user_id]" class="ml15" style="color: #e70102;"><CloseOutlined /></span>
            </a-tooltip>
          </span>
@@ -43,9 +43,10 @@
import { TableState } from 'ant-design-vue/lib/table/interface'
import { onMounted, reactive, Ref, ref, UnwrapRef } from 'vue'
import { IPage } from '/@/api/http/type'
import { getAllUsersInfo, updateUserInfo } from '/@/api/manage'
import { getAllUsersInfo, getUserPage, updateUserInfo } from '/@/api/manage'
import { ELocalStorageKey } from '/@/types'
import { EditOutlined, DeleteOutlined, CheckOutlined, CloseOutlined } from '@ant-design/icons-vue'
import { useMyStore } from '/@/store'
export interface Member {
    user_id: string
@@ -62,11 +63,11 @@
}
const columns = [
  { title: '账号', dataIndex: 'username', width: 150, sorter: (a: Member, b: Member) => a.username.localeCompare(b.username), className: 'titleStyle' },
  { title: '人员组织名称', dataIndex: 'organization_name', sorter: (a: Member, b: Member) => a.organization_name.localeCompare(b.organization_name), width: 150, className: 'titleStyle' },
  { title: '用户角色', dataIndex: 'user_role', width: 150, className: 'titleStyle', slots: { customRender: 'user_role' } },
  { title: '所属项目', dataIndex: 'project', width: 150, className: 'titleStyle' },
  { title: '人员组织名称', dataIndex: 'deptName', sorter: (a: Member, b: Member) => a.organization_name.localeCompare(b.organization_name), width: 150, className: 'titleStyle' },
  { title: '用户角色', dataIndex: 'roleName', width: 150, className: 'titleStyle', slots: { customRender: 'user_role' } },
  { title: '所属项目', dataIndex: 'projectName', width: 150, className: 'titleStyle' },
  { title: '加入方式', dataIndex: 'join_way', width: 150, className: 'titleStyle', slots: { customRender: 'join_way' } },
  { title: '加入时间', dataIndex: 'create_time', width: 150, sorter: (a: Member, b: Member) => a.create_time.localeCompare(b.create_time), className: 'titleStyle' },
  { title: '加入时间', dataIndex: 'createTime', width: 150, sorter: (a: Member, b: Member) => a.create_time.localeCompare(b.create_time), className: 'titleStyle' },
  { title: '操作', dataIndex: 'action', width: 70, className: 'titleStyle', slots: { customRender: 'action' } },
]
@@ -104,23 +105,28 @@
  page_size: 50
}
const workspaceId: string = localStorage.getItem(ELocalStorageKey.WorkspaceId)!
const store = useMyStore()
const projectId:string = store.state.common.projectId
onMounted(() => {
  getAllUsers(workspaceId, body)
  getAllUsers({ projectId }, body)
})
function refreshData (page: Pagination) {
  body.page = page?.current!
  body.page_size = page?.pageSize!
  getAllUsers(workspaceId, body)
  getAllUsers({ projectId }, body)
}
function getAllUsers (workspaceId: string, page: IPage) {
  getAllUsersInfo(workspaceId, page).then(res => {
    const userList: Member[] = res.data.list
    data.member = userList
    paginationProp.total = res.data.pagination.total
    paginationProp.current = res.data.pagination.page
function getAllUsers (params:any, page: IPage) {
  getUserPage(params, page).then(res => {
    const resData = res.data
    data.member = resData.list
    paginationProp.total = resData.total
    paginationProp.current = resData.pageNum
  }).catch(err => {
    console.log(err)
  })
}
src/pages/page-web/projects/project_list/add_page/components/ComTable.vue
@@ -1,7 +1,8 @@
<template>
    <div class="">
        <a-table class="ant-table-project" v-bind="$attrs" :row-selection="rowSelection" :columns="columns" :data-source="model.userList" />
    </div>
  <div class="">
    <a-table class="ant-table-project" v-bind="$attrs" :row-selection="rowSelection" :columns="columns"
      :data-source="model.userList" />
  </div>
</template>
<script setup lang="ts">
@@ -44,35 +45,35 @@
<style scoped lang="scss">
.ant-table-project :deep(.project_dark) td {
            background-color: #232323;
            color: #fff;
            border: none;
            border-bottom: 1px solid #4f4f4f;
            padding: 10px;
        }
  background-color: #232323 !important;
  color: #fff !important;
  border: none !important;
  border-bottom: 1px solid #4f4f4f;
  padding: 10px !important;
}
        .ant-table-project :deep(.ant-table-placeholder) {
            background: #434343;
            border: none !important;
        }
.ant-table-project :deep(.ant-table-placeholder) {
  background: #434343 !important;
  border: none !important;
}
        .ant-table-project :deep(.ant-table-thead) th {
            background: #3c3c3c;
            color: #fff;
            border: 1px solid #4f4f4f;
            padding: 10px;
        }
.ant-table-project :deep(.ant-table-thead) th {
  background: #3c3c3c !important;
  color: #fff !important;
  border: 1px solid #4f4f4f !important;
  padding: 10px !important;
}
        .ant-table-project :deep(.ant-table-body) table {
            border: 1px solid #4f4f4f;
            border-right: 1px solid #4f4f4f;
        }
.ant-table-project :deep(.ant-table-body) table {
  border: 1px solid #4f4f4f !important;
  border-right: 1px solid #4f4f4f !important;
}
        .ant-table-project :deep(.ant-table-body) {
            background: #434343;
        }
.ant-table-project :deep(.ant-table-body) {
  background: #434343 !important;
}
        .ant-table-project :deep(.ant-empty-description) {
            color: #fff;
        }
.ant-table-project :deep(.ant-empty-description) {
  color: #fff !important;
}
</style>
src/pages/page-web/projects/tsa.vue
@@ -9,6 +9,7 @@
      </a-row>
    </div>
    <div class="scrollbar" :style="{ height: scorllHeight + 'px' }">
      <!--机场-->
      <a-collapse :bordered="false" expandIconPosition="right" accordion style="background: #232323;">
        <a-collapse-panel :key="EDeviceTypeName.Dock" header="机场" style="border-bottom: 1px solid #4f4f4f;">
          <div v-if="onlineDocks.data.length === 0" style="height: 150px; color: white;">
@@ -163,6 +164,8 @@
          </div>
        </a-collapse-panel>
      </a-collapse>
      <!--设备-->
      <a-collapse :bordered="false" expandIconPosition="right" accordion style="background: #232323;">
        <a-collapse-panel :key="EDeviceTypeName.Aircraft" header="在线设备" style="border-bottom: 1px solid #4f4f4f;">
          <div v-if="onlineDevices.data.length === 0" style="height: 150px; color: white;">
src/pages/page-web/projects/wayline.vue
@@ -193,9 +193,13 @@
function selectRoute (wayline: WaylineFile) {
  initKmlFile('/src/assets/kmz/test.kmz')
  // store.commit('SET_SELECT_WAYLINE_INFO', wayline)
  store.commit('SET_SELECT_WAYLINE_INFO', wayline)
}
/**
 * 加载kml文件
 * @param file
 */
function initKmlFile (file:string) {
  const options = {
    camera: global.$viewer.scene.camera,
@@ -235,7 +239,9 @@
      },
    })
    global.$viewer.flyTo(lineEntity)
    global.$viewer.flyTo(lineEntity, {
      offset: new Cesium.HeadingPitchRange(0, -90, 1000)
    })
  })
}
yarn.lock
@@ -1012,7 +1012,7 @@
async-limiter@~1.0.0:
  version "1.0.1"
  resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
  resolved "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz"
  integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async-validator@^3.3.0:
@@ -1059,7 +1059,7 @@
base64-js@^1.3.0, base64-js@^1.3.1:
  version "1.5.1"
  resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
  resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz"
  integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
base@^0.11.1:
@@ -1224,7 +1224,7 @@
callback-stream@^1.0.2:
  version "1.1.0"
  resolved "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz#4701a51266f06e06eaa71fc17233822d875f4908"
  resolved "https://registry.npmmirror.com/callback-stream/-/callback-stream-1.1.0.tgz"
  integrity sha512-sAZ9kODla+mGACBZ1IpTCAisKoGnv6PykW7fPk1LrM+mMepE18Yz0515yoVcrZy7dQsTUp3uZLQ/9Sx1RnLoHw==
  dependencies:
    inherits "^2.0.1"
@@ -1415,7 +1415,7 @@
concat-stream@^1.6.2:
  version "1.6.2"
  resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
  resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz"
  integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
  dependencies:
    buffer-from "^1.0.0"
@@ -1524,7 +1524,7 @@
d@1, d@^1.0.1:
  version "1.0.1"
  resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
  resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz"
  integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
  dependencies:
    es5-ext "^0.10.50"
@@ -1711,7 +1711,7 @@
duplexify@^3.5.1, duplexify@^3.6.0:
  version "3.7.1"
  resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
  resolved "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz"
  integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==
  dependencies:
    end-of-stream "^1.0.0"
@@ -1815,7 +1815,7 @@
es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@^0.10.62, es5-ext@~0.10.14:
  version "0.10.62"
  resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
  resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz"
  integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
  dependencies:
    es6-iterator "^2.0.3"
@@ -1824,7 +1824,7 @@
es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
  version "2.0.3"
  resolved "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
  resolved "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz"
  integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
  dependencies:
    d "1"
@@ -1833,7 +1833,7 @@
es6-map@^0.1.5:
  version "0.1.5"
  resolved "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0"
  resolved "https://registry.npmmirror.com/es6-map/-/es6-map-0.1.5.tgz"
  integrity sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==
  dependencies:
    d "1"
@@ -1845,7 +1845,7 @@
es6-set@~0.1.5:
  version "0.1.6"
  resolved "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz#5669e3b2aa01d61a50ba79964f733673574983b8"
  resolved "https://registry.npmmirror.com/es6-set/-/es6-set-0.1.6.tgz"
  integrity sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==
  dependencies:
    d "^1.0.1"
@@ -1857,7 +1857,7 @@
es6-symbol@^3.1.1, es6-symbol@^3.1.3, es6-symbol@~3.1.1:
  version "3.1.3"
  resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
  resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz"
  integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
  dependencies:
    d "^1.0.1"
@@ -2138,7 +2138,7 @@
event-emitter@^0.3.5, event-emitter@~0.3.5:
  version "0.3.5"
  resolved "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
  resolved "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz"
  integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
  dependencies:
    d "1"
@@ -2164,7 +2164,7 @@
ext@^1.1.2:
  version "1.7.0"
  resolved "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
  resolved "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz"
  integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
  dependencies:
    type "^2.7.2"
@@ -2186,7 +2186,7 @@
extend@^3.0.0:
  version "3.0.2"
  resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
  resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz"
  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extglob@^2.0.2:
@@ -2385,7 +2385,7 @@
glob-parent@^3.1.0:
  version "3.1.0"
  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz"
  integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==
  dependencies:
    is-glob "^3.1.0"
@@ -2400,7 +2400,7 @@
glob-stream@^6.1.0:
  version "6.1.0"
  resolved "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4"
  resolved "https://registry.npmmirror.com/glob-stream/-/glob-stream-6.1.0.tgz"
  integrity sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==
  dependencies:
    extend "^3.0.0"
@@ -2414,19 +2414,7 @@
    to-absolute-glob "^2.0.0"
    unique-stream "^2.0.2"
glob@^7.1.1:
  version "7.2.3"
  resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
  dependencies:
    fs.realpath "^1.0.0"
    inflight "^1.0.4"
    inherits "2"
    minimatch "^3.1.1"
    once "^1.3.0"
    path-is-absolute "^1.0.0"
glob@^7.1.3:
glob@^7.1.1, glob@^7.1.3:
  version "7.2.0"
  resolved "https://registry.npmmirror.com/glob/download/glob-7.2.0.tgz"
  integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
@@ -2564,7 +2552,7 @@
help-me@^1.0.1:
  version "1.1.0"
  resolved "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz#8f2d508d0600b4a456da2f086556e7e5c056a3c6"
  resolved "https://registry.npmmirror.com/help-me/-/help-me-1.1.0.tgz"
  integrity sha512-P/IZ8yOMne3SCTHbVY429NZ67B/2bVQlcYGZh2iPPbdLrEQ/qY5aGChn0YTDmt7Sb4IKRI51fypItav+lNl76w==
  dependencies:
    callback-stream "^1.0.2"
@@ -2657,7 +2645,7 @@
is-absolute@^1.0.0:
  version "1.0.0"
  resolved "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
  resolved "https://registry.npmmirror.com/is-absolute/-/is-absolute-1.0.0.tgz"
  integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
  dependencies:
    is-relative "^1.0.0"
@@ -2769,8 +2757,8 @@
is-extglob@^2.1.0, is-extglob@^2.1.1:
  version "2.1.1"
  resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
  resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz"
  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-fullwidth-code-point@^3.0.0:
  version "3.0.0"
@@ -2779,7 +2767,7 @@
is-glob@^3.1.0:
  version "3.1.0"
  resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
  resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz"
  integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==
  dependencies:
    is-extglob "^2.1.0"
@@ -2793,7 +2781,7 @@
is-negated-glob@^1.0.0:
  version "1.0.0"
  resolved "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2"
  resolved "https://registry.npmmirror.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz"
  integrity sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==
is-negative-zero@^2.0.1:
@@ -2854,7 +2842,7 @@
is-relative@^1.0.0:
  version "1.0.0"
  resolved "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
  resolved "https://registry.npmmirror.com/is-relative/-/is-relative-1.0.0.tgz"
  integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
  dependencies:
    is-unc-path "^1.0.0"
@@ -2880,7 +2868,7 @@
is-unc-path@^1.0.0:
  version "1.0.0"
  resolved "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
  resolved "https://registry.npmmirror.com/is-unc-path/-/is-unc-path-1.0.0.tgz"
  integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
  dependencies:
    unc-path-regex "^0.1.2"
@@ -2894,8 +2882,8 @@
is-windows@^1.0.1, is-windows@^1.0.2:
  version "1.0.2"
  resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
  resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz"
  integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=
isarray@1.0.0, isarray@~1.0.0:
  version "1.0.0"
@@ -3207,13 +3195,6 @@
  dependencies:
    brace-expansion "^1.1.7"
minimatch@^3.1.1:
  version "3.1.2"
  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
  dependencies:
    brace-expansion "^1.1.7"
minimatch@^9.0.2:
  version "9.0.3"
  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz"
@@ -3256,14 +3237,14 @@
    pkg-types "^1.0.3"
    ufo "^1.3.0"
moment@^2.27.0:
  version "2.29.1"
  resolved "https://registry.npmmirror.com/moment/download/moment-2.29.1.tgz"
  integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==
moment@^2.27.0, moment@^2.29.4:
  version "2.29.4"
  resolved "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz"
  integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
mqtt-packet@^6.0.0:
  version "6.10.0"
  resolved "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz#c8b507832c4152e3e511c0efa104ae4a64cd418f"
  resolved "https://registry.npmmirror.com/mqtt-packet/-/mqtt-packet-6.10.0.tgz"
  integrity sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==
  dependencies:
    bl "^4.0.2"
@@ -3272,7 +3253,7 @@
mqtt@4.0.1:
  version "4.0.1"
  resolved "https://registry.npmmirror.com/mqtt/-/mqtt-4.0.1.tgz#8bffa46b2b365a459c0bedd90267645418d0f2a5"
  resolved "https://registry.npmmirror.com/mqtt/-/mqtt-4.0.1.tgz"
  integrity sha512-sDvB/wI8e3YSSdIxJ74M81lQTFXxg1uFM5/irpQL+IH9crQiW90R69YOnk7UGj9xCqoXBBRPr8fqnkzQUKRYgg==
  dependencies:
    base64-js "^1.3.0"
@@ -3345,7 +3326,7 @@
next-tick@^1.1.0:
  version "1.1.0"
  resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
  resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz"
  integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
no-case@^3.0.4:
@@ -3468,7 +3449,7 @@
ordered-read-streams@^1.0.0:
  version "1.0.1"
  resolved "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e"
  resolved "https://registry.npmmirror.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz"
  integrity sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==
  dependencies:
    readable-stream "^2.0.1"
@@ -3540,7 +3521,7 @@
path-dirname@^1.0.0:
  version "1.0.2"
  resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
  resolved "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz"
  integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==
path-exists@^3.0.0:
@@ -3694,7 +3675,7 @@
pump@^2.0.0:
  version "2.0.1"
  resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
  resolved "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz"
  integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
  dependencies:
    end-of-stream "^1.1.0"
@@ -3710,7 +3691,7 @@
pumpify@^1.3.5:
  version "1.5.1"
  resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce"
  resolved "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz"
  integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==
  dependencies:
    duplexify "^3.6.0"
@@ -3762,9 +3743,9 @@
  dependencies:
    quickselect "^2.0.0"
"readable-stream@> 1.0.0 < 3.0.0", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6:
"readable-stream@> 1.0.0 < 3.0.0", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6:
  version "2.3.8"
  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz"
  integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
  dependencies:
    core-util-is "~1.0.0"
@@ -3775,7 +3756,7 @@
    string_decoder "~1.1.1"
    util-deprecate "~1.0.1"
readable-stream@^2.0.2, readable-stream@~2.3.6:
readable-stream@^2.0.2:
  version "2.3.7"
  resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.7.tgz"
  integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
@@ -3834,7 +3815,7 @@
remove-trailing-separator@^1.0.1:
  version "1.1.0"
  resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
  resolved "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz"
  integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
repeat-element@^1.1.2:
@@ -3931,15 +3912,15 @@
  dependencies:
    queue-microtask "^1.2.2"
safe-buffer@^5.1.2, safe-buffer@~5.2.0:
  version "5.2.1"
  resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.2.1.tgz"
  integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
  version "5.1.2"
  resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.1.2.tgz"
  integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
safe-buffer@~5.2.0:
  version "5.2.1"
  resolved "https://registry.nlark.com/safe-buffer/download/safe-buffer-5.2.1.tgz"
  integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
safe-regex@^1.1.0:
  version "1.1.0"
@@ -4244,8 +4225,8 @@
string_decoder@~1.1.1:
  version "1.1.1"
  resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz"
  integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
  resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz"
  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
  dependencies:
    safe-buffer "~5.1.0"
@@ -4366,7 +4347,7 @@
through2-filter@^3.0.0:
  version "3.0.0"
  resolved "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
  resolved "https://registry.npmmirror.com/through2-filter/-/through2-filter-3.0.0.tgz"
  integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==
  dependencies:
    through2 "~2.0.0"
@@ -4374,7 +4355,7 @@
through2@^2.0.1, through2@~2.0.0:
  version "2.0.5"
  resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
  resolved "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz"
  integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
  dependencies:
    readable-stream "~2.3.6"
@@ -4382,7 +4363,7 @@
to-absolute-glob@^2.0.0:
  version "2.0.2"
  resolved "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b"
  resolved "https://registry.npmmirror.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz"
  integrity sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==
  dependencies:
    is-absolute "^1.0.0"
@@ -4493,12 +4474,12 @@
type@^1.0.1:
  version "1.2.0"
  resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
  resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz"
  integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
type@^2.7.2:
  version "2.7.2"
  resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
  resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz"
  integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
typedarray@^0.0.6:
@@ -4518,7 +4499,7 @@
ultron@~1.1.0:
  version "1.1.1"
  resolved "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c"
  resolved "https://registry.npmmirror.com/ultron/-/ultron-1.1.1.tgz"
  integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==
unbox-primitive@^1.0.1:
@@ -4533,7 +4514,7 @@
unc-path-regex@^0.1.2:
  version "0.1.2"
  resolved "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
  resolved "https://registry.npmmirror.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz"
  integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==
unimport@^3.0.14:
@@ -4565,7 +4546,7 @@
unique-stream@^2.0.2:
  version "2.3.1"
  resolved "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac"
  resolved "https://registry.npmmirror.com/unique-stream/-/unique-stream-2.3.1.tgz"
  integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==
  dependencies:
    json-stable-stringify-without-jsonify "^1.0.1"
@@ -4864,7 +4845,7 @@
websocket-stream@^5.1.2:
  version "5.5.2"
  resolved "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz#49d87083d96839f0648f5513bbddd581f496b8a2"
  resolved "https://registry.npmmirror.com/websocket-stream/-/websocket-stream-5.5.2.tgz"
  integrity sha512-8z49MKIHbGk3C4HtuHWDtYX8mYej1wWabjthC/RupM9ngeukU4IWoM46dgth1UOS/T4/IqgEdCDJuMe2039OQQ==
  dependencies:
    duplexify "^3.5.1"
@@ -4904,7 +4885,7 @@
ws@^3.2.0:
  version "3.3.3"
  resolved "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2"
  resolved "https://registry.npmmirror.com/ws/-/ws-3.3.3.tgz"
  integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==
  dependencies:
    async-limiter "~1.0.0"
@@ -4913,7 +4894,7 @@
xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
  version "4.0.2"
  resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
  resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz"
  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
yallist@^4.0.0: