xiangpei
2024-12-26 dbf408fca06305771a5b7e6445e74a399ff71e22
初始化
8个文件已修改
16个文件已添加
3个文件已删除
35365 ■■■■■ 已修改文件
package-lock.json 1222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/EasyPlayer-lib.min.js 32777 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/EasyPlayer.wasm 补丁 | 查看 | 原始文档 | blame | 历史
public/crossdomain.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
public/index.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/camear.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/request.js 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/ControllerVideoWeb.vue 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/ControllerVideoWx.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/HelloWorld.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 60 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/AboutView.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CameraController.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/HomeView.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/web/CameraPTZ1.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/web/CameraPTZ2.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/web/CameraPTZ3.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/web/CameraPTZ4.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wx/CameraPTZ1.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wx/CameraPTZ2.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wx/CameraPTZ3.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wx/CameraPTZ4.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -8,7 +8,10 @@
      "name": "cmaera-controller",
      "version": "0.1.0",
      "dependencies": {
        "@easydarwin/easyplayer": "^5.1.3",
        "axios": "^1.7.9",
        "core-js": "^3.8.3",
        "element-ui": "^2.15.14",
        "vue": "^2.6.14",
        "vue-router": "^3.5.1",
        "vuex": "^3.6.2"
@@ -22,6 +25,7 @@
        "@vue/cli-plugin-vuex": "~5.0.0",
        "@vue/cli-service": "~5.0.0",
        "@vue/eslint-config-standard": "^6.1.0",
        "babel-plugin-component": "^1.1.1",
        "eslint": "^7.32.0",
        "eslint-plugin-import": "^2.25.3",
        "eslint-plugin-node": "^11.1.0",
@@ -444,6 +448,15 @@
      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
      "dev": true
    },
    "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
      "dev": true,
      "engines": {
        "node": ">=0.8.0"
      }
    },
    "node_modules/@babel/highlight/node_modules/has-flag": {
      "version": "3.0.0",
@@ -1662,6 +1675,11 @@
        "node": ">=10.0.0"
      }
    },
    "node_modules/@easydarwin/easyplayer": {
      "version": "5.1.3",
      "resolved": "https://registry.npmmirror.com/@easydarwin/easyplayer/-/easyplayer-5.1.3.tgz",
      "integrity": "sha512-R1EoVlsKwzJMbbjnWSm2i7xIYSJNHjiwmuss/xkp1QzOS3o0FfD5g9nE3BDovYSPGRWlDFexjn6Rnw+WyrBYpg=="
    },
    "node_modules/@eslint/eslintrc": {
      "version": "0.4.3",
      "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -1695,15 +1713,6 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/@eslint/eslintrc/node_modules/ignore": {
      "version": "4.0.6",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
      "dev": true,
      "engines": {
        "node": ">= 4"
      }
    },
    "node_modules/@eslint/eslintrc/node_modules/type-fest": {
@@ -3369,6 +3378,19 @@
        "lodash": "^4.17.14"
      }
    },
    "node_modules/async-validator": {
      "version": "1.8.5",
      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
      "dependencies": {
        "babel-runtime": "6.x"
      }
    },
    "node_modules/asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
    },
    "node_modules/at-least-node": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -3430,6 +3452,21 @@
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/axios": {
      "version": "1.7.9",
      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz",
      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
      "dependencies": {
        "follow-redirects": "^1.15.6",
        "form-data": "^4.0.0",
        "proxy-from-env": "^1.1.0"
      }
    },
    "node_modules/babel-helper-vue-jsx-merge-props": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
    },
    "node_modules/babel-loader": {
      "version": "8.4.1",
      "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.4.1.tgz",
@@ -3461,6 +3498,36 @@
      },
      "engines": {
        "node": ">=8.9.0"
      }
    },
    "node_modules/babel-plugin-component": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
      "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
      "dev": true,
      "dependencies": {
        "@babel/helper-module-imports": "7.0.0-beta.35"
      }
    },
    "node_modules/babel-plugin-component/node_modules/@babel/helper-module-imports": {
      "version": "7.0.0-beta.35",
      "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
      "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
      "dev": true,
      "dependencies": {
        "@babel/types": "7.0.0-beta.35",
        "lodash": "^4.2.0"
      }
    },
    "node_modules/babel-plugin-component/node_modules/@babel/types": {
      "version": "7.0.0-beta.35",
      "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
      "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
      "dev": true,
      "dependencies": {
        "esutils": "^2.0.2",
        "lodash": "^4.2.0",
        "to-fast-properties": "^2.0.0"
      }
    },
    "node_modules/babel-plugin-dynamic-import-node": {
@@ -3510,6 +3577,27 @@
      "peerDependencies": {
        "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
      }
    },
    "node_modules/babel-runtime": {
      "version": "6.26.0",
      "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
      "dependencies": {
        "core-js": "^2.4.0",
        "regenerator-runtime": "^0.11.0"
      }
    },
    "node_modules/babel-runtime/node_modules/core-js": {
      "version": "2.6.12",
      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
      "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
      "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.",
      "hasInstallScript": true
    },
    "node_modules/babel-runtime/node_modules/regenerator-runtime": {
      "version": "0.11.1",
      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
      "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
    },
    "node_modules/balanced-match": {
      "version": "1.0.2",
@@ -4060,6 +4148,17 @@
      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
      "dev": true
    },
    "node_modules/combined-stream": {
      "version": "1.0.8",
      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
      "dependencies": {
        "delayed-stream": "~1.0.0"
      },
      "engines": {
        "node": ">= 0.8"
      }
    },
    "node_modules/commander": {
      "version": "8.3.0",
      "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
@@ -4278,28 +4377,17 @@
      }
    },
    "node_modules/cross-spawn": {
      "version": "6.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz",
      "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
      "version": "7.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
      "dev": true,
      "dependencies": {
        "nice-try": "^1.0.4",
        "path-key": "^2.0.1",
        "semver": "^5.5.0",
        "shebang-command": "^1.2.0",
        "which": "^1.2.9"
        "path-key": "^3.1.0",
        "shebang-command": "^2.0.0",
        "which": "^2.0.1"
      },
      "engines": {
        "node": ">=4.8"
      }
    },
    "node_modules/cross-spawn/node_modules/semver": {
      "version": "5.7.2",
      "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
      "dev": true,
      "bin": {
        "semver": "bin/semver"
        "node": ">= 8"
      }
    },
    "node_modules/css-declaration-sorter": {
@@ -4688,7 +4776,6 @@
      "version": "1.5.2",
      "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
      }
@@ -4703,20 +4790,6 @@
      },
      "engines": {
        "node": ">= 10"
      }
    },
    "node_modules/default-gateway/node_modules/cross-spawn": {
      "version": "7.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
      "dev": true,
      "dependencies": {
        "path-key": "^3.1.0",
        "shebang-command": "^2.0.0",
        "which": "^2.0.1"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/default-gateway/node_modules/execa": {
@@ -4778,51 +4851,6 @@
        "node": ">=8"
      }
    },
    "node_modules/default-gateway/node_modules/path-key": {
      "version": "3.1.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
      "dev": true,
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/default-gateway/node_modules/shebang-command": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
      "dev": true,
      "dependencies": {
        "shebang-regex": "^3.0.0"
      },
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/default-gateway/node_modules/shebang-regex": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
      "dev": true,
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/default-gateway/node_modules/which": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "node-which": "bin/node-which"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/defaults": {
      "version": "1.0.4",
      "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz",
@@ -4876,6 +4904,14 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
      "engines": {
        "node": ">=0.4.0"
      }
    },
    "node_modules/depd": {
@@ -5078,6 +5114,22 @@
      "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==",
      "dev": true
    },
    "node_modules/element-ui": {
      "version": "2.15.14",
      "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
      "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
      "dependencies": {
        "async-validator": "~1.8.1",
        "babel-helper-vue-jsx-merge-props": "^2.0.0",
        "deepmerge": "^1.2.0",
        "normalize-wheel": "^1.0.1",
        "resize-observer-polyfill": "^1.5.0",
        "throttle-debounce": "^1.0.1"
      },
      "peerDependencies": {
        "vue": "^2.5.17"
      }
    },
    "node_modules/emoji-regex": {
      "version": "8.0.0",
      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -5112,16 +5164,17 @@
      }
    },
    "node_modules/enhanced-resolve": {
      "version": "5.17.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
      "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
      "version": "0.9.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
      "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==",
      "dev": true,
      "dependencies": {
        "graceful-fs": "^4.2.4",
        "tapable": "^2.2.0"
        "graceful-fs": "^4.1.2",
        "memory-fs": "^0.2.0",
        "tapable": "^0.1.8"
      },
      "engines": {
        "node": ">=10.13.0"
        "node": ">=0.6"
      }
    },
    "node_modules/enquirer": {
@@ -5321,12 +5374,15 @@
      "dev": true
    },
    "node_modules/escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
      "version": "4.0.0",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
      "dev": true,
      "engines": {
        "node": ">=0.8.0"
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/eslint": {
@@ -5467,20 +5523,6 @@
        "ms": "^2.1.1"
      }
    },
    "node_modules/eslint-import-resolver-webpack/node_modules/enhanced-resolve": {
      "version": "0.9.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
      "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==",
      "dev": true,
      "dependencies": {
        "graceful-fs": "^4.1.2",
        "memory-fs": "^0.2.0",
        "tapable": "^0.1.8"
      },
      "engines": {
        "node": ">=0.6"
      }
    },
    "node_modules/eslint-import-resolver-webpack/node_modules/resolve": {
      "version": "2.0.0-next.5",
      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.5.tgz",
@@ -5505,15 +5547,6 @@
      "dev": true,
      "bin": {
        "semver": "bin/semver"
      }
    },
    "node_modules/eslint-import-resolver-webpack/node_modules/tapable": {
      "version": "0.1.10",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-0.1.10.tgz",
      "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==",
      "dev": true,
      "engines": {
        "node": ">=0.6"
      }
    },
    "node_modules/eslint-module-utils": {
@@ -5633,6 +5666,15 @@
      },
      "peerDependencies": {
        "eslint": ">=5.16.0"
      }
    },
    "node_modules/eslint-plugin-node/node_modules/ignore": {
      "version": "5.3.2",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
      "dev": true,
      "engines": {
        "node": ">= 4"
      }
    },
    "node_modules/eslint-plugin-promise": {
@@ -5874,32 +5916,6 @@
        "url": "https://github.com/chalk/chalk?sponsor=1"
      }
    },
    "node_modules/eslint/node_modules/cross-spawn": {
      "version": "7.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
      "dev": true,
      "dependencies": {
        "path-key": "^3.1.0",
        "shebang-command": "^2.0.0",
        "which": "^2.0.1"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/eslint/node_modules/escape-string-regexp": {
      "version": "4.0.0",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
      "dev": true,
      "engines": {
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/eslint/node_modules/glob-parent": {
      "version": "5.1.2",
      "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -5927,24 +5943,6 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/eslint/node_modules/ignore": {
      "version": "4.0.6",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
      "dev": true,
      "engines": {
        "node": ">= 4"
      }
    },
    "node_modules/eslint/node_modules/path-key": {
      "version": "3.1.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
      "dev": true,
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/eslint/node_modules/semver": {
      "version": "7.6.3",
      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz",
@@ -5957,27 +5955,6 @@
        "node": ">=10"
      }
    },
    "node_modules/eslint/node_modules/shebang-command": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
      "dev": true,
      "dependencies": {
        "shebang-regex": "^3.0.0"
      },
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/eslint/node_modules/shebang-regex": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
      "dev": true,
      "engines": {
        "node": ">=8"
      }
    },
    "node_modules/eslint/node_modules/type-fest": {
      "version": "0.20.2",
      "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
@@ -5988,21 +5965,6 @@
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/eslint/node_modules/which": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "node-which": "bin/node-which"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/espree": {
@@ -6170,6 +6132,73 @@
        "node": ">=6"
      }
    },
    "node_modules/execa/node_modules/cross-spawn": {
      "version": "6.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz",
      "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
      "dev": true,
      "dependencies": {
        "nice-try": "^1.0.4",
        "path-key": "^2.0.1",
        "semver": "^5.5.0",
        "shebang-command": "^1.2.0",
        "which": "^1.2.9"
      },
      "engines": {
        "node": ">=4.8"
      }
    },
    "node_modules/execa/node_modules/path-key": {
      "version": "2.0.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
      "dev": true,
      "engines": {
        "node": ">=4"
      }
    },
    "node_modules/execa/node_modules/semver": {
      "version": "5.7.2",
      "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
      "dev": true,
      "bin": {
        "semver": "bin/semver"
      }
    },
    "node_modules/execa/node_modules/shebang-command": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
      "dev": true,
      "dependencies": {
        "shebang-regex": "^1.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/execa/node_modules/shebang-regex": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/execa/node_modules/which": {
      "version": "1.3.1",
      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "which": "bin/which"
      }
    },
    "node_modules/express": {
      "version": "4.21.2",
      "resolved": "https://registry.npmmirror.com/express/-/express-4.21.2.tgz",
@@ -6316,6 +6345,15 @@
        "node": ">=4"
      }
    },
    "node_modules/figures/node_modules/escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
      "dev": true,
      "engines": {
        "node": ">=0.8.0"
      }
    },
    "node_modules/file-entry-cache": {
      "version": "6.0.1",
      "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -6442,7 +6480,6 @@
      "version": "1.15.9",
      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
      "dev": true,
      "funding": [
        {
          "type": "individual",
@@ -6465,6 +6502,19 @@
      "dev": true,
      "dependencies": {
        "is-callable": "^1.1.3"
      }
    },
    "node_modules/form-data": {
      "version": "4.0.1",
      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz",
      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
      "dependencies": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
      },
      "engines": {
        "node": ">= 6"
      }
    },
    "node_modules/forwarded": {
@@ -6549,12 +6599,13 @@
      }
    },
    "node_modules/function.prototype.name": {
      "version": "1.1.7",
      "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.7.tgz",
      "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==",
      "version": "1.1.8",
      "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
      "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
      "dev": true,
      "dependencies": {
        "call-bind": "^1.0.8",
        "call-bound": "^1.0.3",
        "define-properties": "^1.2.1",
        "functions-have-names": "^1.2.3",
        "hasown": "^2.0.2",
@@ -6737,6 +6788,15 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/globby/node_modules/ignore": {
      "version": "5.3.2",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
      "dev": true,
      "engines": {
        "node": ">= 4"
      }
    },
    "node_modules/gopd": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
@@ -6905,6 +6965,12 @@
        "wbuf": "^1.1.0"
      }
    },
    "node_modules/hpack.js/node_modules/isarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
      "dev": true
    },
    "node_modules/hpack.js/node_modules/readable-stream": {
      "version": "2.3.8",
      "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -7020,6 +7086,15 @@
        "webpack": {
          "optional": true
        }
      }
    },
    "node_modules/html-webpack-plugin/node_modules/tapable": {
      "version": "2.2.1",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
      "dev": true,
      "engines": {
        "node": ">=6"
      }
    },
    "node_modules/htmlparser2": {
@@ -7170,9 +7245,9 @@
      ]
    },
    "node_modules/ignore": {
      "version": "5.3.2",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
      "version": "4.0.6",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
      "dev": true,
      "engines": {
        "node": ">= 4"
@@ -7741,9 +7816,9 @@
      }
    },
    "node_modules/isarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
      "dev": true
    },
    "node_modules/isexe": {
@@ -8381,7 +8456,6 @@
      "version": "1.52.0",
      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
      "dev": true,
      "engines": {
        "node": ">= 0.6"
      }
@@ -8390,7 +8464,6 @@
      "version": "2.1.35",
      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
      "dev": true,
      "dependencies": {
        "mime-db": "1.52.0"
      },
@@ -8478,6 +8551,15 @@
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/webpack"
      }
    },
    "node_modules/mini-css-extract-plugin/node_modules/tapable": {
      "version": "2.2.1",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
      "dev": true,
      "engines": {
        "node": ">=6"
      }
    },
    "node_modules/minimalistic-assert": {
@@ -8722,6 +8804,11 @@
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/normalize-wheel": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
      "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
    },
    "node_modules/npm-run-path": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -8730,6 +8817,15 @@
      "dependencies": {
        "path-key": "^2.0.0"
      },
      "engines": {
        "node": ">=4"
      }
    },
    "node_modules/npm-run-path/node_modules/path-key": {
      "version": "2.0.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
      "dev": true,
      "engines": {
        "node": ">=4"
      }
@@ -9136,12 +9232,12 @@
      }
    },
    "node_modules/path-key": {
      "version": "2.0.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
      "version": "3.1.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
      "dev": true,
      "engines": {
        "node": ">=4"
        "node": ">=8"
      }
    },
    "node_modules/path-parse": {
@@ -9903,6 +9999,15 @@
      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
      "dev": true
    },
    "node_modules/progress-webpack-plugin/node_modules/escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
      "dev": true,
      "engines": {
        "node": ">=0.8.0"
      }
    },
    "node_modules/progress-webpack-plugin/node_modules/has-flag": {
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
@@ -9945,6 +10050,11 @@
      "engines": {
        "node": ">= 0.10"
      }
    },
    "node_modules/proxy-from-env": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
    },
    "node_modules/pseudomap": {
      "version": "1.0.2",
@@ -10284,6 +10394,11 @@
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
      "dev": true
    },
    "node_modules/resize-observer-polyfill": {
      "version": "1.5.1",
      "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
    },
    "node_modules/resolve": {
      "version": "1.22.10",
      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz",
@@ -10402,12 +10517,6 @@
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/safe-array-concat/node_modules/isarray": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
      "dev": true
    },
    "node_modules/safe-buffer": {
      "version": "5.2.1",
@@ -10699,24 +10808,24 @@
      }
    },
    "node_modules/shebang-command": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
      "dev": true,
      "dependencies": {
        "shebang-regex": "^1.0.0"
        "shebang-regex": "^3.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
        "node": ">=8"
      }
    },
    "node_modules/shebang-regex": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
        "node": ">=8"
      }
    },
    "node_modules/shell-quote": {
@@ -11242,12 +11351,12 @@
      "dev": true
    },
    "node_modules/tapable": {
      "version": "2.2.1",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
      "version": "0.1.10",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-0.1.10.tgz",
      "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==",
      "dev": true,
      "engines": {
        "node": ">=6"
        "node": ">=0.6"
      }
    },
    "node_modules/terser": {
@@ -11443,11 +11552,28 @@
        "url": "https://opencollective.com/webpack"
      }
    },
    "node_modules/throttle-debounce": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==",
      "engines": {
        "node": ">=4"
      }
    },
    "node_modules/thunky": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
      "dev": true
    },
    "node_modules/to-fast-properties": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
      "dev": true,
      "engines": {
        "node": ">=4"
      }
    },
    "node_modules/to-regex-range": {
      "version": "5.0.1",
@@ -12119,18 +12245,6 @@
        "node": ">= 10"
      }
    },
    "node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": {
      "version": "4.0.0",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
      "dev": true,
      "engines": {
        "node": ">=10"
      },
      "funding": {
        "url": "https://github.com/sponsors/sindresorhus"
      }
    },
    "node_modules/webpack-chain": {
      "version": "6.5.1",
      "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz",
@@ -12383,6 +12497,19 @@
      "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==",
      "dev": true
    },
    "node_modules/webpack/node_modules/enhanced-resolve": {
      "version": "5.17.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
      "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
      "dev": true,
      "dependencies": {
        "graceful-fs": "^4.2.4",
        "tapable": "^2.2.0"
      },
      "engines": {
        "node": ">=10.13.0"
      }
    },
    "node_modules/webpack/node_modules/schema-utils": {
      "version": "3.3.0",
      "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
@@ -12399,6 +12526,15 @@
      "funding": {
        "type": "opencollective",
        "url": "https://opencollective.com/webpack"
      }
    },
    "node_modules/webpack/node_modules/tapable": {
      "version": "2.2.1",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
      "dev": true,
      "engines": {
        "node": ">=6"
      }
    },
    "node_modules/websocket-driver": {
@@ -12441,15 +12577,18 @@
      }
    },
    "node_modules/which": {
      "version": "1.3.1",
      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "which": "bin/which"
        "node-which": "bin/node-which"
      },
      "engines": {
        "node": ">= 8"
      }
    },
    "node_modules/which-boxed-primitive": {
@@ -12497,12 +12636,6 @@
      "funding": {
        "url": "https://github.com/sponsors/ljharb"
      }
    },
    "node_modules/which-builtin-type/node_modules/isarray": {
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
      "dev": true
    },
    "node_modules/which-collection": {
      "version": "1.0.2",
@@ -12723,6 +12856,39 @@
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/yorkie/node_modules/shebang-command": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
      "dev": true,
      "dependencies": {
        "shebang-regex": "^1.0.0"
      },
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/yorkie/node_modules/shebang-regex": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
      "dev": true,
      "engines": {
        "node": ">=0.10.0"
      }
    },
    "node_modules/yorkie/node_modules/which": {
      "version": "1.3.1",
      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
      "dev": true,
      "dependencies": {
        "isexe": "^2.0.0"
      },
      "bin": {
        "which": "bin/which"
      }
    },
    "node_modules/yorkie/node_modules/yallist": {
@@ -13039,6 +13205,12 @@
          "version": "1.1.3",
          "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
          "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
          "dev": true
        },
        "escape-string-regexp": {
          "version": "1.0.5",
          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
          "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
          "dev": true
        },
        "has-flag": {
@@ -13836,6 +14008,11 @@
      "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
      "dev": true
    },
    "@easydarwin/easyplayer": {
      "version": "5.1.3",
      "resolved": "https://registry.npmmirror.com/@easydarwin/easyplayer/-/easyplayer-5.1.3.tgz",
      "integrity": "sha512-R1EoVlsKwzJMbbjnWSm2i7xIYSJNHjiwmuss/xkp1QzOS3o0FfD5g9nE3BDovYSPGRWlDFexjn6Rnw+WyrBYpg=="
    },
    "@eslint/eslintrc": {
      "version": "0.4.3",
      "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
@@ -13861,12 +14038,6 @@
          "requires": {
            "type-fest": "^0.20.2"
          }
        },
        "ignore": {
          "version": "4.0.6",
          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
          "dev": true
        },
        "type-fest": {
          "version": "0.20.2",
@@ -15222,6 +15393,19 @@
        "lodash": "^4.17.14"
      }
    },
    "async-validator": {
      "version": "1.8.5",
      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
      "requires": {
        "babel-runtime": "6.x"
      }
    },
    "asynckit": {
      "version": "0.4.0",
      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
    },
    "at-least-node": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz",
@@ -15251,6 +15435,21 @@
        "possible-typed-array-names": "^1.0.0"
      }
    },
    "axios": {
      "version": "1.7.9",
      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz",
      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
      "requires": {
        "follow-redirects": "^1.15.6",
        "form-data": "^4.0.0",
        "proxy-from-env": "^1.1.0"
      }
    },
    "babel-helper-vue-jsx-merge-props": {
      "version": "2.0.3",
      "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
    },
    "babel-loader": {
      "version": "8.4.1",
      "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.4.1.tgz",
@@ -15272,6 +15471,38 @@
            "big.js": "^5.2.2",
            "emojis-list": "^3.0.0",
            "json5": "^2.1.2"
          }
        }
      }
    },
    "babel-plugin-component": {
      "version": "1.1.1",
      "resolved": "https://registry.npmmirror.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
      "integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
      "dev": true,
      "requires": {
        "@babel/helper-module-imports": "7.0.0-beta.35"
      },
      "dependencies": {
        "@babel/helper-module-imports": {
          "version": "7.0.0-beta.35",
          "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
          "integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
          "dev": true,
          "requires": {
            "@babel/types": "7.0.0-beta.35",
            "lodash": "^4.2.0"
          }
        },
        "@babel/types": {
          "version": "7.0.0-beta.35",
          "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.0.0-beta.35.tgz",
          "integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
          "dev": true,
          "requires": {
            "esutils": "^2.0.2",
            "lodash": "^4.2.0",
            "to-fast-properties": "^2.0.0"
          }
        }
      }
@@ -15313,6 +15544,27 @@
      "dev": true,
      "requires": {
        "@babel/helper-define-polyfill-provider": "^0.6.3"
      }
    },
    "babel-runtime": {
      "version": "6.26.0",
      "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
      "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
      "requires": {
        "core-js": "^2.4.0",
        "regenerator-runtime": "^0.11.0"
      },
      "dependencies": {
        "core-js": {
          "version": "2.6.12",
          "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
          "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
        },
        "regenerator-runtime": {
          "version": "0.11.1",
          "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
        }
      }
    },
    "balanced-match": {
@@ -15711,6 +15963,14 @@
      "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==",
      "dev": true
    },
    "combined-stream": {
      "version": "1.0.8",
      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
      "requires": {
        "delayed-stream": "~1.0.0"
      }
    },
    "commander": {
      "version": "8.3.0",
      "resolved": "https://registry.npmmirror.com/commander/-/commander-8.3.0.tgz",
@@ -15879,24 +16139,14 @@
      }
    },
    "cross-spawn": {
      "version": "6.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz",
      "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
      "version": "7.0.6",
      "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
      "dev": true,
      "requires": {
        "nice-try": "^1.0.4",
        "path-key": "^2.0.1",
        "semver": "^5.5.0",
        "shebang-command": "^1.2.0",
        "which": "^1.2.9"
      },
      "dependencies": {
        "semver": {
          "version": "5.7.2",
          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
          "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
          "dev": true
        }
        "path-key": "^3.1.0",
        "shebang-command": "^2.0.0",
        "which": "^2.0.1"
      }
    },
    "css-declaration-sorter": {
@@ -16150,8 +16400,7 @@
    "deepmerge": {
      "version": "1.5.2",
      "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
      "dev": true
      "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
    },
    "default-gateway": {
      "version": "6.0.3",
@@ -16162,17 +16411,6 @@
        "execa": "^5.0.0"
      },
      "dependencies": {
        "cross-spawn": {
          "version": "7.0.6",
          "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
          "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
          "dev": true,
          "requires": {
            "path-key": "^3.1.0",
            "shebang-command": "^2.0.0",
            "which": "^2.0.1"
          }
        },
        "execa": {
          "version": "5.1.1",
          "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
@@ -16209,36 +16447,6 @@
          "dev": true,
          "requires": {
            "path-key": "^3.0.0"
          }
        },
        "path-key": {
          "version": "3.1.1",
          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
          "dev": true
        },
        "shebang-command": {
          "version": "2.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
          "dev": true,
          "requires": {
            "shebang-regex": "^3.0.0"
          }
        },
        "shebang-regex": {
          "version": "3.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
          "dev": true
        },
        "which": {
          "version": "2.0.2",
          "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
          "dev": true,
          "requires": {
            "isexe": "^2.0.0"
          }
        }
      }
@@ -16279,6 +16487,11 @@
        "has-property-descriptors": "^1.0.0",
        "object-keys": "^1.1.1"
      }
    },
    "delayed-stream": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
    },
    "depd": {
      "version": "2.0.0",
@@ -16436,6 +16649,19 @@
      "integrity": "sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==",
      "dev": true
    },
    "element-ui": {
      "version": "2.15.14",
      "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
      "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
      "requires": {
        "async-validator": "~1.8.1",
        "babel-helper-vue-jsx-merge-props": "^2.0.0",
        "deepmerge": "^1.2.0",
        "normalize-wheel": "^1.0.1",
        "resize-observer-polyfill": "^1.5.0",
        "throttle-debounce": "^1.0.1"
      }
    },
    "emoji-regex": {
      "version": "8.0.0",
      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -16464,13 +16690,14 @@
      }
    },
    "enhanced-resolve": {
      "version": "5.17.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
      "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
      "version": "0.9.1",
      "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
      "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==",
      "dev": true,
      "requires": {
        "graceful-fs": "^4.2.4",
        "tapable": "^2.2.0"
        "graceful-fs": "^4.1.2",
        "memory-fs": "^0.2.0",
        "tapable": "^0.1.8"
      }
    },
    "enquirer": {
@@ -16634,9 +16861,9 @@
      "dev": true
    },
    "escape-string-regexp": {
      "version": "1.0.5",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
      "version": "4.0.0",
      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
      "dev": true
    },
    "eslint": {
@@ -16706,23 +16933,6 @@
            "supports-color": "^7.1.0"
          }
        },
        "cross-spawn": {
          "version": "7.0.6",
          "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",
          "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
          "dev": true,
          "requires": {
            "path-key": "^3.1.0",
            "shebang-command": "^2.0.0",
            "which": "^2.0.1"
          }
        },
        "escape-string-regexp": {
          "version": "4.0.0",
          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
          "dev": true
        },
        "glob-parent": {
          "version": "5.1.2",
          "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -16741,37 +16951,10 @@
            "type-fest": "^0.20.2"
          }
        },
        "ignore": {
          "version": "4.0.6",
          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
          "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
          "dev": true
        },
        "path-key": {
          "version": "3.1.1",
          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
          "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
          "dev": true
        },
        "semver": {
          "version": "7.6.3",
          "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz",
          "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
          "dev": true
        },
        "shebang-command": {
          "version": "2.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
          "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
          "dev": true,
          "requires": {
            "shebang-regex": "^3.0.0"
          }
        },
        "shebang-regex": {
          "version": "3.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
          "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
          "dev": true
        },
        "type-fest": {
@@ -16779,15 +16962,6 @@
          "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz",
          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
          "dev": true
        },
        "which": {
          "version": "2.0.2",
          "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
          "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
          "dev": true,
          "requires": {
            "isexe": "^2.0.0"
          }
        }
      }
    },
@@ -16846,17 +17020,6 @@
            "ms": "^2.1.1"
          }
        },
        "enhanced-resolve": {
          "version": "0.9.1",
          "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz",
          "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==",
          "dev": true,
          "requires": {
            "graceful-fs": "^4.1.2",
            "memory-fs": "^0.2.0",
            "tapable": "^0.1.8"
          }
        },
        "resolve": {
          "version": "2.0.0-next.5",
          "resolved": "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.5.tgz",
@@ -16872,12 +17035,6 @@
          "version": "5.7.2",
          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
          "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
          "dev": true
        },
        "tapable": {
          "version": "0.1.10",
          "resolved": "https://registry.npmmirror.com/tapable/-/tapable-0.1.10.tgz",
          "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==",
          "dev": true
        }
      }
@@ -16971,6 +17128,14 @@
        "minimatch": "^3.0.4",
        "resolve": "^1.10.1",
        "semver": "^6.1.0"
      },
      "dependencies": {
        "ignore": {
          "version": "5.3.2",
          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
          "dev": true
        }
      }
    },
    "eslint-plugin-promise": {
@@ -17237,6 +17402,57 @@
        "p-finally": "^1.0.0",
        "signal-exit": "^3.0.0",
        "strip-eof": "^1.0.0"
      },
      "dependencies": {
        "cross-spawn": {
          "version": "6.0.6",
          "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.6.tgz",
          "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
          "dev": true,
          "requires": {
            "nice-try": "^1.0.4",
            "path-key": "^2.0.1",
            "semver": "^5.5.0",
            "shebang-command": "^1.2.0",
            "which": "^1.2.9"
          }
        },
        "path-key": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
          "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
          "dev": true
        },
        "semver": {
          "version": "5.7.2",
          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
          "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
          "dev": true
        },
        "shebang-command": {
          "version": "1.2.0",
          "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
          "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
          "dev": true,
          "requires": {
            "shebang-regex": "^1.0.0"
          }
        },
        "shebang-regex": {
          "version": "1.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
          "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
          "dev": true
        },
        "which": {
          "version": "1.3.1",
          "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
          "dev": true,
          "requires": {
            "isexe": "^2.0.0"
          }
        }
      }
    },
    "express": {
@@ -17368,6 +17584,14 @@
      "dev": true,
      "requires": {
        "escape-string-regexp": "^1.0.5"
      },
      "dependencies": {
        "escape-string-regexp": {
          "version": "1.0.5",
          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
          "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
          "dev": true
        }
      }
    },
    "file-entry-cache": {
@@ -17473,8 +17697,7 @@
    "follow-redirects": {
      "version": "1.15.9",
      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
      "dev": true
      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
    },
    "for-each": {
      "version": "0.3.3",
@@ -17483,6 +17706,16 @@
      "dev": true,
      "requires": {
        "is-callable": "^1.1.3"
      }
    },
    "form-data": {
      "version": "4.0.1",
      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz",
      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
      "requires": {
        "asynckit": "^0.4.0",
        "combined-stream": "^1.0.8",
        "mime-types": "^2.1.12"
      }
    },
    "forwarded": {
@@ -17541,12 +17774,13 @@
      "dev": true
    },
    "function.prototype.name": {
      "version": "1.1.7",
      "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.7.tgz",
      "integrity": "sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA==",
      "version": "1.1.8",
      "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
      "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
      "dev": true,
      "requires": {
        "call-bind": "^1.0.8",
        "call-bound": "^1.0.3",
        "define-properties": "^1.2.1",
        "functions-have-names": "^1.2.3",
        "hasown": "^2.0.2",
@@ -17672,6 +17906,14 @@
        "ignore": "^5.2.0",
        "merge2": "^1.4.1",
        "slash": "^3.0.0"
      },
      "dependencies": {
        "ignore": {
          "version": "5.3.2",
          "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
          "dev": true
        }
      }
    },
    "gopd": {
@@ -17791,6 +18033,12 @@
        "wbuf": "^1.1.0"
      },
      "dependencies": {
        "isarray": {
          "version": "1.0.0",
          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
          "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
          "dev": true
        },
        "readable-stream": {
          "version": "2.3.8",
          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
@@ -17867,6 +18115,14 @@
        "lodash": "^4.17.21",
        "pretty-error": "^4.0.0",
        "tapable": "^2.0.0"
      },
      "dependencies": {
        "tapable": {
          "version": "2.2.1",
          "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
          "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
          "dev": true
        }
      }
    },
    "htmlparser2": {
@@ -17966,9 +18222,9 @@
      "dev": true
    },
    "ignore": {
      "version": "5.3.2",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.3.2.tgz",
      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
      "version": "4.0.6",
      "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
      "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
      "dev": true
    },
    "import-fresh": {
@@ -18332,9 +18588,9 @@
      }
    },
    "isarray": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
      "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
      "version": "2.0.5",
      "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
      "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
      "dev": true
    },
    "isexe": {
@@ -18848,14 +19104,12 @@
    "mime-db": {
      "version": "1.52.0",
      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
      "dev": true
      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
    },
    "mime-types": {
      "version": "2.1.35",
      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
      "dev": true,
      "requires": {
        "mime-db": "1.52.0"
      }
@@ -18914,6 +19168,12 @@
            "ajv-formats": "^2.1.1",
            "ajv-keywords": "^5.1.0"
          }
        },
        "tapable": {
          "version": "2.2.1",
          "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
          "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
          "dev": true
        }
      }
    },
@@ -19101,6 +19361,11 @@
      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
      "dev": true
    },
    "normalize-wheel": {
      "version": "1.0.1",
      "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
      "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
    },
    "npm-run-path": {
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -19108,6 +19373,14 @@
      "dev": true,
      "requires": {
        "path-key": "^2.0.0"
      },
      "dependencies": {
        "path-key": {
          "version": "2.0.1",
          "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
          "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
          "dev": true
        }
      }
    },
    "nth-check": {
@@ -19408,9 +19681,9 @@
      "dev": true
    },
    "path-key": {
      "version": "2.0.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
      "version": "3.1.1",
      "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
      "dev": true
    },
    "path-parse": {
@@ -19909,6 +20182,12 @@
          "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
          "dev": true
        },
        "escape-string-regexp": {
          "version": "1.0.5",
          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
          "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
          "dev": true
        },
        "has-flag": {
          "version": "3.0.0",
          "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
@@ -19943,6 +20222,11 @@
          "dev": true
        }
      }
    },
    "proxy-from-env": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
    },
    "pseudomap": {
      "version": "1.0.2",
@@ -20197,6 +20481,11 @@
      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
      "dev": true
    },
    "resize-observer-polyfill": {
      "version": "1.5.1",
      "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
    },
    "resolve": {
      "version": "1.22.10",
      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz",
@@ -20265,14 +20554,6 @@
        "get-intrinsic": "^1.2.6",
        "has-symbols": "^1.1.0",
        "isarray": "^2.0.5"
      },
      "dependencies": {
        "isarray": {
          "version": "2.0.5",
          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
          "dev": true
        }
      }
    },
    "safe-buffer": {
@@ -20508,18 +20789,18 @@
      }
    },
    "shebang-command": {
      "version": "1.2.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
      "dev": true,
      "requires": {
        "shebang-regex": "^1.0.0"
        "shebang-regex": "^3.0.0"
      }
    },
    "shebang-regex": {
      "version": "1.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
      "version": "3.0.0",
      "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
      "dev": true
    },
    "shell-quote": {
@@ -20918,9 +21199,9 @@
      }
    },
    "tapable": {
      "version": "2.2.1",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
      "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
      "version": "0.1.10",
      "resolved": "https://registry.npmmirror.com/tapable/-/tapable-0.1.10.tgz",
      "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==",
      "dev": true
    },
    "terser": {
@@ -21058,10 +21339,21 @@
        }
      }
    },
    "throttle-debounce": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
    },
    "thunky": {
      "version": "1.1.0",
      "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
      "dev": true
    },
    "to-fast-properties": {
      "version": "2.0.0",
      "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
      "dev": true
    },
    "to-regex-range": {
@@ -21537,6 +21829,16 @@
        "webpack-sources": "^3.2.3"
      },
      "dependencies": {
        "enhanced-resolve": {
          "version": "5.17.1",
          "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
          "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
          "dev": true,
          "requires": {
            "graceful-fs": "^4.2.4",
            "tapable": "^2.2.0"
          }
        },
        "schema-utils": {
          "version": "3.3.0",
          "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
@@ -21547,6 +21849,12 @@
            "ajv": "^6.12.5",
            "ajv-keywords": "^3.5.2"
          }
        },
        "tapable": {
          "version": "2.2.1",
          "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
          "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
          "dev": true
        }
      }
    },
@@ -21574,12 +21882,6 @@
          "version": "7.2.0",
          "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
          "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
          "dev": true
        },
        "escape-string-regexp": {
          "version": "4.0.0",
          "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
          "dev": true
        }
      }
@@ -21790,9 +22092,9 @@
      }
    },
    "which": {
      "version": "1.3.1",
      "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
      "version": "2.0.2",
      "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
      "dev": true,
      "requires": {
        "isexe": "^2.0.0"
@@ -21830,14 +22132,6 @@
        "which-boxed-primitive": "^1.1.0",
        "which-collection": "^1.0.2",
        "which-typed-array": "^1.1.16"
      },
      "dependencies": {
        "isarray": {
          "version": "2.0.5",
          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
          "dev": true
        }
      }
    },
    "which-collection": {
@@ -22000,6 +22294,30 @@
          "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
          "dev": true
        },
        "shebang-command": {
          "version": "1.2.0",
          "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
          "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
          "dev": true,
          "requires": {
            "shebang-regex": "^1.0.0"
          }
        },
        "shebang-regex": {
          "version": "1.0.0",
          "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
          "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
          "dev": true
        },
        "which": {
          "version": "1.3.1",
          "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
          "dev": true,
          "requires": {
            "isexe": "^2.0.0"
          }
        },
        "yallist": {
          "version": "2.1.2",
          "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
package.json
@@ -8,7 +8,10 @@
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@easydarwin/easyplayer": "^5.1.3",
    "axios": "^1.7.9",
    "core-js": "^3.8.3",
    "element-ui": "^2.15.14",
    "vue": "^2.6.14",
    "vue-router": "^3.5.1",
    "vuex": "^3.6.2"
@@ -22,6 +25,7 @@
    "@vue/cli-plugin-vuex": "~5.0.0",
    "@vue/cli-service": "~5.0.0",
    "@vue/eslint-config-standard": "^6.1.0",
    "babel-plugin-component": "^1.1.1",
    "eslint": "^7.32.0",
    "eslint-plugin-import": "^2.25.3",
    "eslint-plugin-node": "^11.1.0",
public/EasyPlayer-lib.min.js
New file
Diff too large
public/EasyPlayer.wasm
Binary files differ
public/crossdomain.xml
New file
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
    <allow-access-from domain="*"/>
</cross-domain-policy>
public/favicon.ico

public/index.html
@@ -14,4 +14,5 @@
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
  <script src="/EasyPlayer-lib.min.js"></script>
</html>
src/App.vue
@@ -1,9 +1,5 @@
<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </nav>
    <router-view/>
  </div>
</template>
src/api/camear.js
New file
@@ -0,0 +1,28 @@
import axios from './request'
// 摄像机资源列表
export const getCamerasPage = (params) => {
  return axios({
    url: '/video/camera/page',
    method: 'get',
    params: params
  })
}
// 获取摄像头实时的视频流地址
export const getCameraVideoStreamUrl = (params) => {
  return axios({
    url: '/video/camera/video/play',
    method: 'get',
    params: params
  })
}
// 控制摄像头
export const setCameraCommand = (data) => {
  return axios({
    url: '/video/camera/command',
    method: 'post',
    data: data
  })
}
src/api/request.js
New file
@@ -0,0 +1,57 @@
import axios from 'axios'
import router from '../router'
import { Message } from 'element-ui'
const instance = axios.create({
  baseURL: '/api/',
  timeout: 100000,
  // 不携带cookie
  withCredentials: false,
  headers: {
    'Content-Type': 'application/json'
  }
})
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 带上token
  if (sessionStorage.getItem('token') !== null) {
    config.headers.Authentication = sessionStorage.getItem('token')
  }
  return config
}, function (error) {
  Message.error('请求存在问题,请检查')
  return Promise.reject(error)
})
// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 处理自定义状态码
  if (response.data.code === 200) {
    return response
    // 验证码错误放行,以便刷新验证码
  } else if (response.data.code === 1998) {
    return response
  } else {
    Message.error(response.data.msg)
    return Promise.reject(response.data.msg)
  }
}, function (error) {
  // 处理http状态码
  if (error.response.data) {
    error.message = error.response.data.msg
  }
  if (error.response.status === 401) {
    error.message = '登录已过期,请重新登录'
    // 删掉sessionStorage中过期token
    sessionStorage.clear()
    router.push('/')
  }
  if (error.response.status === 403) {
    error.message = '权限不足'
  }
  Message.error(error.message)
  return Promise.reject(error)
})
export default instance
src/components/ControllerVideoWeb.vue
New file
@@ -0,0 +1,210 @@
<template>
  <div>
    <div class="control-body" style="margin-left: 20px">
      <div style="height: 140px; position: relative">
        <div class="control-title">方向控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT_UP'}" @mousedown="setCameraCommand('LEFT_UP', 0)" @mouseup="setCameraCommand('LEFT_UP', 1)"><i class="el-icon-top-left"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'UP'}" @mousedown="setCameraCommand('UP', 0)" @mouseup="setCameraCommand('UP', 1)"><i class="el-icon-top"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT_UP'}" @mousedown="setCameraCommand('RIGHT_UP', 0)" @mouseup="setCameraCommand('RIGHT_UP', 1)"><i class="el-icon-top-right"></i></div>
            </div>
          </div>
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT'}" @mousedown="setCameraCommand('LEFT', 0)" @mouseup="setCameraCommand('LEFT', 1)"><i class="el-icon-back"></i></div>
            </div>
            <div class="b-item">
              <div style="min-width: 54px;user-select: none;">&nbsp;</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT'}" @mousedown="setCameraCommand('RIGHT', 0)" @mouseup="setCameraCommand('RIGHT', 1)"><i class="el-icon-right"></i></div>
            </div>
          </div>
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT_DOWN'}" @mousedown="setCameraCommand('LEFT_DOWN', 0)" @mouseup="setCameraCommand('LEFT_DOWN', 1)"><i class="el-icon-bottom-left"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'DOWN'}" @mousedown="setCameraCommand('DOWN', 0)" @mouseup="setCameraCommand('DOWN', 1)"><i class="el-icon-bottom"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT_DOWN'}" @mousedown="setCameraCommand('RIGHT_DOWN', 0)" @mouseup="setCameraCommand('RIGHT_DOWN', 1)"><i class="el-icon-bottom-right"></i></div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">焦距控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'ZOOM_IN'}" @mousedown="setCameraCommand('ZOOM_IN', 0)" @mouseup="setCameraCommand('ZOOM_IN', 1)">焦距变大</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'ZOOM_OUT'}" @mousedown="setCameraCommand('ZOOM_OUT', 0)" @mouseup="setCameraCommand('ZOOM_OUT', 1)">焦距变小</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">焦点控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'FOCUS_NEAR'}" @mousedown="setCameraCommand('FOCUS_NEAR', 0)" @mouseup="setCameraCommand('FOCUS_NEAR', 1)">焦点前移</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'FOCUS_FAR'}" @mousedown="setCameraCommand('FOCUS_FAR', 0)" @mouseup="setCameraCommand('FOCUS_FAR', 1)">焦点后移</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">光圈控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'IRIS_ENLARGE'}" @mousedown="setCameraCommand('IRIS_ENLARGE', 0)" @mouseup="setCameraCommand('IRIS_ENLARGE', 1)">光圈扩大</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'IRIS_REDUCE'}" @mousedown="setCameraCommand('IRIS_REDUCE', 0)" @mouseup="setCameraCommand('IRIS_REDUCE', 1)">光圈缩小</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative; margin: 8px 0px">
        <div class="control-title">路线控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'START_RECORD_TRACK'}" @mousedown="setCameraCommand('START_RECORD_TRACK', 0)" @mouseup="setCameraCommand('START_RECORD_TRACK', 1)">开始记录路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'STOP_RECORD_TRACK'}" @mousedown="setCameraCommand('STOP_RECORD_TRACK', 0)" @mouseup="setCameraCommand('STOP_RECORD_TRACK', 1)">停止记录路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'START_TRACK'}" @mousedown="setCameraCommand('START_TRACK', 0)" @mouseup="setCameraCommand('START_TRACK', 1)">开始路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'STOP_TRACK'}" @mousedown="setCameraCommand('STOP_TRACK', 0)" @mouseup="setCameraCommand('STOP_TRACK', 1)">停止路线</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">雨刷开关</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'WIPER_SWITCH'}" @mousedown="setCameraCommand('WIPER_SWITCH', 0)" @mouseup="setCameraCommand('WIPER_SWITCH', 1)">接通雨刷开关</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { setCameraCommand } from '@/api/camear'
export default {
  name: 'ControllerVideoWeb',
  props: {
    indexCode: {
      required: true,
      type: String
    }
  },
  data () {
    return {
      command: ''
    }
  },
  methods: {
    setCameraCommand (command, startOrEnd) {
      const formData = {
        indexCode: this.indexCode,
        action: startOrEnd, // 0开始  1结束
        command: command
      }
      this.command = command
      setCameraCommand(formData).then(res => {
        if (startOrEnd === 0) {
          this.$notify({
            title: '提示',
            dangerouslyUseHTMLString: true,
            message: '开始设置云台操作',
            type: 'success'
          })
        } else if (startOrEnd === 1) {
          this.$notify({
            title: '提示',
            dangerouslyUseHTMLString: true,
            message: '结束云台操作,稍等一下,设置正在应用中...',
            type: 'success'
          })
        }
      }).finally(() => {
        if (startOrEnd === 1) {
          this.command = ''
        }
      })
    }
  }
}
</script>
<style scoped>
.control-title {
  position: absolute;
  top: 0px;
  left: 5px
}
.control-body {
  width: 700px;
}
.margin20 {
  margin-left: 20px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .control-body {
    width: 90vw;
  }
  .control-title {
    display: none;
  }
  .margin20 {
    margin-left: 0px;
  }
}
.fx {
  display: flex;justify-content: center;align-items: center;height: 35px;margin-bottom: 8px;
}
.b-item {
  margin-right: 8px;
}
.b-item-item {
  padding: 10px;
  background-color: #eaeaea;
  border-radius: 4px;
  user-select: none;
}
.b-item-item:hover {
  cursor: pointer;
  background-color: #409EFF;
}
.icon {
  min-width: 34px;
}
.bgc {
  background-color: #409EFF;
}
</style>
src/components/ControllerVideoWx.vue
New file
@@ -0,0 +1,206 @@
<template>
  <div>
    <div class="control-body" style="margin-left: 20px">
      <div style="height: 140px; position: relative">
        <div class="control-title">方向控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT_UP'}" @touchstart="setCameraCommand('LEFT_UP', 0)" @touchend="setCameraCommand('LEFT_UP', 1)"><i class="el-icon-top-left"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'UP'}" @touchstart="setCameraCommand('UP', 0)" @touchend="setCameraCommand('UP', 1)"><i class="el-icon-top"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT_UP'}" @touchstart="setCameraCommand('RIGHT_UP', 0)" @touchend="setCameraCommand('RIGHT_UP', 1)"><i class="el-icon-top-right"></i></div>
            </div>
          </div>
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT'}" @touchstart="setCameraCommand('LEFT', 0)" @touchend="setCameraCommand('LEFT', 1)"><i class="el-icon-back"></i></div>
            </div>
            <div class="b-item">
              <div style="min-width: 54px; user-select: none;">&nbsp;</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT'}" @touchstart="setCameraCommand('RIGHT', 0)" @touchend="setCameraCommand('RIGHT', 1)"><i class="el-icon-right"></i></div>
            </div>
          </div>
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'LEFT_DOWN'}" @touchstart="setCameraCommand('LEFT_DOWN', 0)" @touchend="setCameraCommand('LEFT_DOWN', 1)"><i class="el-icon-bottom-left"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'DOWN'}" @touchstart="setCameraCommand('DOWN', 0)" @touchend="setCameraCommand('DOWN', 1)"><i class="el-icon-bottom"></i></div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, icon: true, bgc: this.command === 'RIGHT_DOWN'}" @touchstart="setCameraCommand('RIGHT_DOWN', 0)" @touchend="setCameraCommand('RIGHT_DOWN', 1)"><i class="el-icon-bottom-right"></i></div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">焦距控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'ZOOM_IN'}" @touchstart="setCameraCommand('ZOOM_IN', 0)" @touchend="setCameraCommand('ZOOM_IN', 1)">焦距变大</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'ZOOM_OUT'}" @touchstart="setCameraCommand('ZOOM_OUT', 0)" @touchend="setCameraCommand('ZOOM_OUT', 1)">焦距变小</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">焦点控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'FOCUS_NEAR'}" @touchstart="setCameraCommand('FOCUS_NEAR', 0)" @touchend="setCameraCommand('FOCUS_NEAR', 1)">焦点前移</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'FOCUS_FAR'}" @touchstart="setCameraCommand('FOCUS_FAR', 0)" @touchend="setCameraCommand('FOCUS_FAR', 1)">焦点后移</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">光圈控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'IRIS_ENLARGE'}" @touchstart="setCameraCommand('IRIS_ENLARGE', 0)" @touchend="setCameraCommand('IRIS_ENLARGE', 1)">光圈扩大</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'IRIS_REDUCE'}" @touchstart="setCameraCommand('IRIS_REDUCE', 0)" @touchend="setCameraCommand('IRIS_REDUCE', 1)">光圈缩小</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative; margin: 8px 0px">
        <div class="control-title">路线控制</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'START_RECORD_TRACK'}" @touchstart="setCameraCommand('START_RECORD_TRACK', 0)" @touchend="setCameraCommand('START_RECORD_TRACK', 1)">开始记录路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'STOP_RECORD_TRACK'}" @touchstart="setCameraCommand('STOP_RECORD_TRACK', 0)" @touchend="setCameraCommand('STOP_RECORD_TRACK', 1)">停止记录路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'START_TRACK'}" @touchstart="setCameraCommand('START_TRACK', 0)" @touchend="setCameraCommand('START_TRACK', 1)">开始路线</div>
            </div>
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'STOP_TRACK'}" @touchstart="setCameraCommand('STOP_TRACK', 0)" @touchend="setCameraCommand('STOP_TRACK', 1)">停止路线</div>
            </div>
          </div>
        </div>
      </div>
      <div style="height: 50px; position: relative">
        <div class="control-title">雨刷开关</div>
        <div class="margin20">
          <div class="fx">
            <div class="b-item">
              <div :class="{'b-item-item': true, bgc: this.command === 'WIPER_SWITCH'}" @touchstart="setCameraCommand('WIPER_SWITCH', 0)" @touchend="setCameraCommand('WIPER_SWITCH', 1)">接通雨刷开关</div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import { setCameraCommand } from '@/api/camear'
export default {
  name: 'ControllerVideoWx',
  props: {
    indexCode: {
      required: true,
      type: String
    }
  },
  data () {
    return {
      command: ''
    }
  },
  methods: {
    setCameraCommand (command, startOrEnd) {
      const formData = {
        indexCode: this.indexCode,
        action: startOrEnd, // 0开始  1结束
        command: command
      }
      this.command = command
      setCameraCommand(formData).then(res => {
        if (startOrEnd === 0) {
          this.$notify({
            title: '提示',
            dangerouslyUseHTMLString: true,
            message: '开始设置云台操作',
            type: 'success'
          })
        } else if (startOrEnd === 1) {
          this.$notify({
            title: '提示',
            dangerouslyUseHTMLString: true,
            message: '结束云台操作,稍等一下,设置正在应用中...',
            type: 'success'
          })
        }
      }).finally(() => {
        if (startOrEnd === 1) {
          this.command = ''
        }
      })
    }
  }
}
</script>
<style scoped>
.control-title {
  position: absolute;
  top: 0px;
  left: 5px
}
.control-body {
  width: 700px;
}
.margin20 {
  margin-left: 20px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .control-body {
    width: 90vw;
  }
  .control-title {
    display: none;
  }
  .margin20 {
    margin-left: 0px;
  }
}
.fx {
  display: flex;justify-content: center;align-items: center;height: 35px;margin-bottom: 8px;
}
.b-item {
  margin-right: 8px;
}
.b-item-item {
  padding: 10px;
  background-color: #eaeaea;
  border-radius: 4px;
  user-select: none;
}
.icon {
  min-width: 34px;
}
.bgc {
  background-color: #409EFF;
}
</style>
src/components/HelloWorld.vue
File was deleted
src/main.js
@@ -3,8 +3,13 @@
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
  router,
  store,
src/router/index.js
@@ -1,26 +1,68 @@
import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'
import CameraController from '../views/CameraController.vue'
import WxCameraPTZ1 from '../views/wx/CameraPTZ1.vue'
import WxCameraPTZ2 from '../views/wx/CameraPTZ2.vue'
import WxCameraPTZ3 from '../views/wx/CameraPTZ3.vue'
import WxCameraPTZ4 from '../views/wx/CameraPTZ4.vue'
import WebCameraPTZ1 from '../views/web/CameraPTZ1.vue'
import WebCameraPTZ2 from '../views/web/CameraPTZ2.vue'
import WebCameraPTZ3 from '../views/web/CameraPTZ3.vue'
import WebCameraPTZ4 from '../views/web/CameraPTZ4.vue'
Vue.use(VueRouter)
const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
    name: 'CameraController',
    component: CameraController
  },
  {
    path: '/about',
    name: 'about',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue')
    path: '/wx/camera/1',
    name: 'WxCameraPTZ1',
    component: WxCameraPTZ1
  },
  {
    path: '/wx/camera/2',
    name: 'WxCameraPTZ2',
    component: WxCameraPTZ2
  },
  {
    path: '/wx/camera/3',
    name: 'WxCameraPTZ3',
    component: WxCameraPTZ3
  },
  {
    path: '/wx/camera/4',
    name: 'WxCameraPTZ4',
    component: WxCameraPTZ4
  },
  {
    path: '/web/camera/1',
    name: 'WebCameraPTZ1',
    component: WebCameraPTZ1
  },
  {
    path: '/web/camera/2',
    name: 'WebCameraPTZ2',
    component: WebCameraPTZ2
  },
  {
    path: '/web/camera/3',
    name: 'WebCameraPTZ3',
    component: WebCameraPTZ3
  },
  {
    path: '/web/camera/4',
    name: 'WebCameraPTZ4',
    component: WebCameraPTZ4
  }
]
const router = new VueRouter({
  mode: 'history',
  routes
})
src/views/AboutView.vue
File was deleted
src/views/CameraController.vue
New file
@@ -0,0 +1,338 @@
<!--<template>-->
<!--  <div>-->
<!--    <div class="center">-->
<!--      <div style="display: flex;margin-bottom: 20px">-->
<!--        <el-input size="small" v-model="queryForm.name" placeholder="资源名称搜索" clearable @clear="handlerSearch" @input="handlerSearch"/>-->
<!--        <el-button style="margin-left: 10px" size="small" @click="handlerSearch">搜索</el-button>-->
<!--      </div>-->
<!--    </div>-->
<!--    <div class="center">-->
<!--      <div>-->
<!--        <el-table-->
<!--          :data="tableData"-->
<!--          border-->
<!--          style="width: 100%">-->
<!--          <el-table-column-->
<!--            fixed-->
<!--            prop="indexCode"-->
<!--            label="资源唯一编码"-->
<!--            width="350">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="name"-->
<!--            label="资源名称"-->
<!--            width="250">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="regionName"-->
<!--            label="所属区域"-->
<!--            width="120">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="regionPathName"-->
<!--            label="所属区域路径"-->
<!--            width="300">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="cameraType"-->
<!--            label="摄像机类型"-->
<!--            :formatter="cameraTypeFormatter"-->
<!--            width="120">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="createTime"-->
<!--            label="创建时间"-->
<!--            width="250">-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            fixed="right"-->
<!--            label="操作"-->
<!--            width="100">-->
<!--            <template slot-scope="scope">-->
<!--              <el-button @click="lookVideo(scope.row)" type="text" size="small">查看</el-button>-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--        </el-table>-->
<!--      </div>-->
<!--    </div>-->
<!--    <div class="center" style="margin-top: 20px">-->
<!--      <el-pagination-->
<!--        @size-change="handleSizeChange"-->
<!--        @current-change="handleCurrentChange"-->
<!--        :current-page="queryForm.pageNo"-->
<!--        :page-sizes="[10, 15, 20, 50]"-->
<!--        :page-size="100"-->
<!--        layout="total, sizes, prev, pager, next, jumper"-->
<!--        :total="total">-->
<!--      </el-pagination>-->
<!--    </div>-->
<!--    <el-dialog-->
<!--      title="查看视频"-->
<!--      :visible.sync="showVideo"-->
<!--      width="1300px"-->
<!--      :close-on-click-modal="false"-->
<!--      :destroy-on-close="true"-->
<!--      >-->
<!--      <div style="display: flex;flex-direction: row;">-->
<!--        <div style="width: 700px">-->
<!--          <easy-player :video-url="url" style="width:700px;height: 370px"></easy-player>-->
<!--        </div>-->
<!--        <div v-if="cameraType === 1 || cameraType === 2 || cameraType === 3" style="width: 550px;margin-left: 20px">-->
<!--          <div style="height: 140px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">方向控制</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('LEFT_UP', 0)" @mouseup="setCameraCommand('LEFT_UP', 1)"><i class="el-icon-top-left"></i></div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('UP', 0)" @mouseup="setCameraCommand('UP', 1)"><i class="el-icon-top"></i></div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('RIGHT_UP', 0)" @mouseup="setCameraCommand('RIGHT_UP', 1)"><i class="el-icon-top-right"></i></div>-->
<!--                </div>-->
<!--              </div>-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('LEFT', 0)" @mouseup="setCameraCommand('LEFT', 1)"><i class="el-icon-back"></i></div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div style="min-width: 54px">&nbsp;</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('RIGHT', 0)" @mouseup="setCameraCommand('RIGHT', 1)"><i class="el-icon-right"></i></div>-->
<!--                </div>-->
<!--              </div>-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('LEFT_DOWN', 0)" @mouseup="setCameraCommand('LEFT_DOWN', 1)"><i class="el-icon-bottom-left"></i></div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('DOWN', 0)" @mouseup="setCameraCommand('DOWN', 1)"><i class="el-icon-bottom"></i></div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item icon" @mousedown="setCameraCommand('RIGHT_DOWN', 0)" @mouseup="setCameraCommand('RIGHT_DOWN', 1)"><i class="el-icon-bottom-right"></i></div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--          <div style="height: 50px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">焦距控制</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('ZOOM_IN', 0)" @mouseup="setCameraCommand('ZOOM_IN', 1)">焦距变大</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('ZOOM_OUT', 0)" @mouseup="setCameraCommand('ZOOM_OUT', 1)">焦距变小</div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--          <div style="height: 50px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">焦点控制</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('FOCUS_NEAR', 0)" @mouseup="setCameraCommand('FOCUS_NEAR', 1)">焦点前移</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('FOCUS_FAR', 0)" @mouseup="setCameraCommand('FOCUS_FAR', 1)">焦点后移</div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--          <div style="height: 50px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">光圈控制</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('IRIS_ENLARGE', 0)" @mouseup="setCameraCommand('IRIS_ENLARGE', 1)">光圈扩大</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('IRIS_REDUCE', 0)" @mouseup="setCameraCommand('IRIS_REDUCE', 1)">光圈缩小</div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--          <div style="height: 50px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">路线</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('START_RECORD_TRACK', 0)" @mouseup="setCameraCommand('START_RECORD_TRACK', 1)">开始记录路线</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('STOP_RECORD_TRACK', 0)" @mouseup="setCameraCommand('STOP_RECORD_TRACK', 1)">停止记录路线</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('START_TRACK', 0)" @mouseup="setCameraCommand('START_TRACK', 1)">开始路线</div>-->
<!--                </div>-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('STOP_TRACK', 0)" @mouseup="setCameraCommand('STOP_TRACK', 1)">停止路线</div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--          <div style="height: 50px; position: relative">-->
<!--            <div style="position: absolute; top: 0px;left: 5px">接通雨刷开关</div>-->
<!--            <div style="margin-left: 20px">-->
<!--              <div class="fx">-->
<!--                <div class="b-item">-->
<!--                  <div class="b-item-item" @mousedown="setCameraCommand('WIPER_SWITCH', 0)" @mouseup="setCameraCommand('WIPER_SWITCH', 1)">接通雨刷开关</div>-->
<!--                </div>-->
<!--              </div>-->
<!--            </div>-->
<!--          </div>-->
<!--        </div>-->
<!--        <div v-else style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%">-->
<!--          <el-alert-->
<!--            title="该摄像机类型不支持云台操作"-->
<!--            type="info"-->
<!--            :closable="false"-->
<!--            show-icon>-->
<!--          </el-alert>-->
<!--        </div>-->
<!--      </div>-->
<!--    </el-dialog>-->
<!--  </div>-->
<!--</template>-->
<!--<script>-->
<!--import { getCamerasPage, getCameraVideoStreamUrl, setCameraCommand } from '@/api/camear'-->
<!--import EasyPlayer from '@easydarwin/easyplayer'-->
<!--export default {-->
<!--  name: 'CameraController',-->
<!--  components: { EasyPlayer },-->
<!--  data () {-->
<!--    return {-->
<!--      showVideo: false,-->
<!--      tableData: [],-->
<!--      total: 0,-->
<!--      queryForm: {-->
<!--        name: '',-->
<!--        pageNo: 1,-->
<!--        pageSize: 10-->
<!--      },-->
<!--      url: '',-->
<!--      indexCode: '', // 当前查看的设备编码-->
<!--      cameraType: null, // 当前查看的摄像机类型-->
<!--      command: '' // 当前操作的命令-->
<!--    }-->
<!--  },-->
<!--  mounted () {-->
<!--    this.getCameraPage()-->
<!--  },-->
<!--  methods: {-->
<!--    cameraTypeFormatter (row) {-->
<!--      if (row.cameraType === 0) {-->
<!--        return '枪机'-->
<!--      } else if (row.cameraType === 1) {-->
<!--        return '半球'-->
<!--      } else if (row.cameraType === 2) {-->
<!--        return '快球'-->
<!--      } else if (row.cameraType === 3) {-->
<!--        return '带云台枪机'-->
<!--      }-->
<!--    },-->
<!--    setCameraCommand (command, startOrEnd) {-->
<!--      const formData = {-->
<!--        indexCode: this.indexCode,-->
<!--        action: startOrEnd, // 0开始  1结束-->
<!--        command: command-->
<!--      }-->
<!--      this.command = command-->
<!--      setCameraCommand(formData).then(res => {-->
<!--        if (startOrEnd === 0) {-->
<!--          this.$notify({-->
<!--            title: '提示',-->
<!--            dangerouslyUseHTMLString: true,-->
<!--            message: '开始设置云台操作',-->
<!--            type: 'success'-->
<!--          })-->
<!--        } else if (startOrEnd === 1) {-->
<!--          this.$notify({-->
<!--            title: '提示',-->
<!--            dangerouslyUseHTMLString: true,-->
<!--            message: '结束云台操作,稍等一下,设置正在应用中...',-->
<!--            type: 'success'-->
<!--          })-->
<!--          this.command = ''-->
<!--          // const params = {-->
<!--          //   indexCode: this.indexCode,-->
<!--          //   protocol: 'hls'-->
<!--          // }-->
<!--          // getCameraVideoStreamUrl(params).then(res => {-->
<!--          //   this.url = res.data.data-->
<!--          // })-->
<!--        }-->
<!--      })-->
<!--    },-->
<!--    lookVideo (row) {-->
<!--      this.indexCode = row.indexCode-->
<!--      this.cameraType = row.cameraType-->
<!--      const params = {-->
<!--        indexCode: row.indexCode,-->
<!--        protocol: 'hls'-->
<!--      }-->
<!--      getCameraVideoStreamUrl(params).then(res => {-->
<!--        this.url = res.data.data-->
<!--        this.showVideo = true-->
<!--      })-->
<!--    },-->
<!--    handlerSearch () {-->
<!--      this.queryForm.pageNo = 1-->
<!--      this.getCameraPage()-->
<!--    },-->
<!--    getCameraPage () {-->
<!--      getCamerasPage(this.queryForm).then(res => {-->
<!--        this.tableData = res.data.data-->
<!--        this.total = res.data.total-->
<!--      })-->
<!--    },-->
<!--    handleSizeChange (val) {-->
<!--      this.queryForm.pageSize = val-->
<!--      this.getCameraPage()-->
<!--    },-->
<!--    handleCurrentChange (val) {-->
<!--      this.queryForm.pageNo = val-->
<!--      this.getCameraPage()-->
<!--    }-->
<!--  }-->
<!--}-->
<!--</script>-->
<!--<style scoped>-->
<!--.center {-->
<!--  width: 100%;-->
<!--  display: flex;-->
<!--  flex-direction: row;-->
<!--  justify-content: center;-->
<!--  align-items: center;-->
<!--}-->
<!--.fx {-->
<!--  display: flex;justify-content: center;align-items: center;height: 35px;margin-bottom: 8px;-->
<!--}-->
<!--.b-item {-->
<!--  margin-right: 8px;-->
<!--}-->
<!--.b-item-item {-->
<!--  padding: 10px;-->
<!--  background-color: #eaeaea;-->
<!--}-->
<!--.b-item-item:hover {-->
<!--  cursor: pointer;-->
<!--}-->
<!--.icon {-->
<!--  min-width: 34px;-->
<!--}-->
<!--.bgc {-->
<!--  background-color: #409EFF;-->
<!--}-->
<!--#my-video {-->
<!--  /*width: 800px;*/-->
<!--  /*height: 400px;*/-->
<!--}-->
<!--</style>-->
src/views/HomeView.vue
File was deleted
src/views/web/CameraPTZ1.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWeb'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '1',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/vbcZ7K8/live.m3u8?params=eyJpbmRleENvZGUiOiIxYTEzNzIwMjU5MmI0MzBmOGMzNDZmMjQzOTk2MDE0ZSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/web/CameraPTZ2.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWeb'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '2',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/PrSjxMQ/live.m3u8?params=eyJpbmRleENvZGUiOiIyNTkwZTkxNjAzMzg0NzJkOGRkYmFlZDUwOTkwODgzOSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/web/CameraPTZ3.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWeb'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '3',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/IT4ia2c/live.m3u8?params=eyJpbmRleENvZGUiOiIyN2E0NzE5NmMxMWI0NWMwODY3ZDkwMWFjYTYxNWMyYyIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/web/CameraPTZ4.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWeb'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '4',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/URyoQJa/live.m3u8?params=eyJpbmRleENvZGUiOiI4OWE1MzkxOGQ5YzE0MTg0OTQ1OWRmMTU0Zjk5MjBjNSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/wx/CameraPTZ1.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWx'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '1',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/vbcZ7K8/live.m3u8?params=eyJpbmRleENvZGUiOiIxYTEzNzIwMjU5MmI0MzBmOGMzNDZmMjQzOTk2MDE0ZSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/wx/CameraPTZ2.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWx'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '2',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/PrSjxMQ/live.m3u8?params=eyJpbmRleENvZGUiOiIyNTkwZTkxNjAzMzg0NzJkOGRkYmFlZDUwOTkwODgzOSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/wx/CameraPTZ3.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWx'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '3',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/IT4ia2c/live.m3u8?params=eyJpbmRleENvZGUiOiIyN2E0NzE5NmMxMWI0NWMwODY3ZDkwMWFjYTYxNWMyYyIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
src/views/wx/CameraPTZ4.vue
New file
@@ -0,0 +1,44 @@
<template>
  <div style="display: flex; flex-direction: column; width: 100%">
    <div style="width: 100%;display: flex;justify-content: center;">
      <div class="video-container">
        <easy-player :video-url="url"></easy-player>
      </div>
    </div>
    <div style="margin-top: 15px;display: flex;justify-content: center; width: 100%;">
      <controller-video :index-code="indexCode"/>
    </div>
  </div>
</template>
<script>
import EasyPlayer from '@easydarwin/easyplayer'
import ControllerVideo from '@/components/ControllerVideoWx'
export default {
  name: 'CameraPTZ1',
  components: { EasyPlayer, ControllerVideo },
  data () {
    return {
      indexCode: '4',
      url: 'https://hkpt.xwshtxq.com:1443/mls/openUrl/URyoQJa/live.m3u8?params=eyJpbmRleENvZGUiOiI4OWE1MzkxOGQ5YzE0MTg0OTQ1OWRmMTU0Zjk5MjBjNSIsIm5ldFpvbmVDb2RlIjoiNTMiLCJwcm90b2NvbCI6Imhsc3MiLCJ1c2VyZWRpcmVjdCI6dHJ1ZSwidXNlcklkIjoiYWRtaW4ifQ=='
    }
  },
  methods: {
  }
}
</script>
<style scoped>
/* 针对web的样式 */
.video-container {
  height: 370px;
  width: 700px;
}
/* 针对手机屏幕的样式 */
@media (max-width: 768px) {
  .video-container {
    height: 30vh;
    width: 90vw;
  }
}
</style>
vue.config.js
@@ -1,4 +1,16 @@
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true
  transpileDependencies: true,
  devServer: {
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:5678', // 代理地址 凡是使用/api
        changeOrigin: true, // 允许跨域请求
        secure: false,
        pathRewrite: { // 重写路径 替换请求地址中的指定路径
          ['^/api']: '/' // 将请求地址中的api替换为空
        }
      }
    }
  }
})