5.8
pengwei
2025-05-08 b281791abab23d672922b7e9b7d1b51e348ed710
5.8
已修改17个文件
已添加9个文件
4511 ■■■■ 文件已修改
项目代码/伸缩杆/client/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/pnpm-lock.yaml 2582 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/api/newapi/AlarmReset.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/api/user.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/left.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/right.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/you.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/zuo.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/右.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/左.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/播放.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/assets/imgs/暂停.png 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/layout/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/router/viewGird.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/system/Permission.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/system/Sys_Role1.vue 259 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/AlarmReset/AlarmReset.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/DataLogging/Datalogging.vue 202 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/Enteroverhaul/Enteroverhaul.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/Maintenancemanagement/Maintenancemanagement.vue 315 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/Parametersettings/Parametersettings.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/PickAndDrop/Manualcontrol.vue 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/PickAndDrop/PickAndDrop.vue 99 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/UserManagement/Usermanagement.vue 698 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/伸缩杆/client/src/views/tts/VideoSurveillance/VideoSurveillance.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
项目代码/可视化大屏/client/src/layout/index.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/package.json
@@ -16,7 +16,7 @@
    "compression-webpack-plugin": "^11.1.0",
    "echarts": "^5.6.0",
    "element-china-area-data": "^6.1.0",
    "element-plus": "^2.9.6",
    "element-plus": "^2.9.9",
    "pinia": "^2.3.0",
    "screenfull": "^6.0.2",
    "scss": "^0.2.4",
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/pnpm-lock.yaml
@@ -11,21 +11,45 @@
      '@element-plus/icons-vue':
        specifier: ^2.3.1
        version: 2.3.1(vue@3.5.13)
      ali-oss:
        specifier: ^6.22.0
        version: 6.22.0
      axios:
        specifier: ^1.8.3
        version: 1.9.0
      chart.js:
        specifier: ^4.4.7
        version: 4.4.8
      compression-webpack-plugin:
        specifier: ^11.1.0
        version: 11.1.0
      echarts:
        specifier: ^5.6.0
        version: 5.6.0
      element-china-area-data:
        specifier: ^6.1.0
        version: 6.1.0
      element-plus:
        specifier: ^2.9.3
        version: 2.9.6(vue@3.5.13)
        specifier: ^2.9.9
        version: 2.9.9(vue@3.5.13)
      pinia:
        specifier: ^2.3.0
        version: 2.3.1(vue@3.5.13)
      screenfull:
        specifier: ^6.0.2
        version: 6.0.2
      scss:
        specifier: ^0.2.4
        version: 0.2.4
      three:
        specifier: ^0.174.0
        version: 0.174.0
      three-orbit-controls:
        specifier: ^82.1.0
        version: 82.1.0
      uglifyjs-webpack-plugin:
        specifier: ^2.2.0
        version: 2.2.0
      vue:
        specifier: ^3.5.13
        version: 3.5.13
@@ -38,25 +62,34 @@
      vue-router:
        specifier: ^4.5.0
        version: 4.5.0(vue@3.5.13)
      vuex:
        specifier: ^4.0.2
        version: 4.1.0(vue@3.5.13)
      wangeditor:
        specifier: ^4.7.15
        version: 4.7.15
    devDependencies:
      '@vitejs/plugin-vue':
        specifier: ^5.2.1
        version: 5.2.3(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)
        version: 5.2.3(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)
      '@vitejs/plugin-vue-jsx':
        specifier: ^4.1.1
        version: 4.1.2(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)
        version: 4.1.2(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)
      less:
        specifier: ^4.2.2
        version: 4.3.0
      sass-embedded:
        specifier: ^1.83.1
        version: 1.86.0
      sass-loader:
        specifier: ^7.3.1
        version: 7.3.1(webpack@4.47.0)
        version: 7.3.1
      vite:
        specifier: ^6.0.5
        version: 6.2.2(sass-embedded@1.86.0)
        version: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
      vite-plugin-vue-devtools:
        specifier: ^7.6.8
        version: 7.7.2(rollup@4.36.0)(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)
        version: 7.7.2(rollup@4.36.0)(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)
packages:
@@ -190,6 +223,14 @@
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/runtime-corejs3@7.27.1':
    resolution: {integrity: sha512-909rVuj3phpjW6y0MCXAZ5iNeORePa6ldJvp2baWGcTjwqbBDDz6xoS5JHJ7lS88NlwLYj07ImL/8IUMtDZzTA==}
    engines: {node: '>=6.9.0'}
  '@babel/runtime@7.27.1':
    resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==}
    engines: {node: '>=6.9.0'}
  '@babel/template@7.26.9':
    resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
@@ -365,11 +406,11 @@
    cpu: [x64]
    os: [win32]
  '@floating-ui/core@1.6.9':
    resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
  '@floating-ui/core@1.7.0':
    resolution: {integrity: sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==}
  '@floating-ui/dom@1.6.13':
    resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
  '@floating-ui/dom@1.7.0':
    resolution: {integrity: sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==}
  '@floating-ui/utils@0.2.9':
    resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
@@ -525,6 +566,9 @@
  '@types/estree@1.0.6':
    resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
  '@types/json-schema@7.0.15':
    resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
  '@types/lodash-es@4.17.12':
    resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
@@ -622,159 +666,67 @@
  '@vueuse/shared@9.13.0':
    resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
  '@webassemblyjs/ast@1.9.0':
    resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==}
  address@1.2.2:
    resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
    engines: {node: '>= 10.0.0'}
  '@webassemblyjs/floating-point-hex-parser@1.9.0':
    resolution: {integrity: sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==}
  '@webassemblyjs/helper-api-error@1.9.0':
    resolution: {integrity: sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==}
  '@webassemblyjs/helper-buffer@1.9.0':
    resolution: {integrity: sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==}
  '@webassemblyjs/helper-code-frame@1.9.0':
    resolution: {integrity: sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==}
  '@webassemblyjs/helper-fsm@1.9.0':
    resolution: {integrity: sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==}
  '@webassemblyjs/helper-module-context@1.9.0':
    resolution: {integrity: sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==}
  '@webassemblyjs/helper-wasm-bytecode@1.9.0':
    resolution: {integrity: sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==}
  '@webassemblyjs/helper-wasm-section@1.9.0':
    resolution: {integrity: sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==}
  '@webassemblyjs/ieee754@1.9.0':
    resolution: {integrity: sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==}
  '@webassemblyjs/leb128@1.9.0':
    resolution: {integrity: sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==}
  '@webassemblyjs/utf8@1.9.0':
    resolution: {integrity: sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==}
  '@webassemblyjs/wasm-edit@1.9.0':
    resolution: {integrity: sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==}
  '@webassemblyjs/wasm-gen@1.9.0':
    resolution: {integrity: sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==}
  '@webassemblyjs/wasm-opt@1.9.0':
    resolution: {integrity: sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==}
  '@webassemblyjs/wasm-parser@1.9.0':
    resolution: {integrity: sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==}
  '@webassemblyjs/wast-parser@1.9.0':
    resolution: {integrity: sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==}
  '@webassemblyjs/wast-printer@1.9.0':
    resolution: {integrity: sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==}
  '@xtuc/ieee754@1.2.0':
    resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
  '@xtuc/long@4.2.2':
    resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
  acorn@6.4.2:
    resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==}
    engines: {node: '>=0.4.0'}
    hasBin: true
  acorn@8.14.1:
    resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
    engines: {node: '>=0.4.0'}
    hasBin: true
  agentkeepalive@3.5.3:
    resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==}
    engines: {node: '>= 4.0.0'}
  ajv-errors@1.0.1:
    resolution: {integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==}
    peerDependencies:
      ajv: '>=5.0.0'
  ajv-formats@2.1.1:
    resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==}
    peerDependencies:
      ajv: ^8.0.0
    peerDependenciesMeta:
      ajv:
        optional: true
  ajv-keywords@3.5.2:
    resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
    peerDependencies:
      ajv: ^6.9.1
  ajv-keywords@5.1.0:
    resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==}
    peerDependencies:
      ajv: ^8.8.2
  ajv@6.12.6:
    resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
  anymatch@2.0.0:
    resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==}
  ajv@8.17.1:
    resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
  anymatch@3.1.3:
    resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
    engines: {node: '>= 8'}
  ali-oss@6.22.0:
    resolution: {integrity: sha512-X8CHo+wsjCBvDaEvuibFOi3SZxiCBZSRUURrXH0upoVwu3SuW3e+PTVK7xw+uN6EyTcAESqrngrQimhp8iBzsQ==}
    engines: {node: '>=8'}
  any-promise@1.3.0:
    resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
  aproba@1.2.0:
    resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
  arr-diff@4.0.0:
    resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
    engines: {node: '>=0.10.0'}
  arr-flatten@1.1.0:
    resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
    engines: {node: '>=0.10.0'}
  arr-union@3.1.0:
    resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
    engines: {node: '>=0.10.0'}
  array-unique@0.3.2:
    resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
    engines: {node: '>=0.10.0'}
  asn1.js@4.10.1:
    resolution: {integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==}
  assert@1.5.1:
    resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==}
  assign-symbols@1.0.0:
    resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
    engines: {node: '>=0.10.0'}
  async-each@1.0.6:
    resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==}
  async-validator@4.2.5:
    resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
  atob@2.1.2:
    resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
    engines: {node: '>= 4.5.0'}
    hasBin: true
  asynckit@0.4.0:
    resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
  axios@1.9.0:
    resolution: {integrity: sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==}
  balanced-match@1.0.2:
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
  base64-js@1.5.1:
    resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
  base@0.11.2:
    resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
    engines: {node: '>=0.10.0'}
  big.js@5.2.2:
    resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
  binary-extensions@1.13.1:
    resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==}
    engines: {node: '>=0.10.0'}
  binary-extensions@2.3.0:
    resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
    engines: {node: '>=8'}
  bindings@1.5.0:
    resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
  birpc@0.2.19:
    resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==}
@@ -782,45 +734,11 @@
  bluebird@3.7.2:
    resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
  bn.js@4.12.1:
    resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==}
  bn.js@5.2.1:
    resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==}
  bowser@1.9.4:
    resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==}
  brace-expansion@1.1.11:
    resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
  braces@2.3.2:
    resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
    engines: {node: '>=0.10.0'}
  braces@3.0.3:
    resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
    engines: {node: '>=8'}
  brorand@1.1.0:
    resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==}
  browserify-aes@1.2.0:
    resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==}
  browserify-cipher@1.0.1:
    resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==}
  browserify-des@1.0.2:
    resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==}
  browserify-rsa@4.1.1:
    resolution: {integrity: sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==}
    engines: {node: '>= 0.10'}
  browserify-sign@4.2.3:
    resolution: {integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==}
    engines: {node: '>= 0.12'}
  browserify-zlib@0.2.0:
    resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==}
  browserslist@4.24.4:
    resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
@@ -833,12 +751,6 @@
  buffer-from@1.1.2:
    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
  buffer-xor@1.0.3:
    resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==}
  buffer@4.9.2:
    resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==}
  builtin-status-codes@3.0.0:
    resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==}
@@ -849,16 +761,8 @@
  cacache@12.0.4:
    resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==}
  cache-base@1.0.1:
    resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
    engines: {node: '>=0.10.0'}
  call-bind-apply-helpers@1.0.2:
    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
    engines: {node: '>= 0.4'}
  call-bind@1.0.8:
    resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
    engines: {node: '>= 0.4'}
  call-bound@1.0.4:
@@ -872,47 +776,31 @@
    resolution: {integrity: sha512-IkGZlVpXP+83QpMm4uxEiGqSI7jFizwVtF3+n5Pc3k7sMO+tkd0qxh2OzLhenM0K80xtmAONWGBn082EiBQSDA==}
    engines: {pnpm: '>=8'}
  chokidar@2.1.8:
    resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==}
  chokidar@3.6.0:
    resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
    engines: {node: '>= 8.10.0'}
  china-division@2.7.0:
    resolution: {integrity: sha512-4uUPAT+1WfqDh5jytq7omdCmHNk3j+k76zEG/2IqaGcYB90c2SwcixttcypdsZ3T/9tN1TTpBDoeZn+Yw/qBEA==}
  chownr@1.1.4:
    resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
  chrome-trace-event@1.0.4:
    resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
    engines: {node: '>=6.0'}
  cipher-base@1.0.6:
    resolution: {integrity: sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==}
    engines: {node: '>= 0.10'}
  class-utils@0.3.6:
    resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
    engines: {node: '>=0.10.0'}
  clone-deep@4.0.1:
    resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
    engines: {node: '>=6'}
  collection-visit@1.0.0:
    resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
    engines: {node: '>=0.10.0'}
  colorjs.io@0.5.2:
    resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==}
  commander@2.20.3:
    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
  combined-stream@1.0.8:
    resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
    engines: {node: '>= 0.8'}
  commondir@1.0.1:
    resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
  component-emitter@1.3.1:
    resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
  compression-webpack-plugin@11.1.0:
    resolution: {integrity: sha512-zDOQYp10+upzLxW+VRSjEpRRwBXJdsb5lBMlRxx1g8hckIFBpe3DTI0en2w7h+beuq89576RVzfiXrkdPGrHhA==}
    engines: {node: '>= 18.12.0'}
    peerDependencies:
      webpack: ^5.1.0
  concat-map@0.0.1:
    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -921,14 +809,15 @@
    resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
    engines: {'0': node >= 0.8}
  console-browserify@1.2.0:
    resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==}
  constants-browserify@1.0.0:
    resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==}
  content-type@1.0.5:
    resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
    engines: {node: '>= 0.6'}
  convert-source-map@2.0.0:
    resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
  copy-anything@2.0.6:
    resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
  copy-anything@3.0.5:
    resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
@@ -938,29 +827,18 @@
    resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==}
    deprecated: This package is no longer supported.
  copy-descriptor@0.1.1:
    resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
    engines: {node: '>=0.10.0'}
  copy-to@2.0.1:
    resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==}
  core-js-pure@3.42.0:
    resolution: {integrity: sha512-007bM04u91fF4kMgwom2I5cQxAFIy8jVulgr9eozILl/SZE53QOqnW/+vviC+wQWLv+AunBG+8Q0TLoeSsSxRQ==}
  core-util-is@1.0.3:
    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
  create-ecdh@4.0.4:
    resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==}
  create-hash@1.2.0:
    resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==}
  create-hmac@1.1.7:
    resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==}
  cross-spawn@7.0.6:
    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
    engines: {node: '>= 8'}
  crypto-browserify@3.12.1:
    resolution: {integrity: sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==}
    engines: {node: '>= 0.10'}
  csstype@3.1.3:
    resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
@@ -968,16 +846,11 @@
  cyclist@1.0.2:
    resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==}
  dateformat@2.2.0:
    resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==}
  dayjs@1.11.13:
    resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
  debug@2.6.9:
    resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
    peerDependencies:
      supports-color: '*'
    peerDependenciesMeta:
      supports-color:
        optional: true
  debug@4.4.0:
    resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
@@ -988,10 +861,6 @@
      supports-color:
        optional: true
  decode-uri-component@0.2.2:
    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
    engines: {node: '>=0.10'}
  default-browser-id@5.0.0:
    resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
    engines: {node: '>=18'}
@@ -1000,39 +869,25 @@
    resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
    engines: {node: '>=18'}
  define-data-property@1.1.4:
    resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
    engines: {node: '>= 0.4'}
  default-user-agent@1.0.0:
    resolution: {integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==}
    engines: {node: '>= 0.10.0'}
  define-lazy-prop@3.0.0:
    resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
    engines: {node: '>=12'}
  define-properties@1.2.1:
    resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
    engines: {node: '>= 0.4'}
  delayed-stream@1.0.0:
    resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
    engines: {node: '>=0.4.0'}
  define-property@0.2.5:
    resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
    engines: {node: '>=0.10.0'}
  destroy@1.2.0:
    resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
    engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
  define-property@1.0.0:
    resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
    engines: {node: '>=0.10.0'}
  define-property@2.0.2:
    resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
    engines: {node: '>=0.10.0'}
  des.js@1.1.0:
    resolution: {integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==}
  diffie-hellman@5.0.3:
    resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==}
  domain-browser@1.2.0:
    resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==}
    engines: {node: '>=0.4', npm: '>=1.2'}
  digest-header@1.1.0:
    resolution: {integrity: sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==}
    engines: {node: '>= 8.0.0'}
  dunder-proto@1.0.1:
    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
@@ -1044,16 +899,19 @@
  echarts@5.6.0:
    resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
  ee-first@1.1.1:
    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
  electron-to-chromium@1.5.120:
    resolution: {integrity: sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==}
  element-plus@2.9.6:
    resolution: {integrity: sha512-D9zU28Ce0s/9O/Vp3ewemikxzFVA6gdZyMwmWijHijo+t5/9H3sHRTIm1WlfeNpFW2Yq0y8nHXD0fU5YxU6qlQ==}
  element-china-area-data@6.1.0:
    resolution: {integrity: sha512-IkpcjwQv2A/2AxFiSoaISZ+oMw1rZCPUSOg5sOCwT5jKc96TaawmKZeY81xfxXsO0QbKxU5LLc6AirhG52hUmg==}
  element-plus@2.9.9:
    resolution: {integrity: sha512-gN553+xr7ETkhJhH26YG0fERmd2BSCcQKslbtR8fats0Mc0yCtZOXr00bmoPOt5xGzhuRN1TWc9+f1pCaiA0/Q==}
    peerDependencies:
      vue: ^3.2.0
  elliptic@6.6.1:
    resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
  emojis-list@3.0.0:
    resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
@@ -1062,9 +920,9 @@
  end-of-stream@1.4.4:
    resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
  enhanced-resolve@4.5.0:
    resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==}
    engines: {node: '>=6.9.0'}
  end-or-error@1.0.1:
    resolution: {integrity: sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==}
    engines: {node: '>= 0.11.14'}
  entities@4.5.0:
    resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
@@ -1089,6 +947,10 @@
    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
    engines: {node: '>= 0.4'}
  es-set-tostringtag@2.1.0:
    resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
    engines: {node: '>= 0.4'}
  esbuild@0.25.1:
    resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
    engines: {node: '>=18'}
@@ -1101,50 +963,15 @@
  escape-html@1.0.3:
    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
  eslint-scope@4.0.3:
    resolution: {integrity: sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==}
    engines: {node: '>=4.0.0'}
  esrecurse@4.3.0:
    resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
    engines: {node: '>=4.0'}
  estraverse@4.3.0:
    resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
    engines: {node: '>=4.0'}
  estraverse@5.3.0:
    resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
    engines: {node: '>=4.0'}
  estree-walker@2.0.2:
    resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
  events@3.3.0:
    resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
    engines: {node: '>=0.8.x'}
  evp_bytestokey@1.0.3:
    resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==}
  execa@9.5.2:
    resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==}
    engines: {node: ^18.19.0 || >=20.5.0}
  expand-brackets@2.1.4:
    resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
    engines: {node: '>=0.10.0'}
  extend-shallow@2.0.1:
    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
    engines: {node: '>=0.10.0'}
  extend-shallow@3.0.2:
    resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
    engines: {node: '>=0.10.0'}
  extglob@2.0.4:
    resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
    engines: {node: '>=0.10.0'}
  fast-deep-equal@3.1.3:
@@ -1153,6 +980,9 @@
  fast-json-stable-stringify@2.1.0:
    resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
  fast-uri@3.0.6:
    resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
  figgy-pudding@3.5.2:
    resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==}
    deprecated: This module is no longer supported.
@@ -1160,17 +990,6 @@
  figures@6.1.0:
    resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
    engines: {node: '>=18'}
  file-uri-to-path@1.0.0:
    resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
  fill-range@4.0.0:
    resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
    engines: {node: '>=0.10.0'}
  fill-range@7.1.1:
    resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
    engines: {node: '>=8'}
  find-cache-dir@2.1.0:
    resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
@@ -1183,13 +1002,21 @@
  flush-write-stream@1.1.1:
    resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==}
  for-in@1.0.2:
    resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
    engines: {node: '>=0.10.0'}
  follow-redirects@1.15.9:
    resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
    engines: {node: '>=4.0'}
    peerDependencies:
      debug: '*'
    peerDependenciesMeta:
      debug:
        optional: true
  fragment-cache@0.2.1:
    resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
    engines: {node: '>=0.10.0'}
  form-data@4.0.2:
    resolution: {integrity: sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==}
    engines: {node: '>= 6'}
  formstream@1.5.1:
    resolution: {integrity: sha512-q7ORzFqotpwn3Y/GBK2lK7PjtZZwJHz9QE9Phv8zb5IrL9ftGLyi2zjGURON3voK8TaZ+mqJKERYN4lrHYTkUQ==}
  from2@2.3.0:
    resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
@@ -1204,12 +1031,6 @@
  fs.realpath@1.0.0:
    resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
  fsevents@1.2.13:
    resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
    engines: {node: '>= 4.0'}
    os: [darwin]
    deprecated: Upgrade to fsevents v2 to mitigate potential security issues
  fsevents@2.3.3:
    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
@@ -1231,20 +1052,12 @@
    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
    engines: {node: '>= 0.4'}
  get-ready@1.0.0:
    resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==}
  get-stream@9.0.1:
    resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==}
    engines: {node: '>=18'}
  get-value@2.0.6:
    resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
    engines: {node: '>=0.10.0'}
  glob-parent@3.1.0:
    resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
  glob-parent@5.1.2:
    resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
    engines: {node: '>= 6'}
  glob@7.2.3:
    resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
@@ -1265,58 +1078,39 @@
    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
    engines: {node: '>=8'}
  has-property-descriptors@1.0.2:
    resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
  has-symbols@1.1.0:
    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
    engines: {node: '>= 0.4'}
  has-value@0.3.1:
    resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
    engines: {node: '>=0.10.0'}
  has-value@1.0.0:
    resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
    engines: {node: '>=0.10.0'}
  has-values@0.1.4:
    resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
    engines: {node: '>=0.10.0'}
  has-values@1.0.0:
    resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
    engines: {node: '>=0.10.0'}
  hash-base@3.0.5:
    resolution: {integrity: sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==}
    engines: {node: '>= 0.10'}
  hash.js@1.1.7:
    resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==}
  has-tostringtag@1.0.2:
    resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
    engines: {node: '>= 0.4'}
  hasown@2.0.2:
    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
    engines: {node: '>= 0.4'}
  hmac-drbg@1.0.1:
    resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==}
  hookable@5.5.3:
    resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
  https-browserify@1.0.0:
    resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==}
  human-signals@8.0.0:
    resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==}
    engines: {node: '>=18.18.0'}
  ieee754@1.2.1:
    resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
  humanize-ms@1.2.1:
    resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
  iconv-lite@0.6.3:
    resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
    engines: {node: '>=0.10.0'}
  iferr@0.1.5:
    resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}
  image-size@0.5.5:
    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
    engines: {node: '>=0.10.0'}
    hasBin: true
  immutable@5.0.3:
    resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==}
@@ -1332,38 +1126,11 @@
    resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
    deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
  inherits@2.0.3:
    resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
  inherits@2.0.4:
    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
  is-accessor-descriptor@1.0.1:
    resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
    engines: {node: '>= 0.10'}
  is-binary-path@1.0.1:
    resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==}
    engines: {node: '>=0.10.0'}
  is-binary-path@2.1.0:
    resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
    engines: {node: '>=8'}
  is-buffer@1.1.6:
    resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
  is-data-descriptor@1.0.1:
    resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
    engines: {node: '>= 0.4'}
  is-descriptor@0.1.7:
    resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==}
    engines: {node: '>= 0.4'}
  is-descriptor@1.0.3:
    resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
    engines: {node: '>= 0.4'}
  is-class-hotfix@0.0.6:
    resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==}
  is-docker@3.0.0:
    resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
@@ -1374,34 +1141,10 @@
    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
    engines: {node: '>=0.10.0'}
  is-extendable@1.0.1:
    resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
    engines: {node: '>=0.10.0'}
  is-extglob@2.1.1:
    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
    engines: {node: '>=0.10.0'}
  is-glob@3.1.0:
    resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
    engines: {node: '>=0.10.0'}
  is-glob@4.0.3:
    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
    engines: {node: '>=0.10.0'}
  is-inside-container@1.0.0:
    resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
    engines: {node: '>=14.16'}
    hasBin: true
  is-number@3.0.0:
    resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
    engines: {node: '>=0.10.0'}
  is-number@7.0.0:
    resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
    engines: {node: '>=0.12.0'}
  is-plain-obj@4.1.0:
    resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
@@ -1415,17 +1158,19 @@
    resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==}
    engines: {node: '>=18'}
  is-type-of@1.4.0:
    resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==}
  is-unicode-supported@2.1.0:
    resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
    engines: {node: '>=18'}
  is-what@3.14.1:
    resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
  is-what@4.1.16:
    resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
    engines: {node: '>=12.13'}
  is-windows@1.0.2:
    resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
    engines: {node: '>=0.10.0'}
  is-wsl@1.1.0:
    resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==}
@@ -1441,13 +1186,15 @@
  isexe@2.0.0:
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
  isobject@2.1.0:
    resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
    engines: {node: '>=0.10.0'}
  isobject@3.0.1:
    resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
    engines: {node: '>=0.10.0'}
  isstream@0.1.2:
    resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
  js-base64@2.6.4:
    resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
  js-tokens@4.0.0:
    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1457,11 +1204,11 @@
    engines: {node: '>=6'}
    hasBin: true
  json-parse-better-errors@1.0.2:
    resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
  json-schema-traverse@0.4.1:
    resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
  json-schema-traverse@1.0.0:
    resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
  json5@1.0.2:
    resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
@@ -1475,13 +1222,8 @@
  jsonfile@6.1.0:
    resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
  kind-of@3.2.2:
    resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
    engines: {node: '>=0.10.0'}
  kind-of@4.0.0:
    resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
    engines: {node: '>=0.10.0'}
  jstoxml@2.2.9:
    resolution: {integrity: sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==}
  kind-of@6.0.3:
    resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
@@ -1490,9 +1232,10 @@
  kolorist@1.8.0:
    resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
  loader-runner@2.4.0:
    resolution: {integrity: sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==}
    engines: {node: '>=4.3.0 <5.0.0 || >=5.10'}
  less@4.3.0:
    resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==}
    engines: {node: '>=14'}
    hasBin: true
  loader-utils@1.4.2:
    resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
@@ -1525,44 +1268,33 @@
    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
    engines: {node: '>=6'}
  map-cache@0.2.2:
    resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
    engines: {node: '>=0.10.0'}
  map-visit@1.0.0:
    resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
    engines: {node: '>=0.10.0'}
  math-intrinsics@1.1.0:
    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
    engines: {node: '>= 0.4'}
  md5.js@1.3.5:
    resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==}
  memoize-one@6.0.0:
    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
  memory-fs@0.4.1:
    resolution: {integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==}
  merge-descriptors@1.0.3:
    resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
  memory-fs@0.5.0:
    resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==}
    engines: {node: '>=4.3.0 <5.0.0 || >=5.10'}
  mime-db@1.52.0:
    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
    engines: {node: '>= 0.6'}
  micromatch@3.1.10:
    resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
    engines: {node: '>=0.10.0'}
  mime-types@2.1.35:
    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
    engines: {node: '>= 0.6'}
  miller-rabin@4.0.1:
    resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==}
  mime@1.6.0:
    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
    engines: {node: '>=4'}
    hasBin: true
  minimalistic-assert@1.0.1:
    resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
  minimalistic-crypto-utils@1.0.1:
    resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==}
  mime@2.6.0:
    resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
    engines: {node: '>=4.0.0'}
    hasBin: true
  minimatch@3.1.2:
    resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -1577,10 +1309,6 @@
  mitt@3.0.1:
    resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
  mixin-deep@1.3.2:
    resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
    engines: {node: '>=0.10.0'}
  mkdirp@0.5.6:
    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
    hasBin: true
@@ -1593,14 +1321,11 @@
    resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
    engines: {node: '>=10'}
  ms@2.0.0:
    resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
  ms@2.1.3:
    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
  nan@2.22.2:
    resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==}
  mz@2.7.0:
    resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
  nanoid@3.3.10:
    resolution: {integrity: sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==}
@@ -1612,26 +1337,20 @@
    engines: {node: ^18 || >=20}
    hasBin: true
  nanomatch@1.2.13:
    resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
    engines: {node: '>=0.10.0'}
  needle@3.3.1:
    resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
    engines: {node: '>= 4.4.x'}
    hasBin: true
  neo-async@2.6.2:
    resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
  node-libs-browser@2.2.1:
    resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==}
  node-hex@1.0.1:
    resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==}
    engines: {node: '>=8.0.0'}
  node-releases@2.0.19:
    resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==}
  normalize-path@2.1.1:
    resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==}
    engines: {node: '>=0.10.0'}
  normalize-path@3.0.0:
    resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
    engines: {node: '>=0.10.0'}
  normalize-wheel-es@1.2.0:
    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
@@ -1640,29 +1359,13 @@
    resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==}
    engines: {node: '>=18'}
  object-copy@0.1.0:
    resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
  object-assign@4.1.1:
    resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
    engines: {node: '>=0.10.0'}
  object-inspect@1.13.4:
    resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
    engines: {node: '>= 0.4'}
  object-keys@1.1.1:
    resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
    engines: {node: '>= 0.4'}
  object-visit@1.0.1:
    resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
    engines: {node: '>=0.10.0'}
  object.assign@4.1.7:
    resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
    engines: {node: '>= 0.4'}
  object.pick@1.3.0:
    resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
    engines: {node: '>=0.10.0'}
  ometa@0.2.2:
    resolution: {integrity: sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==}
@@ -1675,8 +1378,15 @@
    resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
    engines: {node: '>=18'}
  os-browserify@0.3.0:
    resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
  os-name@1.0.3:
    resolution: {integrity: sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==}
    engines: {node: '>=0.10.0'}
    hasBin: true
  osx-release@1.1.0:
    resolution: {integrity: sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==}
    engines: {node: '>=0.10.0'}
    hasBin: true
  p-limit@2.3.0:
    resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
@@ -1690,29 +1400,16 @@
    resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
    engines: {node: '>=6'}
  pako@1.0.11:
    resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==}
  parallel-transform@1.2.0:
    resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==}
  parse-asn1@5.1.7:
    resolution: {integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==}
    engines: {node: '>= 0.10'}
  parse-ms@4.0.0:
    resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==}
    engines: {node: '>=18'}
  pascalcase@0.1.1:
    resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
    engines: {node: '>=0.10.0'}
  path-browserify@0.0.1:
    resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==}
  path-dirname@1.0.2:
    resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
  parse-node-version@1.0.1:
    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
    engines: {node: '>= 0.10'}
  path-exists@3.0.0:
    resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
@@ -1733,19 +1430,14 @@
  pathe@2.0.3:
    resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
  pbkdf2@3.1.2:
    resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==}
    engines: {node: '>=0.12'}
  pause-stream@0.0.11:
    resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
  perfect-debounce@1.0.0:
    resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
  picocolors@1.1.1:
    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
  picomatch@2.3.1:
    resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
    engines: {node: '>=8.6'}
  picomatch@4.0.2:
    resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
@@ -1768,9 +1460,8 @@
    resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
    engines: {node: '>=6'}
  posix-character-classes@0.1.1:
    resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
    engines: {node: '>=0.10.0'}
  platform@1.3.6:
    resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
  postcss@8.5.3:
    resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
@@ -1783,10 +1474,6 @@
  process-nextick-args@2.0.1:
    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
  process@0.11.10:
    resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
    engines: {node: '>= 0.6.0'}
  promise-inflight@1.0.1:
    resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
    peerDependencies:
@@ -1795,11 +1482,11 @@
      bluebird:
        optional: true
  proxy-from-env@1.1.0:
    resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
  prr@1.0.1:
    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
  public-encrypt@4.0.3:
    resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==}
  pump@2.0.1:
    resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
@@ -1810,9 +1497,6 @@
  pumpify@1.5.1:
    resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
  punycode@1.4.1:
    resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==}
  punycode@2.3.1:
    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
    engines: {node: '>=6'}
@@ -1821,49 +1505,15 @@
    resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
    engines: {node: '>=0.6'}
  querystring-es3@0.2.1:
    resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==}
    engines: {node: '>=0.4.x'}
  randombytes@2.1.0:
    resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
  randomfill@1.0.4:
    resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==}
  readable-stream@2.3.8:
    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
  readdirp@2.2.1:
    resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==}
    engines: {node: '>=0.10'}
  readdirp@3.6.0:
    resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
    engines: {node: '>=8.10.0'}
  regex-not@1.0.2:
    resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
  require-from-string@2.0.2:
    resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
    engines: {node: '>=0.10.0'}
  remove-trailing-separator@1.1.0:
    resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==}
  repeat-element@1.1.4:
    resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
    engines: {node: '>=0.10.0'}
  repeat-string@1.6.1:
    resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
    engines: {node: '>=0.10'}
  resolve-url@0.2.1:
    resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
    deprecated: https://github.com/lydell/resolve-url#deprecated
  ret@0.1.15:
    resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
    engines: {node: '>=0.12'}
  rfdc@1.4.1:
    resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
@@ -1872,9 +1522,6 @@
    resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
    deprecated: Rimraf versions prior to v4 are no longer supported
    hasBin: true
  ripemd160@2.0.2:
    resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==}
  rollup@4.36.0:
    resolution: {integrity: sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==}
@@ -1897,8 +1544,38 @@
  safe-buffer@5.2.1:
    resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
  safe-regex@1.1.0:
    resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
  safer-buffer@2.1.2:
    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
  sass-embedded-android-arm64@1.86.0:
    resolution: {integrity: sha512-r7MZtlAI2VFUnKE8B5UOrpoE6OGpdf1dIB6ndoxb3oiURgMyfTVU7yvJcL12GGvtVwQ2boCj6dq//Lqq9CXPlQ==}
    engines: {node: '>=14.0.0'}
    cpu: [arm64]
    os: [android]
  sass-embedded-android-arm@1.86.0:
    resolution: {integrity: sha512-NS8v6BCbzskXUMBtzfuB+j2yQMgiwg5edKHTYfQU7gAWai2hkRhS06YNEMff3aRxV0IFInxPRHOobd8xWPHqeA==}
    engines: {node: '>=14.0.0'}
    cpu: [arm]
    os: [android]
  sass-embedded-android-ia32@1.86.0:
    resolution: {integrity: sha512-UjfElrGaOTNOnxLZLxf6MFndFIe7zyK+81f83BioZ7/jcoAd6iCHZT8yQMvu8wINyVodPcaXZl8KxlKcl62VAA==}
    engines: {node: '>=14.0.0'}
    cpu: [ia32]
    os: [android]
  sass-embedded-android-riscv64@1.86.0:
    resolution: {integrity: sha512-TsqCLxHWLFS2mbpUkL/nge3jSkaPK2VmLkkoi5iO/EQT4SFvm1lNUgPwlLXu9DplZ+aqGVzRS9Y6Psjv+qW7kw==}
    engines: {node: '>=14.0.0'}
    cpu: [riscv64]
    os: [android]
  sass-embedded-android-x64@1.86.0:
    resolution: {integrity: sha512-8Q263GgwGjz7Jkf7Eghp7NrwqskDL95WO9sKrNm9iOd2re/M48W7RN/lpdcZwrUnEOhueks0RRyYyZYBNRz8Tg==}
    engines: {node: '>=14.0.0'}
    cpu: [x64]
    os: [android]
  sass-embedded-darwin-arm64@1.86.0:
    resolution: {integrity: sha512-d8oMEaIweq1tjrb/BT43igDviOMS1TeDpc51QF7vAHkt9drSjPmqEmbqStdFYPAGZj1j0RA4WCRoVl6jVixi/w==}
@@ -1912,6 +1589,84 @@
    cpu: [x64]
    os: [darwin]
  sass-embedded-linux-arm64@1.86.0:
    resolution: {integrity: sha512-50A+0rhahRDRkKkv+qS7GDAAkW1VPm2RCX4zY4JWydhV4NwMXr6HbkLnsJ2MGixCyibPh59iflMpNBhe7SEMNg==}
    engines: {node: '>=14.0.0'}
    cpu: [arm64]
    os: [linux]
  sass-embedded-linux-arm@1.86.0:
    resolution: {integrity: sha512-b6wm0+Il+blJDleRXAqA6JISGMjRb0/thTEg4NWgmiJwUoZjDycj5FTbfYPnLXjCEIMGaYmW3patrJ3JMJcT3Q==}
    engines: {node: '>=14.0.0'}
    cpu: [arm]
    os: [linux]
  sass-embedded-linux-ia32@1.86.0:
    resolution: {integrity: sha512-h0mr9w71TV3BRPk9JHr0flnRCznhkraY14gaj5T+t78vUFByOUMxp4hTr+JpZAR5mv0mIeoMwrQYwWJoqKI0mw==}
    engines: {node: '>=14.0.0'}
    cpu: [ia32]
    os: [linux]
  sass-embedded-linux-musl-arm64@1.86.0:
    resolution: {integrity: sha512-5OZjiJIUyhvKJIGNDEjyRUWDe+W91hq4Bji27sy8gdEuDzPWLx4NzwpKwsBUALUfyW/J5dxgi0ZAQnI3HieyQg==}
    engines: {node: '>=14.0.0'}
    cpu: [arm64]
    os: [linux]
  sass-embedded-linux-musl-arm@1.86.0:
    resolution: {integrity: sha512-KZU70jBMVykC9HzS+o2FhrJaprFLDk3LWXVPtBFxgLlkcQ/apCkUCh2WVNViLhI2U4NrMSnTvd4kDnC/0m8qIw==}
    engines: {node: '>=14.0.0'}
    cpu: [arm]
    os: [linux]
  sass-embedded-linux-musl-ia32@1.86.0:
    resolution: {integrity: sha512-vq9wJ7kaELrsNU6Ld6kvrIHxoIUWaD+5T6TQVj4SJP/iw1NjonyCDMQGGs6UgsIEzvaIwtlSlDbRewAq+4PchA==}
    engines: {node: '>=14.0.0'}
    cpu: [ia32]
    os: [linux]
  sass-embedded-linux-musl-riscv64@1.86.0:
    resolution: {integrity: sha512-UZJPu4zKe3phEzoSVRh5jcSicBBPe+jEbVNALHSSz881iOAYnDQXHITGeQ4mM1/7e/LTyryHk6EPBoaLOv6JrA==}
    engines: {node: '>=14.0.0'}
    cpu: [riscv64]
    os: [linux]
  sass-embedded-linux-musl-x64@1.86.0:
    resolution: {integrity: sha512-8taAgbWMk4QHneJcouWmWZJlmKa2O03g4I/CFo4bfMPL87bibY90pAsSDd+C+t81g0+2aK0/lY/BoB0r3qXLiA==}
    engines: {node: '>=14.0.0'}
    cpu: [x64]
    os: [linux]
  sass-embedded-linux-riscv64@1.86.0:
    resolution: {integrity: sha512-yREY6o2sLwiiA03MWHVpnUliLscz0flEmFW/wzxYZJDqg9eZteB3hUWgZD63eLm2PTZsYxDQpjAHpa48nnIEmA==}
    engines: {node: '>=14.0.0'}
    cpu: [riscv64]
    os: [linux]
  sass-embedded-linux-x64@1.86.0:
    resolution: {integrity: sha512-sH0F8np9PTgTbFcJWxfr1NzPkL5ID2NcpMtZyKPTdnn9NkE/L2UwXSo6xOvY0Duc4Hg+58wSrDnj6KbvdeHCPg==}
    engines: {node: '>=14.0.0'}
    cpu: [x64]
    os: [linux]
  sass-embedded-win32-arm64@1.86.0:
    resolution: {integrity: sha512-4O1XVUxLTIjMOvrziYwEZgvFqC5sF6t0hTAPJ+h2uiAUZg9Joo0PvuEedXurjISgDBsb5W5DTL9hH9q1BbP4cQ==}
    engines: {node: '>=14.0.0'}
    cpu: [arm64]
    os: [win32]
  sass-embedded-win32-ia32@1.86.0:
    resolution: {integrity: sha512-zuSP2axkGm4VaJWt38P464H+4424Swr9bzFNfbbznxe3Ue4RuqSBqwiLiYdg9Q1cecTQ2WGH7G7WO56KK7WLwg==}
    engines: {node: '>=14.0.0'}
    cpu: [ia32]
    os: [win32]
  sass-embedded-win32-x64@1.86.0:
    resolution: {integrity: sha512-GVX0CHtukr3kjqfqretSlPiJzV7V4JxUjpRZV+yC9gUMTiDErilJh2Chw1r0+MYiYvumCDUSDlticmvJs7v0tA==}
    engines: {node: '>=14.0.0'}
    cpu: [x64]
    os: [win32]
  sass-embedded@1.86.0:
    resolution: {integrity: sha512-Ibq5DzxjSf9f/IJmKeHVeXlVqiZWdRJF+RXy6v6UupvMYVMU5Ei+teSFBvvpPD5bB2QhhnU/OJlSM0EBCtfr9g==}
    engines: {node: '>=16.0.0'}
@@ -1923,13 +1678,27 @@
    peerDependencies:
      webpack: ^3.0.0 || ^4.0.0
  sax@1.4.1:
    resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
  schema-utils@1.0.0:
    resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==}
    engines: {node: '>= 4'}
  schema-utils@4.3.2:
    resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==}
    engines: {node: '>= 10.13.0'}
  screenfull@6.0.2:
    resolution: {integrity: sha512-AQdy8s4WhNvUZ6P8F6PB21tSPIYKniic+Ogx0AacBMjKP1GUHN2E9URxQHtCusiwxudnCKkdy4GrHXPPJSkCCw==}
    engines: {node: ^14.13.1 || >=16.0.0}
  scss@0.2.4:
    resolution: {integrity: sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==}
    engines: {node: '>= 0.2.0'}
  sdk-base@2.0.1:
    resolution: {integrity: sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==}
  semver@5.7.2:
    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
@@ -1939,23 +1708,11 @@
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
    hasBin: true
  serialize-javascript@4.0.0:
    resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
  serialize-javascript@1.9.1:
    resolution: {integrity: sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A==}
  set-function-length@1.2.2:
    resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
    engines: {node: '>= 0.4'}
  set-value@2.0.1:
    resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
    engines: {node: '>=0.10.0'}
  setimmediate@1.0.5:
    resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==}
  sha.js@2.4.11:
    resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==}
    hasBin: true
  serialize-javascript@6.0.2:
    resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
  shallow-clone@3.0.1:
    resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
@@ -1993,38 +1750,11 @@
    resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
    engines: {node: '>=18'}
  snapdragon-node@2.1.1:
    resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
    engines: {node: '>=0.10.0'}
  snapdragon-util@3.0.1:
    resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
    engines: {node: '>=0.10.0'}
  snapdragon@0.8.2:
    resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
    engines: {node: '>=0.10.0'}
  source-list-map@2.0.1:
    resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==}
  source-map-js@1.2.1:
    resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
    engines: {node: '>=0.10.0'}
  source-map-resolve@0.5.3:
    resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
    deprecated: See https://github.com/lydell/source-map-resolve#deprecated
  source-map-support@0.5.21:
    resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
  source-map-url@0.4.1:
    resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
    deprecated: See https://github.com/lydell/source-map-url#deprecated
  source-map@0.5.7:
    resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
    engines: {node: '>=0.10.0'}
  source-map@0.6.1:
@@ -2035,34 +1765,28 @@
    resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
    engines: {node: '>=0.10.0'}
  split-string@3.1.0:
    resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
    engines: {node: '>=0.10.0'}
  ssri@6.0.2:
    resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==}
  static-extend@0.1.2:
    resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
    engines: {node: '>=0.10.0'}
  stream-browserify@2.0.2:
    resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==}
  statuses@1.5.0:
    resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
    engines: {node: '>= 0.6'}
  stream-each@1.2.3:
    resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==}
  stream-http@2.8.3:
    resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==}
  stream-http@2.8.2:
    resolution: {integrity: sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==}
  stream-shift@1.0.3:
    resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
  stream-wormhole@1.1.0:
    resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==}
    engines: {node: '>=4.0.0'}
  string_decoder@1.1.1:
    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
  string_decoder@1.3.0:
    resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
  strip-final-newline@4.0.0:
    resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==}
@@ -2084,49 +1808,30 @@
    resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
    engines: {node: '>=16.0.0'}
  tapable@1.1.3:
    resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==}
    engines: {node: '>=6'}
  thenify-all@1.6.0:
    resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
    engines: {node: '>=0.8'}
  terser-webpack-plugin@1.4.6:
    resolution: {integrity: sha512-2lBVf/VMVIddjSn3GqbT90GvIJ/eYXJkt8cTzU7NbjKqK8fwv18Ftr4PlbF46b/e88743iZFL5Dtr/rC4hjIeA==}
    engines: {node: '>= 6.9.0'}
    peerDependencies:
      webpack: ^4.0.0
  thenify@3.3.1:
    resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
  terser@4.8.1:
    resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==}
    engines: {node: '>=6.0.0'}
    hasBin: true
  three-orbit-controls@82.1.0:
    resolution: {integrity: sha512-hIWxGoHqIbeq0S2lA14m9VRzo7SamKKVJ9mKMT/rdh0Qa3nV5Umvhlx4zsHl0Y6jLKVZhjatJfeD/K08Tr/g4A==}
  three@0.141.0:
    resolution: {integrity: sha512-JaSDAPWuk4RTzG5BYRQm8YZbERUxTfTDVouWgHMisS2to4E5fotMS9F2zPFNOIJyEFTTQDDKPpsgZVThKU3pXA==}
  three@0.174.0:
    resolution: {integrity: sha512-p+WG3W6Ov74alh3geCMkGK9NWuT62ee21cV3jEnun201zodVF4tCE5aZa2U122/mkLRmhJJUQmLLW1BH00uQJQ==}
  through2@2.0.5:
    resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
  timers-browserify@2.0.12:
    resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==}
    engines: {node: '>=0.6.0'}
  through@2.3.8:
    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
  to-arraybuffer@1.0.1:
    resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==}
  to-object-path@0.3.0:
    resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
    engines: {node: '>=0.10.0'}
  to-regex-range@2.1.1:
    resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
    engines: {node: '>=0.10.0'}
  to-regex-range@5.0.1:
    resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
    engines: {node: '>=8.0'}
  to-regex@3.0.2:
    resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
    engines: {node: '>=0.10.0'}
  totalist@3.0.1:
    resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
@@ -2138,19 +1843,27 @@
  tslib@2.8.1:
    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
  tty-browserify@0.0.0:
    resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==}
  typedarray@0.0.6:
    resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
  uglify-js@3.19.3:
    resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
    engines: {node: '>=0.8.0'}
    hasBin: true
  uglifyjs-webpack-plugin@2.2.0:
    resolution: {integrity: sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==}
    engines: {node: '>= 6.9.0'}
    peerDependencies:
      webpack: ^4.0.0
  unescape@1.0.1:
    resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==}
    engines: {node: '>=0.10.0'}
  unicorn-magic@0.3.0:
    resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
    engines: {node: '>=18'}
  union-value@1.0.1:
    resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
    engines: {node: '>=0.10.0'}
  unique-filename@1.1.1:
    resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
@@ -2162,14 +1875,6 @@
    resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
    engines: {node: '>= 10.0.0'}
  unset-value@1.0.0:
    resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
    engines: {node: '>=0.10.0'}
  upath@1.2.0:
    resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
    engines: {node: '>=4'}
  update-browserslist-db@1.1.3:
    resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
    hasBin: true
@@ -2179,26 +1884,21 @@
  uri-js@4.4.1:
    resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
  urix@0.1.0:
    resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
    deprecated: Please see https://github.com/lydell/urix#deprecated
  url@0.11.4:
    resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==}
    engines: {node: '>= 0.4'}
  use@3.1.1:
    resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
    engines: {node: '>=0.10.0'}
  urllib@2.44.0:
    resolution: {integrity: sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==}
    engines: {node: '>= 0.10.0'}
    peerDependencies:
      proxy-agent: ^5.0.0
    peerDependenciesMeta:
      proxy-agent:
        optional: true
  util-deprecate@1.0.2:
    resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
  util@0.10.4:
    resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==}
  util@0.11.1:
    resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==}
  utility@1.18.0:
    resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==}
    engines: {node: '>= 0.12.0'}
  varint@6.0.0:
    resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
@@ -2269,9 +1969,6 @@
      yaml:
        optional: true
  vm-browserify@1.1.2:
    resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==}
  vue-3d-model@2.0.0-alpha.4:
    resolution: {integrity: sha512-/dGP7YTAK5e7o8i9592PS9S0mbUStRl26OeeC2Qz4XePrG9BU/Q1GkETqPSMJPWgNa8TkqrxXP9ItYgcmxuSqw==}
    peerDependencies:
@@ -2307,38 +2004,39 @@
      typescript:
        optional: true
  watchpack-chokidar2@2.0.1:
    resolution: {integrity: sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==}
  vuex@4.1.0:
    resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==}
    peerDependencies:
      vue: ^3.2.0
  watchpack@1.7.5:
    resolution: {integrity: sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==}
  wangeditor@4.7.15:
    resolution: {integrity: sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==}
  webpack-sources@1.4.3:
    resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==}
  webpack@4.47.0:
    resolution: {integrity: sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==}
    engines: {node: '>=6.11.5'}
    hasBin: true
    peerDependencies:
      webpack-cli: '*'
      webpack-command: '*'
    peerDependenciesMeta:
      webpack-cli:
        optional: true
      webpack-command:
        optional: true
  which@2.0.2:
    resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
    engines: {node: '>= 8'}
    hasBin: true
  win-release@1.1.1:
    resolution: {integrity: sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==}
    engines: {node: '>=0.10.0'}
  worker-farm@1.7.0:
    resolution: {integrity: sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==}
  wrappy@1.0.2:
    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
  xml2js@0.6.2:
    resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==}
    engines: {node: '>=4.0.0'}
  xmlbuilder@11.0.1:
    resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==}
    engines: {node: '>=4.0'}
  xtend@4.0.2:
    resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
@@ -2532,6 +2230,12 @@
    transitivePeerDependencies:
      - supports-color
  '@babel/runtime-corejs3@7.27.1':
    dependencies:
      core-js-pure: 3.42.0
  '@babel/runtime@7.27.1': {}
  '@babel/template@7.26.9':
    dependencies:
      '@babel/code-frame': 7.26.2
@@ -2638,13 +2342,13 @@
  '@esbuild/win32-x64@0.25.1':
    optional: true
  '@floating-ui/core@1.6.9':
  '@floating-ui/core@1.7.0':
    dependencies:
      '@floating-ui/utils': 0.2.9
  '@floating-ui/dom@1.6.13':
  '@floating-ui/dom@1.7.0':
    dependencies:
      '@floating-ui/core': 1.6.9
      '@floating-ui/core': 1.7.0
      '@floating-ui/utils': 0.2.9
  '@floating-ui/utils@0.2.9': {}
@@ -2743,6 +2447,8 @@
  '@types/estree@1.0.6': {}
  '@types/json-schema@7.0.15': {}
  '@types/lodash-es@4.17.12':
    dependencies:
      '@types/lodash': 4.17.16
@@ -2757,19 +2463,19 @@
  '@types/webxr@0.5.21': {}
  '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)':
  '@vitejs/plugin-vue-jsx@4.1.2(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)':
    dependencies:
      '@babel/core': 7.26.10
      '@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.10)
      '@vue/babel-plugin-jsx': 1.4.0(@babel/core@7.26.10)
      vite: 6.2.2(sass-embedded@1.86.0)
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
      vue: 3.5.13
    transitivePeerDependencies:
      - supports-color
  '@vitejs/plugin-vue@5.2.3(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)':
  '@vitejs/plugin-vue@5.2.3(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)':
    dependencies:
      vite: 6.2.2(sass-embedded@1.86.0)
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
      vue: 3.5.13
  '@vue/babel-helper-vue-transform-on@1.4.0': {}
@@ -2833,14 +2539,14 @@
  '@vue/devtools-api@6.6.4': {}
  '@vue/devtools-core@7.7.2(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)':
  '@vue/devtools-core@7.7.2(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)':
    dependencies:
      '@vue/devtools-kit': 7.7.2
      '@vue/devtools-shared': 7.7.2
      mitt: 3.0.1
      nanoid: 5.1.4
      pathe: 2.0.3
      vite-hot-client: 0.2.4(vite@6.2.2(sass-embedded@1.86.0))
      vite-hot-client: 0.2.4(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))
      vue: 3.5.13
    transitivePeerDependencies:
      - vite
@@ -2902,112 +2608,28 @@
      - '@vue/composition-api'
      - vue
  '@webassemblyjs/ast@1.9.0':
  address@1.2.2: {}
  agentkeepalive@3.5.3:
    dependencies:
      '@webassemblyjs/helper-module-context': 1.9.0
      '@webassemblyjs/helper-wasm-bytecode': 1.9.0
      '@webassemblyjs/wast-parser': 1.9.0
  '@webassemblyjs/floating-point-hex-parser@1.9.0': {}
  '@webassemblyjs/helper-api-error@1.9.0': {}
  '@webassemblyjs/helper-buffer@1.9.0': {}
  '@webassemblyjs/helper-code-frame@1.9.0':
    dependencies:
      '@webassemblyjs/wast-printer': 1.9.0
  '@webassemblyjs/helper-fsm@1.9.0': {}
  '@webassemblyjs/helper-module-context@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
  '@webassemblyjs/helper-wasm-bytecode@1.9.0': {}
  '@webassemblyjs/helper-wasm-section@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-buffer': 1.9.0
      '@webassemblyjs/helper-wasm-bytecode': 1.9.0
      '@webassemblyjs/wasm-gen': 1.9.0
  '@webassemblyjs/ieee754@1.9.0':
    dependencies:
      '@xtuc/ieee754': 1.2.0
  '@webassemblyjs/leb128@1.9.0':
    dependencies:
      '@xtuc/long': 4.2.2
  '@webassemblyjs/utf8@1.9.0': {}
  '@webassemblyjs/wasm-edit@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-buffer': 1.9.0
      '@webassemblyjs/helper-wasm-bytecode': 1.9.0
      '@webassemblyjs/helper-wasm-section': 1.9.0
      '@webassemblyjs/wasm-gen': 1.9.0
      '@webassemblyjs/wasm-opt': 1.9.0
      '@webassemblyjs/wasm-parser': 1.9.0
      '@webassemblyjs/wast-printer': 1.9.0
  '@webassemblyjs/wasm-gen@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-wasm-bytecode': 1.9.0
      '@webassemblyjs/ieee754': 1.9.0
      '@webassemblyjs/leb128': 1.9.0
      '@webassemblyjs/utf8': 1.9.0
  '@webassemblyjs/wasm-opt@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-buffer': 1.9.0
      '@webassemblyjs/wasm-gen': 1.9.0
      '@webassemblyjs/wasm-parser': 1.9.0
  '@webassemblyjs/wasm-parser@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-api-error': 1.9.0
      '@webassemblyjs/helper-wasm-bytecode': 1.9.0
      '@webassemblyjs/ieee754': 1.9.0
      '@webassemblyjs/leb128': 1.9.0
      '@webassemblyjs/utf8': 1.9.0
  '@webassemblyjs/wast-parser@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/floating-point-hex-parser': 1.9.0
      '@webassemblyjs/helper-api-error': 1.9.0
      '@webassemblyjs/helper-code-frame': 1.9.0
      '@webassemblyjs/helper-fsm': 1.9.0
      '@xtuc/long': 4.2.2
  '@webassemblyjs/wast-printer@1.9.0':
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/wast-parser': 1.9.0
      '@xtuc/long': 4.2.2
  '@xtuc/ieee754@1.2.0': {}
  '@xtuc/long@4.2.2': {}
  acorn@6.4.2: {}
  acorn@8.14.1: {}
      humanize-ms: 1.2.1
  ajv-errors@1.0.1(ajv@6.12.6):
    dependencies:
      ajv: 6.12.6
  ajv-formats@2.1.1(ajv@8.17.1):
    optionalDependencies:
      ajv: 8.17.1
  ajv-keywords@3.5.2(ajv@6.12.6):
    dependencies:
      ajv: 6.12.6
  ajv-keywords@5.1.0(ajv@8.17.1):
    dependencies:
      ajv: 8.17.1
      fast-deep-equal: 3.1.3
  ajv@6.12.6:
    dependencies:
@@ -3016,156 +2638,74 @@
      json-schema-traverse: 0.4.1
      uri-js: 4.4.1
  anymatch@2.0.0:
  ajv@8.17.1:
    dependencies:
      micromatch: 3.1.10
      normalize-path: 2.1.1
    transitivePeerDependencies:
      - supports-color
    optional: true
      fast-deep-equal: 3.1.3
      fast-uri: 3.0.6
      json-schema-traverse: 1.0.0
      require-from-string: 2.0.2
  anymatch@3.1.3:
  ali-oss@6.22.0:
    dependencies:
      normalize-path: 3.0.0
      picomatch: 2.3.1
    optional: true
      address: 1.2.2
      agentkeepalive: 3.5.3
      bowser: 1.9.4
      copy-to: 2.0.1
      dateformat: 2.2.0
      debug: 4.4.0
      destroy: 1.2.0
      end-or-error: 1.0.1
      get-ready: 1.0.0
      humanize-ms: 1.2.1
      is-type-of: 1.4.0
      js-base64: 2.6.4
      jstoxml: 2.2.9
      lodash: 4.17.21
      merge-descriptors: 1.0.3
      mime: 2.6.0
      platform: 1.3.6
      pump: 3.0.2
      qs: 6.14.0
      sdk-base: 2.0.1
      stream-http: 2.8.2
      stream-wormhole: 1.1.0
      urllib: 2.44.0
      utility: 1.18.0
      xml2js: 0.6.2
    transitivePeerDependencies:
      - proxy-agent
      - supports-color
  any-promise@1.3.0: {}
  aproba@1.2.0: {}
  arr-diff@4.0.0: {}
  arr-flatten@1.1.0: {}
  arr-union@3.1.0: {}
  array-unique@0.3.2: {}
  asn1.js@4.10.1:
    dependencies:
      bn.js: 4.12.1
      inherits: 2.0.4
      minimalistic-assert: 1.0.1
  assert@1.5.1:
    dependencies:
      object.assign: 4.1.7
      util: 0.10.4
  assign-symbols@1.0.0: {}
  async-each@1.0.6:
    optional: true
  async-validator@4.2.5: {}
  atob@2.1.2: {}
  asynckit@0.4.0: {}
  axios@1.9.0:
    dependencies:
      follow-redirects: 1.15.9
      form-data: 4.0.2
      proxy-from-env: 1.1.0
    transitivePeerDependencies:
      - debug
  balanced-match@1.0.2: {}
  base64-js@1.5.1: {}
  base@0.11.2:
    dependencies:
      cache-base: 1.0.1
      class-utils: 0.3.6
      component-emitter: 1.3.1
      define-property: 1.0.0
      isobject: 3.0.1
      mixin-deep: 1.3.2
      pascalcase: 0.1.1
  big.js@5.2.2: {}
  binary-extensions@1.13.1:
    optional: true
  binary-extensions@2.3.0:
    optional: true
  bindings@1.5.0:
    dependencies:
      file-uri-to-path: 1.0.0
    optional: true
  birpc@0.2.19: {}
  bluebird@3.7.2: {}
  bn.js@4.12.1: {}
  bn.js@5.2.1: {}
  bowser@1.9.4: {}
  brace-expansion@1.1.11:
    dependencies:
      balanced-match: 1.0.2
      concat-map: 0.0.1
  braces@2.3.2:
    dependencies:
      arr-flatten: 1.1.0
      array-unique: 0.3.2
      extend-shallow: 2.0.1
      fill-range: 4.0.0
      isobject: 3.0.1
      repeat-element: 1.1.4
      snapdragon: 0.8.2
      snapdragon-node: 2.1.1
      split-string: 3.1.0
      to-regex: 3.0.2
    transitivePeerDependencies:
      - supports-color
  braces@3.0.3:
    dependencies:
      fill-range: 7.1.1
    optional: true
  brorand@1.1.0: {}
  browserify-aes@1.2.0:
    dependencies:
      buffer-xor: 1.0.3
      cipher-base: 1.0.6
      create-hash: 1.2.0
      evp_bytestokey: 1.0.3
      inherits: 2.0.4
      safe-buffer: 5.2.1
  browserify-cipher@1.0.1:
    dependencies:
      browserify-aes: 1.2.0
      browserify-des: 1.0.2
      evp_bytestokey: 1.0.3
  browserify-des@1.0.2:
    dependencies:
      cipher-base: 1.0.6
      des.js: 1.1.0
      inherits: 2.0.4
      safe-buffer: 5.2.1
  browserify-rsa@4.1.1:
    dependencies:
      bn.js: 5.2.1
      randombytes: 2.1.0
      safe-buffer: 5.2.1
  browserify-sign@4.2.3:
    dependencies:
      bn.js: 5.2.1
      browserify-rsa: 4.1.1
      create-hash: 1.2.0
      create-hmac: 1.1.7
      elliptic: 6.6.1
      hash-base: 3.0.5
      inherits: 2.0.4
      parse-asn1: 5.1.7
      readable-stream: 2.3.8
      safe-buffer: 5.2.1
  browserify-zlib@0.2.0:
    dependencies:
      pako: 1.0.11
  browserslist@4.24.4:
    dependencies:
@@ -3177,14 +2717,6 @@
  buffer-builder@0.2.0: {}
  buffer-from@1.1.2: {}
  buffer-xor@1.0.3: {}
  buffer@4.9.2:
    dependencies:
      base64-js: 1.5.1
      ieee754: 1.2.1
      isarray: 1.0.0
  builtin-status-codes@3.0.0: {}
@@ -3210,29 +2742,10 @@
      unique-filename: 1.1.1
      y18n: 4.0.3
  cache-base@1.0.1:
    dependencies:
      collection-visit: 1.0.0
      component-emitter: 1.3.1
      get-value: 2.0.6
      has-value: 1.0.0
      isobject: 3.0.1
      set-value: 2.0.1
      to-object-path: 0.3.0
      union-value: 1.0.1
      unset-value: 1.0.0
  call-bind-apply-helpers@1.0.2:
    dependencies:
      es-errors: 1.3.0
      function-bind: 1.1.2
  call-bind@1.0.8:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-define-property: 1.0.1
      get-intrinsic: 1.3.0
      set-function-length: 1.2.2
  call-bound@1.0.4:
    dependencies:
@@ -3245,53 +2758,9 @@
    dependencies:
      '@kurkle/color': 0.3.4
  chokidar@2.1.8:
    dependencies:
      anymatch: 2.0.0
      async-each: 1.0.6
      braces: 2.3.2
      glob-parent: 3.1.0
      inherits: 2.0.4
      is-binary-path: 1.0.1
      is-glob: 4.0.3
      normalize-path: 3.0.0
      path-is-absolute: 1.0.1
      readdirp: 2.2.1
      upath: 1.2.0
    optionalDependencies:
      fsevents: 1.2.13
    transitivePeerDependencies:
      - supports-color
    optional: true
  chokidar@3.6.0:
    dependencies:
      anymatch: 3.1.3
      braces: 3.0.3
      glob-parent: 5.1.2
      is-binary-path: 2.1.0
      is-glob: 4.0.3
      normalize-path: 3.0.0
      readdirp: 3.6.0
    optionalDependencies:
      fsevents: 2.3.3
    optional: true
  china-division@2.7.0: {}
  chownr@1.1.4: {}
  chrome-trace-event@1.0.4: {}
  cipher-base@1.0.6:
    dependencies:
      inherits: 2.0.4
      safe-buffer: 5.2.1
  class-utils@0.3.6:
    dependencies:
      arr-union: 3.1.0
      define-property: 0.2.5
      isobject: 3.0.1
      static-extend: 0.1.2
  clone-deep@4.0.1:
    dependencies:
@@ -3299,18 +2768,18 @@
      kind-of: 6.0.3
      shallow-clone: 3.0.1
  collection-visit@1.0.0:
    dependencies:
      map-visit: 1.0.0
      object-visit: 1.0.1
  colorjs.io@0.5.2: {}
  commander@2.20.3: {}
  combined-stream@1.0.8:
    dependencies:
      delayed-stream: 1.0.0
  commondir@1.0.1: {}
  component-emitter@1.3.1: {}
  compression-webpack-plugin@11.1.0:
    dependencies:
      schema-utils: 4.3.2
      serialize-javascript: 6.0.2
  concat-map@0.0.1: {}
@@ -3321,11 +2790,13 @@
      readable-stream: 2.3.8
      typedarray: 0.0.6
  console-browserify@1.2.0: {}
  constants-browserify@1.0.0: {}
  content-type@1.0.5: {}
  convert-source-map@2.0.0: {}
  copy-anything@2.0.6:
    dependencies:
      is-what: 3.14.1
  copy-anything@3.0.5:
    dependencies:
@@ -3340,31 +2811,11 @@
      rimraf: 2.7.1
      run-queue: 1.0.3
  copy-descriptor@0.1.1: {}
  copy-to@2.0.1: {}
  core-js-pure@3.42.0: {}
  core-util-is@1.0.3: {}
  create-ecdh@4.0.4:
    dependencies:
      bn.js: 4.12.1
      elliptic: 6.6.1
  create-hash@1.2.0:
    dependencies:
      cipher-base: 1.0.6
      inherits: 2.0.4
      md5.js: 1.3.5
      ripemd160: 2.0.2
      sha.js: 2.4.11
  create-hmac@1.1.7:
    dependencies:
      cipher-base: 1.0.6
      create-hash: 1.2.0
      inherits: 2.0.4
      ripemd160: 2.0.2
      safe-buffer: 5.2.1
      sha.js: 2.4.11
  cross-spawn@7.0.6:
    dependencies:
@@ -3372,36 +2823,17 @@
      shebang-command: 2.0.0
      which: 2.0.2
  crypto-browserify@3.12.1:
    dependencies:
      browserify-cipher: 1.0.1
      browserify-sign: 4.2.3
      create-ecdh: 4.0.4
      create-hash: 1.2.0
      create-hmac: 1.1.7
      diffie-hellman: 5.0.3
      hash-base: 3.0.5
      inherits: 2.0.4
      pbkdf2: 3.1.2
      public-encrypt: 4.0.3
      randombytes: 2.1.0
      randomfill: 1.0.4
  csstype@3.1.3: {}
  cyclist@1.0.2: {}
  dayjs@1.11.13: {}
  dateformat@2.2.0: {}
  debug@2.6.9:
    dependencies:
      ms: 2.0.0
  dayjs@1.11.13: {}
  debug@4.4.0:
    dependencies:
      ms: 2.1.3
  decode-uri-component@0.2.2: {}
  default-browser-id@5.0.0: {}
@@ -3410,45 +2842,17 @@
      bundle-name: 4.1.0
      default-browser-id: 5.0.0
  define-data-property@1.1.4:
  default-user-agent@1.0.0:
    dependencies:
      es-define-property: 1.0.1
      es-errors: 1.3.0
      gopd: 1.2.0
      os-name: 1.0.3
  define-lazy-prop@3.0.0: {}
  define-properties@1.2.1:
    dependencies:
      define-data-property: 1.1.4
      has-property-descriptors: 1.0.2
      object-keys: 1.1.1
  delayed-stream@1.0.0: {}
  define-property@0.2.5:
    dependencies:
      is-descriptor: 0.1.7
  destroy@1.2.0: {}
  define-property@1.0.0:
    dependencies:
      is-descriptor: 1.0.3
  define-property@2.0.2:
    dependencies:
      is-descriptor: 1.0.3
      isobject: 3.0.1
  des.js@1.1.0:
    dependencies:
      inherits: 2.0.4
      minimalistic-assert: 1.0.1
  diffie-hellman@5.0.3:
    dependencies:
      bn.js: 4.12.1
      miller-rabin: 4.0.1
      randombytes: 2.1.0
  domain-browser@1.2.0: {}
  digest-header@1.1.0: {}
  dunder-proto@1.0.1:
    dependencies:
@@ -3468,13 +2872,19 @@
      tslib: 2.3.0
      zrender: 5.6.1
  ee-first@1.1.1: {}
  electron-to-chromium@1.5.120: {}
  element-plus@2.9.6(vue@3.5.13):
  element-china-area-data@6.1.0:
    dependencies:
      china-division: 2.7.0
  element-plus@2.9.9(vue@3.5.13):
    dependencies:
      '@ctrl/tinycolor': 3.6.1
      '@element-plus/icons-vue': 2.3.1(vue@3.5.13)
      '@floating-ui/dom': 1.6.13
      '@floating-ui/dom': 1.7.0
      '@popperjs/core': '@sxzz/popperjs-es@2.11.7'
      '@types/lodash': 4.17.16
      '@types/lodash-es': 4.17.12
@@ -3491,27 +2901,13 @@
    transitivePeerDependencies:
      - '@vue/composition-api'
  elliptic@6.6.1:
    dependencies:
      bn.js: 4.12.1
      brorand: 1.1.0
      hash.js: 1.1.7
      hmac-drbg: 1.0.1
      inherits: 2.0.4
      minimalistic-assert: 1.0.1
      minimalistic-crypto-utils: 1.0.1
  emojis-list@3.0.0: {}
  end-of-stream@1.4.4:
    dependencies:
      once: 1.4.0
  enhanced-resolve@4.5.0:
    dependencies:
      graceful-fs: 4.2.11
      memory-fs: 0.5.0
      tapable: 1.1.3
  end-or-error@1.0.1: {}
  entities@4.5.0: {}
@@ -3528,6 +2924,13 @@
  es-object-atoms@1.1.1:
    dependencies:
      es-errors: 1.3.0
  es-set-tostringtag@2.1.0:
    dependencies:
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      has-tostringtag: 1.0.2
      hasown: 2.0.2
  esbuild@0.25.1:
    optionalDependencies:
@@ -3561,27 +2964,7 @@
  escape-html@1.0.3: {}
  eslint-scope@4.0.3:
    dependencies:
      esrecurse: 4.3.0
      estraverse: 4.3.0
  esrecurse@4.3.0:
    dependencies:
      estraverse: 5.3.0
  estraverse@4.3.0: {}
  estraverse@5.3.0: {}
  estree-walker@2.0.2: {}
  events@3.3.0: {}
  evp_bytestokey@1.0.3:
    dependencies:
      md5.js: 1.3.5
      safe-buffer: 5.2.1
  execa@9.5.2:
    dependencies:
@@ -3598,64 +2981,21 @@
      strip-final-newline: 4.0.0
      yoctocolors: 2.1.1
  expand-brackets@2.1.4:
    dependencies:
      debug: 2.6.9
      define-property: 0.2.5
      extend-shallow: 2.0.1
      posix-character-classes: 0.1.1
      regex-not: 1.0.2
      snapdragon: 0.8.2
      to-regex: 3.0.2
    transitivePeerDependencies:
      - supports-color
  extend-shallow@2.0.1:
    dependencies:
      is-extendable: 0.1.1
  extend-shallow@3.0.2:
    dependencies:
      assign-symbols: 1.0.0
      is-extendable: 1.0.1
  extglob@2.0.4:
    dependencies:
      array-unique: 0.3.2
      define-property: 1.0.0
      expand-brackets: 2.1.4
      extend-shallow: 2.0.1
      fragment-cache: 0.2.1
      regex-not: 1.0.2
      snapdragon: 0.8.2
      to-regex: 3.0.2
    transitivePeerDependencies:
      - supports-color
  fast-deep-equal@3.1.3: {}
  fast-json-stable-stringify@2.1.0: {}
  fast-uri@3.0.6: {}
  figgy-pudding@3.5.2: {}
  figures@6.1.0:
    dependencies:
      is-unicode-supported: 2.1.0
  file-uri-to-path@1.0.0:
    optional: true
  fill-range@4.0.0:
    dependencies:
      extend-shallow: 2.0.1
      is-number: 3.0.0
      repeat-string: 1.6.1
      to-regex-range: 2.1.1
  fill-range@7.1.1:
    dependencies:
      to-regex-range: 5.0.1
    optional: true
  find-cache-dir@2.1.0:
    dependencies:
@@ -3672,11 +3012,21 @@
      inherits: 2.0.4
      readable-stream: 2.3.8
  for-in@1.0.2: {}
  follow-redirects@1.15.9: {}
  fragment-cache@0.2.1:
  form-data@4.0.2:
    dependencies:
      map-cache: 0.2.2
      asynckit: 0.4.0
      combined-stream: 1.0.8
      es-set-tostringtag: 2.1.0
      mime-types: 2.1.35
  formstream@1.5.1:
    dependencies:
      destroy: 1.2.0
      mime: 2.6.0
      node-hex: 1.0.1
      pause-stream: 0.0.11
  from2@2.3.0:
    dependencies:
@@ -3697,12 +3047,6 @@
      readable-stream: 2.3.8
  fs.realpath@1.0.0: {}
  fsevents@1.2.13:
    dependencies:
      bindings: 1.5.0
      nan: 2.22.2
    optional: true
  fsevents@2.3.3:
    optional: true
@@ -3729,23 +3073,12 @@
      dunder-proto: 1.0.1
      es-object-atoms: 1.1.1
  get-ready@1.0.0: {}
  get-stream@9.0.1:
    dependencies:
      '@sec-ant/readable-stream': 0.4.1
      is-stream: 4.0.1
  get-value@2.0.6: {}
  glob-parent@3.1.0:
    dependencies:
      is-glob: 3.1.0
      path-dirname: 1.0.2
    optional: true
  glob-parent@5.1.2:
    dependencies:
      is-glob: 4.0.3
    optional: true
  glob@7.2.3:
    dependencies:
@@ -3764,60 +3097,32 @@
  has-flag@4.0.0: {}
  has-property-descriptors@1.0.2:
    dependencies:
      es-define-property: 1.0.1
  has-symbols@1.1.0: {}
  has-value@0.3.1:
  has-tostringtag@1.0.2:
    dependencies:
      get-value: 2.0.6
      has-values: 0.1.4
      isobject: 2.1.0
  has-value@1.0.0:
    dependencies:
      get-value: 2.0.6
      has-values: 1.0.0
      isobject: 3.0.1
  has-values@0.1.4: {}
  has-values@1.0.0:
    dependencies:
      is-number: 3.0.0
      kind-of: 4.0.0
  hash-base@3.0.5:
    dependencies:
      inherits: 2.0.4
      safe-buffer: 5.2.1
  hash.js@1.1.7:
    dependencies:
      inherits: 2.0.4
      minimalistic-assert: 1.0.1
      has-symbols: 1.1.0
  hasown@2.0.2:
    dependencies:
      function-bind: 1.1.2
  hmac-drbg@1.0.1:
    dependencies:
      hash.js: 1.1.7
      minimalistic-assert: 1.0.1
      minimalistic-crypto-utils: 1.0.1
  hookable@5.5.3: {}
  https-browserify@1.0.0: {}
  human-signals@8.0.0: {}
  ieee754@1.2.1: {}
  humanize-ms@1.2.1:
    dependencies:
      ms: 2.1.3
  iconv-lite@0.6.3:
    dependencies:
      safer-buffer: 2.1.2
  iferr@0.1.5: {}
  image-size@0.5.5:
    optional: true
  immutable@5.0.3: {}
@@ -3830,71 +3135,17 @@
      once: 1.4.0
      wrappy: 1.0.2
  inherits@2.0.3: {}
  inherits@2.0.4: {}
  is-accessor-descriptor@1.0.1:
    dependencies:
      hasown: 2.0.2
  is-binary-path@1.0.1:
    dependencies:
      binary-extensions: 1.13.1
    optional: true
  is-binary-path@2.1.0:
    dependencies:
      binary-extensions: 2.3.0
    optional: true
  is-buffer@1.1.6: {}
  is-data-descriptor@1.0.1:
    dependencies:
      hasown: 2.0.2
  is-descriptor@0.1.7:
    dependencies:
      is-accessor-descriptor: 1.0.1
      is-data-descriptor: 1.0.1
  is-descriptor@1.0.3:
    dependencies:
      is-accessor-descriptor: 1.0.1
      is-data-descriptor: 1.0.1
  is-class-hotfix@0.0.6: {}
  is-docker@3.0.0: {}
  is-extendable@0.1.1: {}
  is-extendable@1.0.1:
    dependencies:
      is-plain-object: 2.0.4
  is-extglob@2.1.1:
    optional: true
  is-glob@3.1.0:
    dependencies:
      is-extglob: 2.1.1
    optional: true
  is-glob@4.0.3:
    dependencies:
      is-extglob: 2.1.1
    optional: true
  is-inside-container@1.0.0:
    dependencies:
      is-docker: 3.0.0
  is-number@3.0.0:
    dependencies:
      kind-of: 3.2.2
  is-number@7.0.0:
    optional: true
  is-plain-obj@4.1.0: {}
@@ -3904,11 +3155,17 @@
  is-stream@4.0.1: {}
  is-type-of@1.4.0:
    dependencies:
      core-util-is: 1.0.3
      is-class-hotfix: 0.0.6
      isstream: 0.1.2
  is-unicode-supported@2.1.0: {}
  is-what@4.1.16: {}
  is-what@3.14.1: {}
  is-windows@1.0.2: {}
  is-what@4.1.16: {}
  is-wsl@1.1.0: {}
@@ -3920,19 +3177,19 @@
  isexe@2.0.0: {}
  isobject@2.1.0:
    dependencies:
      isarray: 1.0.0
  isobject@3.0.1: {}
  isstream@0.1.2: {}
  js-base64@2.6.4: {}
  js-tokens@4.0.0: {}
  jsesc@3.1.0: {}
  json-parse-better-errors@1.0.2: {}
  json-schema-traverse@0.4.1: {}
  json-schema-traverse@1.0.0: {}
  json5@1.0.2:
    dependencies:
@@ -3946,19 +3203,25 @@
    optionalDependencies:
      graceful-fs: 4.2.11
  kind-of@3.2.2:
    dependencies:
      is-buffer: 1.1.6
  kind-of@4.0.0:
    dependencies:
      is-buffer: 1.1.6
  jstoxml@2.2.9: {}
  kind-of@6.0.3: {}
  kolorist@1.8.0: {}
  loader-runner@2.4.0: {}
  less@4.3.0:
    dependencies:
      copy-anything: 2.0.6
      parse-node-version: 1.0.1
      tslib: 2.8.1
    optionalDependencies:
      errno: 0.1.8
      graceful-fs: 4.2.11
      image-size: 0.5.5
      make-dir: 2.1.0
      mime: 1.6.0
      needle: 3.3.1
      source-map: 0.6.1
  loader-utils@1.4.2:
    dependencies:
@@ -3994,58 +3257,22 @@
      pify: 4.0.1
      semver: 5.7.2
  map-cache@0.2.2: {}
  map-visit@1.0.0:
    dependencies:
      object-visit: 1.0.1
  math-intrinsics@1.1.0: {}
  md5.js@1.3.5:
    dependencies:
      hash-base: 3.0.5
      inherits: 2.0.4
      safe-buffer: 5.2.1
  memoize-one@6.0.0: {}
  memory-fs@0.4.1:
  merge-descriptors@1.0.3: {}
  mime-db@1.52.0: {}
  mime-types@2.1.35:
    dependencies:
      errno: 0.1.8
      readable-stream: 2.3.8
      mime-db: 1.52.0
  memory-fs@0.5.0:
    dependencies:
      errno: 0.1.8
      readable-stream: 2.3.8
  mime@1.6.0:
    optional: true
  micromatch@3.1.10:
    dependencies:
      arr-diff: 4.0.0
      array-unique: 0.3.2
      braces: 2.3.2
      define-property: 2.0.2
      extend-shallow: 3.0.2
      extglob: 2.0.4
      fragment-cache: 0.2.1
      kind-of: 6.0.3
      nanomatch: 1.2.13
      object.pick: 1.3.0
      regex-not: 1.0.2
      snapdragon: 0.8.2
      to-regex: 3.0.2
    transitivePeerDependencies:
      - supports-color
  miller-rabin@4.0.1:
    dependencies:
      bn.js: 4.12.1
      brorand: 1.1.0
  minimalistic-assert@1.0.1: {}
  minimalistic-crypto-utils@1.0.1: {}
  mime@2.6.0: {}
  minimatch@3.1.2:
    dependencies:
@@ -4068,11 +3295,6 @@
  mitt@3.0.1: {}
  mixin-deep@1.3.2:
    dependencies:
      for-in: 1.0.2
      is-extendable: 1.0.1
  mkdirp@0.5.6:
    dependencies:
      minimist: 1.2.8
@@ -4088,70 +3310,29 @@
  mrmime@2.0.1: {}
  ms@2.0.0: {}
  ms@2.1.3: {}
  nan@2.22.2:
    optional: true
  mz@2.7.0:
    dependencies:
      any-promise: 1.3.0
      object-assign: 4.1.1
      thenify-all: 1.6.0
  nanoid@3.3.10: {}
  nanoid@5.1.4: {}
  nanomatch@1.2.13:
  needle@3.3.1:
    dependencies:
      arr-diff: 4.0.0
      array-unique: 0.3.2
      define-property: 2.0.2
      extend-shallow: 3.0.2
      fragment-cache: 0.2.1
      is-windows: 1.0.2
      kind-of: 6.0.3
      object.pick: 1.3.0
      regex-not: 1.0.2
      snapdragon: 0.8.2
      to-regex: 3.0.2
    transitivePeerDependencies:
      - supports-color
      iconv-lite: 0.6.3
      sax: 1.4.1
    optional: true
  neo-async@2.6.2: {}
  node-libs-browser@2.2.1:
    dependencies:
      assert: 1.5.1
      browserify-zlib: 0.2.0
      buffer: 4.9.2
      console-browserify: 1.2.0
      constants-browserify: 1.0.0
      crypto-browserify: 3.12.1
      domain-browser: 1.2.0
      events: 3.3.0
      https-browserify: 1.0.0
      os-browserify: 0.3.0
      path-browserify: 0.0.1
      process: 0.11.10
      punycode: 1.4.1
      querystring-es3: 0.2.1
      readable-stream: 2.3.8
      stream-browserify: 2.0.2
      stream-http: 2.8.3
      string_decoder: 1.3.0
      timers-browserify: 2.0.12
      tty-browserify: 0.0.0
      url: 0.11.4
      util: 0.11.1
      vm-browserify: 1.1.2
  node-hex@1.0.1: {}
  node-releases@2.0.19: {}
  normalize-path@2.1.1:
    dependencies:
      remove-trailing-separator: 1.1.0
    optional: true
  normalize-path@3.0.0:
    optional: true
  normalize-wheel-es@1.2.0: {}
@@ -4160,32 +3341,9 @@
      path-key: 4.0.0
      unicorn-magic: 0.3.0
  object-copy@0.1.0:
    dependencies:
      copy-descriptor: 0.1.1
      define-property: 0.2.5
      kind-of: 3.2.2
  object-assign@4.1.1: {}
  object-inspect@1.13.4: {}
  object-keys@1.1.1: {}
  object-visit@1.0.1:
    dependencies:
      isobject: 3.0.1
  object.assign@4.1.7:
    dependencies:
      call-bind: 1.0.8
      call-bound: 1.0.4
      define-properties: 1.2.1
      es-object-atoms: 1.1.1
      has-symbols: 1.1.0
      object-keys: 1.1.1
  object.pick@1.3.0:
    dependencies:
      isobject: 3.0.1
  ometa@0.2.2: {}
@@ -4200,7 +3358,14 @@
      is-inside-container: 1.0.0
      is-wsl: 3.1.0
  os-browserify@0.3.0: {}
  os-name@1.0.3:
    dependencies:
      osx-release: 1.1.0
      win-release: 1.1.1
  osx-release@1.1.0:
    dependencies:
      minimist: 1.2.8
  p-limit@2.3.0:
    dependencies:
@@ -4212,31 +3377,15 @@
  p-try@2.2.0: {}
  pako@1.0.11: {}
  parallel-transform@1.2.0:
    dependencies:
      cyclist: 1.0.2
      inherits: 2.0.4
      readable-stream: 2.3.8
  parse-asn1@5.1.7:
    dependencies:
      asn1.js: 4.10.1
      browserify-aes: 1.2.0
      evp_bytestokey: 1.0.3
      hash-base: 3.0.5
      pbkdf2: 3.1.2
      safe-buffer: 5.2.1
  parse-ms@4.0.0: {}
  pascalcase@0.1.1: {}
  path-browserify@0.0.1: {}
  path-dirname@1.0.2:
    optional: true
  parse-node-version@1.0.1: {}
  path-exists@3.0.0: {}
@@ -4248,20 +3397,13 @@
  pathe@2.0.3: {}
  pbkdf2@3.1.2:
  pause-stream@0.0.11:
    dependencies:
      create-hash: 1.2.0
      create-hmac: 1.1.7
      ripemd160: 2.0.2
      safe-buffer: 5.2.1
      sha.js: 2.4.11
      through: 2.3.8
  perfect-debounce@1.0.0: {}
  picocolors@1.1.1: {}
  picomatch@2.3.1:
    optional: true
  picomatch@4.0.2: {}
@@ -4279,7 +3421,7 @@
    dependencies:
      find-up: 3.0.0
  posix-character-classes@0.1.1: {}
  platform@1.3.6: {}
  postcss@8.5.3:
    dependencies:
@@ -4293,22 +3435,13 @@
  process-nextick-args@2.0.1: {}
  process@0.11.10: {}
  promise-inflight@1.0.1(bluebird@3.7.2):
    optionalDependencies:
      bluebird: 3.7.2
  prr@1.0.1: {}
  proxy-from-env@1.1.0: {}
  public-encrypt@4.0.3:
    dependencies:
      bn.js: 4.12.1
      browserify-rsa: 4.1.1
      create-hash: 1.2.0
      parse-asn1: 5.1.7
      randombytes: 2.1.0
      safe-buffer: 5.2.1
  prr@1.0.1: {}
  pump@2.0.1:
    dependencies:
@@ -4326,23 +3459,14 @@
      inherits: 2.0.4
      pump: 2.0.1
  punycode@1.4.1: {}
  punycode@2.3.1: {}
  qs@6.14.0:
    dependencies:
      side-channel: 1.1.0
  querystring-es3@0.2.1: {}
  randombytes@2.1.0:
    dependencies:
      safe-buffer: 5.2.1
  randomfill@1.0.4:
    dependencies:
      randombytes: 2.1.0
      safe-buffer: 5.2.1
  readable-stream@2.3.8:
@@ -4355,46 +3479,13 @@
      string_decoder: 1.1.1
      util-deprecate: 1.0.2
  readdirp@2.2.1:
    dependencies:
      graceful-fs: 4.2.11
      micromatch: 3.1.10
      readable-stream: 2.3.8
    transitivePeerDependencies:
      - supports-color
    optional: true
  readdirp@3.6.0:
    dependencies:
      picomatch: 2.3.1
    optional: true
  regex-not@1.0.2:
    dependencies:
      extend-shallow: 3.0.2
      safe-regex: 1.1.0
  remove-trailing-separator@1.1.0:
    optional: true
  repeat-element@1.1.4: {}
  repeat-string@1.6.1: {}
  resolve-url@0.2.1: {}
  ret@0.1.15: {}
  require-from-string@2.0.2: {}
  rfdc@1.4.1: {}
  rimraf@2.7.1:
    dependencies:
      glob: 7.2.3
  ripemd160@2.0.2:
    dependencies:
      hash-base: 3.0.5
      inherits: 2.0.4
  rollup@4.36.0:
    dependencies:
@@ -4435,14 +3526,66 @@
  safe-buffer@5.2.1: {}
  safe-regex@1.1.0:
    dependencies:
      ret: 0.1.15
  safer-buffer@2.1.2: {}
  sass-embedded-android-arm64@1.86.0:
    optional: true
  sass-embedded-android-arm@1.86.0:
    optional: true
  sass-embedded-android-ia32@1.86.0:
    optional: true
  sass-embedded-android-riscv64@1.86.0:
    optional: true
  sass-embedded-android-x64@1.86.0:
    optional: true
  sass-embedded-darwin-arm64@1.86.0:
    optional: true
  sass-embedded-darwin-x64@1.86.0:
    optional: true
  sass-embedded-linux-arm64@1.86.0:
    optional: true
  sass-embedded-linux-arm@1.86.0:
    optional: true
  sass-embedded-linux-ia32@1.86.0:
    optional: true
  sass-embedded-linux-musl-arm64@1.86.0:
    optional: true
  sass-embedded-linux-musl-arm@1.86.0:
    optional: true
  sass-embedded-linux-musl-ia32@1.86.0:
    optional: true
  sass-embedded-linux-musl-riscv64@1.86.0:
    optional: true
  sass-embedded-linux-musl-x64@1.86.0:
    optional: true
  sass-embedded-linux-riscv64@1.86.0:
    optional: true
  sass-embedded-linux-x64@1.86.0:
    optional: true
  sass-embedded-win32-arm64@1.86.0:
    optional: true
  sass-embedded-win32-ia32@1.86.0:
    optional: true
  sass-embedded-win32-x64@1.86.0:
    optional: true
  sass-embedded@1.86.0:
@@ -4456,17 +3599,36 @@
      sync-child-process: 1.0.2
      varint: 6.0.0
    optionalDependencies:
      sass-embedded-android-arm: 1.86.0
      sass-embedded-android-arm64: 1.86.0
      sass-embedded-android-ia32: 1.86.0
      sass-embedded-android-riscv64: 1.86.0
      sass-embedded-android-x64: 1.86.0
      sass-embedded-darwin-arm64: 1.86.0
      sass-embedded-darwin-x64: 1.86.0
      sass-embedded-linux-arm: 1.86.0
      sass-embedded-linux-arm64: 1.86.0
      sass-embedded-linux-ia32: 1.86.0
      sass-embedded-linux-musl-arm: 1.86.0
      sass-embedded-linux-musl-arm64: 1.86.0
      sass-embedded-linux-musl-ia32: 1.86.0
      sass-embedded-linux-musl-riscv64: 1.86.0
      sass-embedded-linux-musl-x64: 1.86.0
      sass-embedded-linux-riscv64: 1.86.0
      sass-embedded-linux-x64: 1.86.0
      sass-embedded-win32-arm64: 1.86.0
      sass-embedded-win32-ia32: 1.86.0
      sass-embedded-win32-x64: 1.86.0
  sass-loader@7.3.1(webpack@4.47.0):
  sass-loader@7.3.1:
    dependencies:
      clone-deep: 4.0.1
      loader-utils: 1.4.2
      neo-async: 2.6.2
      pify: 4.0.1
      semver: 6.3.1
      webpack: 4.47.0
  sax@1.4.1: {}
  schema-utils@1.0.0:
    dependencies:
@@ -4474,40 +3636,32 @@
      ajv-errors: 1.0.1(ajv@6.12.6)
      ajv-keywords: 3.5.2(ajv@6.12.6)
  schema-utils@4.3.2:
    dependencies:
      '@types/json-schema': 7.0.15
      ajv: 8.17.1
      ajv-formats: 2.1.1(ajv@8.17.1)
      ajv-keywords: 5.1.0(ajv@8.17.1)
  screenfull@6.0.2: {}
  scss@0.2.4:
    dependencies:
      ometa: 0.2.2
  sdk-base@2.0.1:
    dependencies:
      get-ready: 1.0.0
  semver@5.7.2: {}
  semver@6.3.1: {}
  serialize-javascript@4.0.0:
  serialize-javascript@1.9.1: {}
  serialize-javascript@6.0.2:
    dependencies:
      randombytes: 2.1.0
  set-function-length@1.2.2:
    dependencies:
      define-data-property: 1.1.4
      es-errors: 1.3.0
      function-bind: 1.1.2
      get-intrinsic: 1.3.0
      gopd: 1.2.0
      has-property-descriptors: 1.0.2
  set-value@2.0.1:
    dependencies:
      extend-shallow: 2.0.1
      is-extendable: 0.1.1
      is-plain-object: 2.0.4
      split-string: 3.1.0
  setimmediate@1.0.5: {}
  sha.js@2.4.11:
    dependencies:
      inherits: 2.0.4
      safe-buffer: 5.2.1
  shallow-clone@3.0.1:
    dependencies:
@@ -4555,78 +3709,26 @@
      mrmime: 2.0.1
      totalist: 3.0.1
  snapdragon-node@2.1.1:
    dependencies:
      define-property: 1.0.0
      isobject: 3.0.1
      snapdragon-util: 3.0.1
  snapdragon-util@3.0.1:
    dependencies:
      kind-of: 3.2.2
  snapdragon@0.8.2:
    dependencies:
      base: 0.11.2
      debug: 2.6.9
      define-property: 0.2.5
      extend-shallow: 2.0.1
      map-cache: 0.2.2
      source-map: 0.5.7
      source-map-resolve: 0.5.3
      use: 3.1.1
    transitivePeerDependencies:
      - supports-color
  source-list-map@2.0.1: {}
  source-map-js@1.2.1: {}
  source-map-resolve@0.5.3:
    dependencies:
      atob: 2.1.2
      decode-uri-component: 0.2.2
      resolve-url: 0.2.1
      source-map-url: 0.4.1
      urix: 0.1.0
  source-map-support@0.5.21:
    dependencies:
      buffer-from: 1.1.2
      source-map: 0.6.1
  source-map-url@0.4.1: {}
  source-map@0.5.7: {}
  source-map@0.6.1: {}
  speakingurl@14.0.1: {}
  split-string@3.1.0:
    dependencies:
      extend-shallow: 3.0.2
  ssri@6.0.2:
    dependencies:
      figgy-pudding: 3.5.2
  static-extend@0.1.2:
    dependencies:
      define-property: 0.2.5
      object-copy: 0.1.0
  stream-browserify@2.0.2:
    dependencies:
      inherits: 2.0.4
      readable-stream: 2.3.8
  statuses@1.5.0: {}
  stream-each@1.2.3:
    dependencies:
      end-of-stream: 1.4.4
      stream-shift: 1.0.3
  stream-http@2.8.3:
  stream-http@2.8.2:
    dependencies:
      builtin-status-codes: 3.0.0
      inherits: 2.0.4
@@ -4636,13 +3738,11 @@
  stream-shift@1.0.3: {}
  stream-wormhole@1.1.0: {}
  string_decoder@1.1.1:
    dependencies:
      safe-buffer: 5.1.2
  string_decoder@1.3.0:
    dependencies:
      safe-buffer: 5.2.1
  strip-final-newline@4.0.0: {}
@@ -4660,61 +3760,28 @@
  sync-message-port@1.1.3: {}
  tapable@1.1.3: {}
  terser-webpack-plugin@1.4.6(webpack@4.47.0):
  thenify-all@1.6.0:
    dependencies:
      cacache: 12.0.4
      find-cache-dir: 2.1.0
      is-wsl: 1.1.0
      schema-utils: 1.0.0
      serialize-javascript: 4.0.0
      source-map: 0.6.1
      terser: 4.8.1
      webpack: 4.47.0
      webpack-sources: 1.4.3
      worker-farm: 1.7.0
      thenify: 3.3.1
  terser@4.8.1:
  thenify@3.3.1:
    dependencies:
      acorn: 8.14.1
      commander: 2.20.3
      source-map: 0.6.1
      source-map-support: 0.5.21
      any-promise: 1.3.0
  three-orbit-controls@82.1.0: {}
  three@0.141.0: {}
  three@0.174.0: {}
  through2@2.0.5:
    dependencies:
      readable-stream: 2.3.8
      xtend: 4.0.2
  timers-browserify@2.0.12:
    dependencies:
      setimmediate: 1.0.5
  through@2.3.8: {}
  to-arraybuffer@1.0.1: {}
  to-object-path@0.3.0:
    dependencies:
      kind-of: 3.2.2
  to-regex-range@2.1.1:
    dependencies:
      is-number: 3.0.0
      repeat-string: 1.6.1
  to-regex-range@5.0.1:
    dependencies:
      is-number: 7.0.0
    optional: true
  to-regex@3.0.2:
    dependencies:
      define-property: 2.0.2
      extend-shallow: 3.0.2
      regex-not: 1.0.2
      safe-regex: 1.1.0
  totalist@3.0.1: {}
@@ -4722,18 +3789,27 @@
  tslib@2.8.1: {}
  tty-browserify@0.0.0: {}
  typedarray@0.0.6: {}
  unicorn-magic@0.3.0: {}
  uglify-js@3.19.3: {}
  union-value@1.0.1:
  uglifyjs-webpack-plugin@2.2.0:
    dependencies:
      arr-union: 3.1.0
      get-value: 2.0.6
      is-extendable: 0.1.1
      set-value: 2.0.1
      cacache: 12.0.4
      find-cache-dir: 2.1.0
      is-wsl: 1.1.0
      schema-utils: 1.0.0
      serialize-javascript: 1.9.1
      source-map: 0.6.1
      uglify-js: 3.19.3
      webpack-sources: 1.4.3
      worker-farm: 1.7.0
  unescape@1.0.1:
    dependencies:
      extend-shallow: 2.0.1
  unicorn-magic@0.3.0: {}
  unique-filename@1.1.1:
    dependencies:
@@ -4745,14 +3821,6 @@
  universalify@2.0.1: {}
  unset-value@1.0.0:
    dependencies:
      has-value: 0.3.1
      isobject: 3.0.1
  upath@1.2.0:
    optional: true
  update-browserslist-db@1.1.3(browserslist@4.24.4):
    dependencies:
      browserslist: 4.24.4
@@ -4763,32 +3831,38 @@
    dependencies:
      punycode: 2.3.1
  urix@0.1.0: {}
  url@0.11.4:
  urllib@2.44.0:
    dependencies:
      punycode: 1.4.1
      any-promise: 1.3.0
      content-type: 1.0.5
      default-user-agent: 1.0.0
      digest-header: 1.1.0
      ee-first: 1.1.1
      formstream: 1.5.1
      humanize-ms: 1.2.1
      iconv-lite: 0.6.3
      pump: 3.0.2
      qs: 6.14.0
  use@3.1.1: {}
      statuses: 1.5.0
      utility: 1.18.0
  util-deprecate@1.0.2: {}
  util@0.10.4:
  utility@1.18.0:
    dependencies:
      inherits: 2.0.3
  util@0.11.1:
    dependencies:
      inherits: 2.0.3
      copy-to: 2.0.1
      escape-html: 1.0.3
      mkdirp: 0.5.6
      mz: 2.7.0
      unescape: 1.0.1
  varint@6.0.0: {}
  vite-hot-client@0.2.4(vite@6.2.2(sass-embedded@1.86.0)):
  vite-hot-client@0.2.4(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0)):
    dependencies:
      vite: 6.2.2(sass-embedded@1.86.0)
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
  vite-plugin-inspect@0.8.9(rollup@4.36.0)(vite@6.2.2(sass-embedded@1.86.0)):
  vite-plugin-inspect@0.8.9(rollup@4.36.0)(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0)):
    dependencies:
      '@antfu/utils': 0.7.10
      '@rollup/pluginutils': 5.1.4(rollup@4.36.0)
@@ -4799,28 +3873,28 @@
      perfect-debounce: 1.0.0
      picocolors: 1.1.1
      sirv: 3.0.1
      vite: 6.2.2(sass-embedded@1.86.0)
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
    transitivePeerDependencies:
      - rollup
      - supports-color
  vite-plugin-vue-devtools@7.7.2(rollup@4.36.0)(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13):
  vite-plugin-vue-devtools@7.7.2(rollup@4.36.0)(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13):
    dependencies:
      '@vue/devtools-core': 7.7.2(vite@6.2.2(sass-embedded@1.86.0))(vue@3.5.13)
      '@vue/devtools-core': 7.7.2(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))(vue@3.5.13)
      '@vue/devtools-kit': 7.7.2
      '@vue/devtools-shared': 7.7.2
      execa: 9.5.2
      sirv: 3.0.1
      vite: 6.2.2(sass-embedded@1.86.0)
      vite-plugin-inspect: 0.8.9(rollup@4.36.0)(vite@6.2.2(sass-embedded@1.86.0))
      vite-plugin-vue-inspector: 5.3.1(vite@6.2.2(sass-embedded@1.86.0))
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
      vite-plugin-inspect: 0.8.9(rollup@4.36.0)(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))
      vite-plugin-vue-inspector: 5.3.1(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0))
    transitivePeerDependencies:
      - '@nuxt/kit'
      - rollup
      - supports-color
      - vue
  vite-plugin-vue-inspector@5.3.1(vite@6.2.2(sass-embedded@1.86.0)):
  vite-plugin-vue-inspector@5.3.1(vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0)):
    dependencies:
      '@babel/core': 7.26.10
      '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.10)
@@ -4831,20 +3905,19 @@
      '@vue/compiler-dom': 3.5.13
      kolorist: 1.8.0
      magic-string: 0.30.17
      vite: 6.2.2(sass-embedded@1.86.0)
      vite: 6.2.2(less@4.3.0)(sass-embedded@1.86.0)
    transitivePeerDependencies:
      - supports-color
  vite@6.2.2(sass-embedded@1.86.0):
  vite@6.2.2(less@4.3.0)(sass-embedded@1.86.0):
    dependencies:
      esbuild: 0.25.1
      postcss: 8.5.3
      rollup: 4.36.0
    optionalDependencies:
      fsevents: 2.3.3
      less: 4.3.0
      sass-embedded: 1.86.0
  vm-browserify@1.1.2: {}
  vue-3d-model@2.0.0-alpha.4(vue@3.5.13):
    dependencies:
@@ -4874,59 +3947,29 @@
      '@vue/server-renderer': 3.5.13(vue@3.5.13)
      '@vue/shared': 3.5.13
  watchpack-chokidar2@2.0.1:
  vuex@4.1.0(vue@3.5.13):
    dependencies:
      chokidar: 2.1.8
    transitivePeerDependencies:
      - supports-color
    optional: true
      '@vue/devtools-api': 6.6.4
      vue: 3.5.13
  watchpack@1.7.5:
  wangeditor@4.7.15:
    dependencies:
      graceful-fs: 4.2.11
      neo-async: 2.6.2
    optionalDependencies:
      chokidar: 3.6.0
      watchpack-chokidar2: 2.0.1
    transitivePeerDependencies:
      - supports-color
      '@babel/runtime': 7.27.1
      '@babel/runtime-corejs3': 7.27.1
      tslib: 2.8.1
  webpack-sources@1.4.3:
    dependencies:
      source-list-map: 2.0.1
      source-map: 0.6.1
  webpack@4.47.0:
    dependencies:
      '@webassemblyjs/ast': 1.9.0
      '@webassemblyjs/helper-module-context': 1.9.0
      '@webassemblyjs/wasm-edit': 1.9.0
      '@webassemblyjs/wasm-parser': 1.9.0
      acorn: 6.4.2
      ajv: 6.12.6
      ajv-keywords: 3.5.2(ajv@6.12.6)
      chrome-trace-event: 1.0.4
      enhanced-resolve: 4.5.0
      eslint-scope: 4.0.3
      json-parse-better-errors: 1.0.2
      loader-runner: 2.4.0
      loader-utils: 1.4.2
      memory-fs: 0.4.1
      micromatch: 3.1.10
      mkdirp: 0.5.6
      neo-async: 2.6.2
      node-libs-browser: 2.2.1
      schema-utils: 1.0.0
      tapable: 1.1.3
      terser-webpack-plugin: 1.4.6(webpack@4.47.0)
      watchpack: 1.7.5
      webpack-sources: 1.4.3
    transitivePeerDependencies:
      - supports-color
  which@2.0.2:
    dependencies:
      isexe: 2.0.0
  win-release@1.1.1:
    dependencies:
      semver: 5.7.2
  worker-farm@1.7.0:
    dependencies:
@@ -4934,6 +3977,13 @@
  wrappy@1.0.2: {}
  xml2js@0.6.2:
    dependencies:
      sax: 1.4.1
      xmlbuilder: 11.0.1
  xmlbuilder@11.0.1: {}
  xtend@4.0.2: {}
  y18n@4.0.3: {}
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/api/newapi/AlarmReset.js
@@ -1,4 +1,4 @@
import http from "../http";
//登录记录
export const BecomeTrue = (data) => http.post(`/api/AlarmResetHsy/BecomeTrue`);
export const BecomeTrue = (data) => http.post(`/api/AlarmResetHsy/BecomeTrue?account=${data.account}`);
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/api/user.js
@@ -52,5 +52,5 @@
export const StopMaintenanceTask = (data) => http.post(`/api/Maintenance/StopMaintenanceTask?account=${data.account}`);
//是否启用
export const IsEnabled = (data) => http.post(`/api/User/UpdateData`, data);
//获取部门
export const GetDepartment = (data) => http.post('/api/Department/GetPageData', data)
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/left.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/right.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/you.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/zuo.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/ÓÒ.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/×ó.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/²¥·Å.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/assets/imgs/ÔÝÍ£.png
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/layout/index.vue
@@ -76,7 +76,18 @@
                padding: 0 0.69rem 0 0;
              "
            >
              <span
              <!-- <span
                style="
                  font-size: 1.25rem;
                  font-weight: bold;
                  color: #fff;
                  margin-right: 0.69rem;
                  cursor: pointer;
                "
                @click="router.push({ path: '/VideoSurveillance' })"
                >视频监控</span
              > -->
              <!-- <span
                style="
                  font-size: 1.25rem;
                  font-weight: bold;
@@ -86,7 +97,7 @@
                "
                @click="router.push({ path: '/AlarmReset' })"
                >报警复位</span
              >
              > -->
              <img
                v-if="!isFullscreen"
                style="
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/router/viewGird.js
@@ -124,6 +124,12 @@
    path: "/AlarmReset",
    name: "AlarmReset",
    component: () => import("@/views/tts/AlarmReset/AlarmReset.vue"),
  },
  //视频监控
  {
    path: "/VideoSurveillance",
    name: "VideoSurveillance",
    component: () => import("@/views/tts/VideoSurveillance/VideoSurveillance.vue"),
  }
];
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/system/Permission.vue
@@ -263,6 +263,7 @@
          });
        }
      });
      let url = `api/Sys_Role/SavePermission?roleId=${info.value.roleId}`;
      http.post(url, userPermissions, true).then((result) => {
        $message[result.status ? "success" : "error"](result.message);
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/system/Sys_Role1.vue
@@ -5,68 +5,205 @@
 *业务请在@/extension/system/Sys_Role.js此处编写
 -->
<template>
    <view-grid ref="grid"
               :columns="columns"
               :detail="detail"
               :editFormFields="editFormFields"
               :editFormOptions="editFormOptions"
               :searchFormFields="searchFormFields"
               :searchFormOptions="searchFormOptions"
               :table="table"
               :extend="extend">
    </view-grid>
  <view-grid
    ref="grid"
    :columns="columns"
    :detail="detail"
    :editFormFields="editFormFields"
    :editFormOptions="editFormOptions"
    :searchFormFields="searchFormFields"
    :searchFormOptions="searchFormOptions"
    :table="table"
    :extend="extend"
  >
  </view-grid>
</template>
<script>
    import extend from "@/extension/system/Sys_Role1.js";
    import { ref, defineComponent } from "vue";
    export default defineComponent({
        setup() {
            const table = ref({
                key: 'Role_Id',
                footer: "Foots",
                cnName: '角色管理',
                name: 'Sys_Role',
                url: "/Sys_Role/",
                sortName: "Role_Id"
            });
            const editFormFields = ref({"ParentId":[],"RoleName":"","DeptName":"","Enable":"","Creator":"","CreateDate":"","Modifier":"","ModifyDate":""});
            const editFormOptions = ref([[{"dataKey":"tree_roles","data":[],"title":"父级ID","required":true,"field":"ParentId","type":"cascader"},
                               {"title":"角色名称","required":true,"field":"RoleName"}],
                              [{"title":"部门名称","field":"DeptName"},
                               {"dataKey":"enable","data":[],"title":"是否启用","field":"Enable","type":"switch"}],
                              [{"title":"创建人","field":"Creator","disabled":true},
                               {"title":"创建时间","field":"CreateDate","disabled":true,"type":"datetime"}],
                              [{"title":"修改人","field":"Modifier","disabled":true},
                               {"title":"修改时间","field":"ModifyDate","disabled":true}]]);
            const searchFormFields = ref({"RoleName":"","DeptName":"","Enable":"","CreateDate":"","ModifyDate":""});
            const searchFormOptions = ref([[{"title":"角色名称","field":"RoleName","type":"text"},{"title":"部门名称","field":"DeptName","type":"text"},{"dataKey":"enable","data":[],"title":"是否启用","field":"Enable","type":"select"}],[{"title":"创建时间","field":"CreateDate","type":"datetime"},{"title":"修改时间","field":"ModifyDate","type":"datetime"}]]);
            const columns = ref([{field:'Role_Id',title:'角色ID',type:'int',width:70,readonly:true,require:true,align:'left',sortable:true},
                      // {field:'ParentId',title:'父级ID',type:'int',bind:{ key:'tree_roles',data:[]},width:70,require:true,align:'left'},
                       {field:'RoleName',title:'角色名称',type:'string',link:true,width:90,require:true,align:'left'},
                       {field:'Dept_Id',title:'部门ID',type:'int',width:90,hidden:true,align:'left'},
                       {field:'DeptName',title:'部门名称',type:'string',width:90,align:'left'},
                       {field:'Enable',title:'是否启用',type:'byte',bind:{ key:'enable',data:[]},width:90,align:'left'},
                       {field:'OrderNo',title:'排序',type:'int',width:90,hidden:true,align:'left'},
                       {field:'Creator',title:'创建人',type:'string',width:130,readonly:true,align:'left'},
                       {field:'CreateDate',title:'创建时间',type:'datetime',width:90,readonly:true,align:'left',sortable:true},
                       {field:'Modifier',title:'修改人',type:'string',width:130,readonly:true,align:'left'},
                       {field:'ModifyDate',title:'修改时间',type:'datetime',width:90,readonly:true,align:'left',sortable:true}]);
            const detail = ref({
                cnName: "#detailCnName",
                columns: [],
                sortName: "",
                key: ""
            });
            return {
                table,
                extend,
                editFormFields,
                editFormOptions,
                searchFormFields,
                searchFormOptions,
                columns,
                detail,
            };
        },
import extend from "@/extension/system/Sys_Role1.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "Role_Id",
      footer: "Foots",
      cnName: "角色管理",
      name: "Sys_Role",
      url: "/Sys_Role/",
      sortName: "Role_Id",
    });
    const editFormFields = ref({
      ParentId: [],
      RoleName: "",
      DeptName: "",
      Enable: "",
      Creator: "",
      CreateDate: "",
      Modifier: "",
      ModifyDate: "",
    });
    const editFormOptions = ref([
      [
        {
          dataKey: "tree_roles",
          data: [],
          title: "父级ID",
          required: true,
          field: "ParentId",
          type: "cascader",
        },
        { title: "角色名称", required: true, field: "RoleName" },
      ],
      [
        { title: "部门名称", field: "DeptName" },
        {
          dataKey: "enable",
          data: [],
          title: "是否启用",
          field: "Enable",
          type: "switch",
        },
      ],
      [
        { title: "创建人", field: "Creator", disabled: true },
        {
          title: "创建时间",
          field: "CreateDate",
          disabled: true,
          type: "datetime",
        },
      ],
      [
        { title: "修改人", field: "Modifier", disabled: true },
        { title: "修改时间", field: "ModifyDate", disabled: true },
      ],
    ]);
    const searchFormFields = ref({
      RoleName: "",
      DeptName: "",
      Enable: "",
      CreateDate: "",
      ModifyDate: "",
    });
    const searchFormOptions = ref([
      [
        { title: "角色名称", field: "RoleName", type: "text" },
        { title: "部门名称", field: "DeptName", type: "text" },
        {
          dataKey: "enable",
          data: [],
          title: "是否启用",
          field: "Enable",
          type: "select",
        },
      ],
      [
        { title: "创建时间", field: "CreateDate", type: "datetime" },
        { title: "修改时间", field: "ModifyDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "Role_Id",
        title: "角色ID",
        type: "int",
        width: 70,
        readonly: true,
        require: true,
        align: "left",
        sortable: true,
      },
      // {field:'ParentId',title:'父级ID',type:'int',bind:{ key:'tree_roles',data:[]},width:70,require:true,align:'left'},
      {
        field: "RoleName",
        title: "角色名称",
        type: "string",
        link: true,
        width: 90,
        require: true,
        align: "left",
      },
      {
        field: "Dept_Id",
        title: "部门ID",
        type: "int",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "DeptName",
        title: "部门名称",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "Enable",
        title: "是否启用",
        type: "byte",
        bind: { key: "enable", data: [] },
        width: 90,
        align: "left",
      },
      {
        field: "OrderNo",
        title: "排序",
        type: "int",
        width: 90,
        hidden: true,
        align: "left",
      },
      {
        field: "Creator",
        title: "创建人",
        type: "string",
        width: 130,
        readonly: true,
        align: "left",
      },
      {
        field: "CreateDate",
        title: "创建时间",
        type: "datetime",
        width: 90,
        readonly: true,
        align: "left",
        sortable: true,
      },
      {
        field: "Modifier",
        title: "修改人",
        type: "string",
        width: 130,
        readonly: true,
        align: "left",
      },
      {
        field: "ModifyDate",
        title: "修改时间",
        type: "datetime",
        width: 90,
        readonly: true,
        align: "left",
        sortable: true,
      },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/AlarmReset/AlarmReset.vue
@@ -95,10 +95,13 @@
const handleCurrentChange = (val) => {
  currentPage.value = val - 1; // æ›´æ–°å½“前页码
};
const account = JSON.parse(localStorage.getItem("user")).userName; // èŽ·å–è´¦å·
//复位按钮方法
const handleBecomeTrue = (val) => {
  BecomeTrue().then((res) => {
    if (res.data.code == 0) {
  BecomeTrue({
    account: account,
  }).then((res) => {
    if (res.code == 0) {
      ElMessage({
        message: "复位成功",
        type: "success",
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/DataLogging/Datalogging.vue
@@ -1,21 +1,38 @@
<template>
  <div class="Datalogging">
    <div class="content">
      <div class="checkbox" :style="{ width: roleINFO == 1 ? '22rem' : '15rem' }">
        <div :class="['item', isactive == 1 ? 'isactive' : '']" @click="changeactive(1)">
      <div
        class="checkbox"
        :style="{ width: roleINFO == 1 ? '22rem' : '15rem' }"
      >
        <div
          :class="['item', isactive == 1 ? 'isactive' : '']"
          @click="changeactive(1)"
        >
          æ£€ä¿®è®¾ç½®è®°å½•
        </div>
        <div :class="['item', isactive == 2 ? 'isactive' : '']" @click="changeactive(2)">
        <div
          :class="['item', isactive == 2 ? 'isactive' : '']"
          @click="changeactive(2)"
        >
          æ£€ä¿®æ“ä½œè®°å½•
        </div>
        <div v-if="roleINFO == 1" :class="['item', isactive == 3 ? 'isactive' : '']" @click="changeactive(3)">
        <div
          v-if="roleINFO == 1"
          :class="['item', isactive == 3 ? 'isactive' : '']"
          @click="changeactive(3)"
        >
          ç™»å½•记录
        </div>
      </div>
      <div class="serch">
        <div class="time_box">
          <div class="time">{{ isactive == 1 ? "分配时间" : "操作时间" }}</div>
          <el-date-picker v-model="queryForm.selectTime" prefix-icon="none" clear-icon="none" style="
          <el-date-picker
            v-model="queryForm.selectTime"
            prefix-icon="none"
            clear-icon="none"
            style="
              font-size: 0.75rem !important;
              border: 0.06rem solid rgba(222, 222, 222, 1);
              border-radius: 0 0.25rem 0.25rem 0;
@@ -23,101 +40,170 @@
              width: 19rem;
              height: 2rem;
              border-left: 0;
            " format="YYYY-MM-DD HH:mm:ss" type="datetimerange" range-separator="~" start-placeholder="起始日期"
            end-placeholder="截止日期" size="small" />
            "
            format="YYYY-MM-DD HH:mm:ss"
            type="datetimerange"
            range-separator="~"
            start-placeholder="起始日期"
            end-placeholder="截止日期"
            size="small"
          />
        </div>
        <div class="serch_box">
          <div class="serchb">全局搜索</div>
          <input v-model="queryForm.selectInput" placeholder="请输入关键词搜索" style="border-left: 0.06rem solid #e2e2e2" />
          <input
            v-model="queryForm.selectInput"
            placeholder="请输入关键词搜索"
            style="border-left: 0.06rem solid #e2e2e2"
          />
        </div>
        <el-button @click="handleQuery" type="primary" size="small"
          style="margin-left: 0.98rem; height: 2rem">查询</el-button>
        <el-button size="small" style="height: 2rem" @click="resetQuery">重置</el-button>
        <el-button
          @click="handleQuery"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >查询</el-button
        >
        <el-button size="small" style="height: 2rem" @click="resetQuery"
          >重置</el-button
        >
      </div>
      <div class="btns">
        <div style="display: flex; align-items: center">
          <el-button size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel">批量导出</el-button>
          <el-button
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
            >批量导出</el-button
          >
        </div>
      </div>
      <div style="margin-top: 1rem; height: 100%">
        <!-- æ£€ä¿®è®¾ç½®è®°å½• -->
        <el-table empty-text="暂无数据" v-if="isactive == 1" :data="tableData" height="450" style="width: 100%"
        <el-table
          empty-text="暂无数据"
          v-if="isactive == 1"
          :data="tableData"
          height="450"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
          }"
          :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }">
          }"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="operatorName" label="姓名" align="center" />
          <el-table-column prop="teamName" label="班组" align="center" />
          <el-table-column prop="headImageUrl" label="人脸" align="center">
            <template #default="scope">
              <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress :initial-index="4" fit="cover" />
              <el-image
                style="width: 5rem; height: 5rem"
                :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </template>
          </el-table-column>
          <el-table-column prop="distributionTime" label="分配时间" align="center" />
          <el-table-column
            prop="distributionTime"
            label="分配时间"
            align="center"
          />
          <el-table-column prop="" label="分配检修员" align="center">
            <template #default> {{ userName }} </template>
          </el-table-column>
        </el-table>
        <!-- æ£€ä¿®æ“ä½œè®°å½•记录 -->
        <el-table empty-text="暂无数据" v-if="isactive == 2" :data="tableData" height="450" style="width: 100%"
        <el-table
          empty-text="暂无数据"
          v-if="isactive == 2"
          :data="tableData"
          height="450"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
          }"
          :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }">
          }"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="userTrueName" label="姓名" align="center" />
          <el-table-column prop="userteam" label="班组" align="center" />
          <el-table-column prop="headImageUrl" label="人脸" align="center">
            <template #default="scope">
              <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress :initial-index="4" fit="cover" />
              <el-image
                style="width: 5rem; height: 5rem"
                :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </template>
          </el-table-column>
          <el-table-column prop="maintenancStartTime" label="进入检修时间" align="center" />
          <el-table-column prop="maintenancEendTime" label="退出检修时间" align="center" />
          <el-table-column
            prop="maintenancStartTime"
            label="进入检修时间"
            align="center"
          />
          <el-table-column
            prop="maintenancEendTime"
            label="退出检修时间"
            align="center"
          />
          <el-table-column prop="" label="检修道号" align="center">
          </el-table-column>
        </el-table>
        <!-- ç™»å½•记录 -->
        <el-table empty-text="暂无数据" v-if="isactive == 3" :data="tableData" height="450" style="width: 100%"
        <el-table
          empty-text="暂无数据"
          v-if="isactive == 3"
          :data="tableData"
          height="450"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
          }"
          :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }">
          }"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="userTrueName" label="姓名" align="center" />
          <el-table-column prop="opCenten" label="单位" align="center" />
          <el-table-column prop="userteam" label="班组" align="center" />
          <el-table-column prop="headImageUrl" label="人脸" align="center">
            <template #default="scope">
              <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress :initial-index="4" fit="cover" />
              <el-image
                style="width: 5rem; height: 5rem"
                :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </template>
          </el-table-column>
          <el-table-column prop="loginTiem" label="登录时间" align="center" />
@@ -125,22 +211,48 @@
          <el-table-column label="操作内容" align="center" />
        </el-table>
      </div>
      <div style="
      <div
        style="
          display: flex;
          justify-content: right;
          align-self: flex-end;
          margin-bottom: 1.19rem;
          margin-right: 1.25rem;
        ">
        <el-pagination v-if="isactive == 1" size="small" background layout="prev, pager, next"
          :current-page="pageQuery.page" :page-size="pageQuery.rows" :total="pageTotal" @size-change="handleSizeChange"
          @current-change="handleCurrentChange" />
        <el-pagination v-if="isactive == 2" size="small" background layout="prev, pager, next"
          :current-page="pageQuery1.page" :page-size="pageQuery1.rows" :total="pageTotal1"
          @size-change="handleSizeChange" @current-change="handleCurrentChange" />
        <el-pagination v-if="isactive == 3" size="small" background layout="prev, pager, next"
          :current-page="pageQuery2.page" :page-size="pageQuery2.rows" :total="pageTotal2"
          @size-change="handleSizeChange" @current-change="handleCurrentChange" />
        "
      >
        <el-pagination
          v-if="isactive == 1"
          size="small"
          background
          layout="prev, pager, next"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
        <el-pagination
          v-if="isactive == 2"
          size="small"
          background
          layout="prev, pager, next"
          :current-page="pageQuery1.page"
          :page-size="pageQuery1.rows"
          :total="pageTotal1"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
        <el-pagination
          v-if="isactive == 3"
          size="small"
          background
          layout="prev, pager, next"
          :current-page="pageQuery2.page"
          :page-size="pageQuery2.rows"
          :total="pageTotal2"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
  </div>
@@ -240,6 +352,9 @@
  },
];
const selectoptions = ref([]);
const account = localStorage.getItem("user")
  ? JSON.parse(localStorage.getItem("user")).userName
  : ""; //获取账号
selectoptions.value = tasklogging;
const changeactive = (index) => {
@@ -317,6 +432,7 @@
        : "",
    sortField: "distributionTime",
    sortOrder: "desc",
    account: account,
  }).then((res) => {
    tableData.value = res.data.items;
    pageTotal.value = res.data.totalCount;
@@ -350,6 +466,7 @@
        : "",
    sortField: "maintenancStartTime",
    sortOrder: "desc",
    account: account,
  }).then((res) => {
    tableData.value = res.data.items;
    pageTotal1.value = res.data.totalCount;
@@ -383,6 +500,7 @@
        : "",
    sortField: "loginTime",
    sortOrder: "desc",
    account: account,
  }).then((res) => {
    tableData.value = res.data.items;
    pageTotal2.value = res.data.totalCount;
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/Enteroverhaul/Enteroverhaul.vue
@@ -125,7 +125,6 @@
    account: userInfo.value.userName,
  }).then((res) => {
    tableData.value = [res.data];
    console.log("检修任务数据", tableData.value);
  });
};
//开始检修
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/Maintenancemanagement/Maintenancemanagement.vue
@@ -3,168 +3,311 @@
    <div class="Maintenancemanagement_l">
      <div class="content">
        <div class="checkbox">
          <span style="
          <span
            style="
              color: rgba(0, 9, 56, 1);
              font-size: 1.13rem;
              font-weight: bold;
            ">在检人员监控</span>
            "
            >在检人员监控</span
          >
          <div style="color: rgba(0, 9, 56, 1); font-size: 0.88rem">
            æ­£åœ¨æ£€ä¿®äººå‘˜æ•°é‡ï¼š<span style="color: red; font-size: 1.25rem; font-weight: bold">{{ totalCount }}</span>位
            æ­£åœ¨æ£€ä¿®äººå‘˜æ•°é‡ï¼š<span
              style="color: red; font-size: 1.25rem; font-weight: bold"
              >{{ totalCount }}</span
            >位
          </div>
        </div>
        <div class="serch">
          <div class="time_box">
            <el-select v-model="queryForm.selectType" :empty-values="[null, undefined]" placeholder="请选择" size="small"
              style="width: 9rem;height:2rem; margin-right: 0.98rem;">
              <el-option v-for="item in stateType" :key="item.value" :label="item.label" :value="item.value" />
            <el-select
              v-model="queryForm.selectType"
              :empty-values="[null, undefined]"
              placeholder="请选择"
              size="small"
              style="width: 9rem; height: 2rem; margin-right: 0.98rem"
            >
              <el-option
                v-for="item in stateType"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </div>
          <div class="serch_box">
            <div class="serchb">全局搜索</div>
            <input v-model="queryForm.inputcontent" placeholder="请输入关键词搜索" style="border-left: 0.06rem solid #e2e2e2" />
            <input
              v-model="queryForm.inputcontent"
              placeholder="请输入关键词搜索"
              style="border-left: 0.06rem solid #e2e2e2"
            />
          </div>
          <el-button @click="handleQuery" type="primary" size="small"
            style="margin-left: 0.98rem; height: 2rem">查询</el-button>
          <el-button size="small" style="height: 2rem" @click="resetQuery">重置</el-button>
          <el-button
            @click="handleQuery"
            type="primary"
            size="small"
            style="margin-left: 0.98rem; height: 2rem"
            >查询</el-button
          >
          <el-button size="small" style="height: 2rem" @click="resetQuery"
            >重置</el-button
          >
        </div>
        <div style="margin-top: 1rem; height: 100%">
          <el-table empty-text="暂无数据" height="450" :data="tableData" style="width: 100%" :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }">
          <el-table
            empty-text="暂无数据"
            height="450"
            :data="tableData"
            style="width: 100%"
            :header-cell-style="{
              background: 'rgba(250,250,250,1)',
              color: '#101010',
              fontSize: '0.88rem',
              height: '3rem',
              border: 'none',
            }"
            :row-style="{
              color: '#101010',
              fontSize: '0.88rem',
              height: '3rem',
            }"
          >
            <el-table-column prop="userTrueName" label="姓名" align="center" />
            <el-table-column prop="userteam" label="班组" align="center" />
            <el-table-column prop="headImageUrl" label="人脸" align="center">
              <template #default="scope">
                <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                  :fit="fit" />
                <el-image
                  style="width: 5rem; height: 5rem"
                  :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                  :fit="fit"
                />
              </template>
            </el-table-column>
            <el-table-column prop="maintenanceDate" label="分配时间" align="center" />
            <el-table-column
              prop="maintenanceDate"
              label="分配时间"
              align="center"
            />
            <el-table-column prop="fuzyuan" label="检修状态" align="center">
              <template #default="scope">
                <span style="color: #e7a307; font-size: 0.88rem" v-if="scope.row.maintenanceStatus == 0">待开始</span>
                <span style="color: red; font-size: 0.88rem" v-if="scope.row.maintenanceStatus == 1">检修中</span>
                <span style="color: #eee; font-size: 0.88rem" v-if="scope.row.maintenanceStatus == 2">已完成</span>
                <span
                  style="color: #e7a307; font-size: 0.88rem"
                  v-if="scope.row.maintenanceStatus == 0"
                  >待开始</span
                >
                <span
                  style="color: red; font-size: 0.88rem"
                  v-if="scope.row.maintenanceStatus == 1"
                  >检修中</span
                >
                <span
                  style="color: #eee; font-size: 0.88rem"
                  v-if="scope.row.maintenanceStatus == 2"
                  >已完成</span
                >
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div style="
        <div
          style="
            display: flex;
            justify-content: right;
            align-self: flex-end;
            margin-bottom: 1.19rem;
            margin-right: 1.25rem;
          ">
          <el-pagination size="small" background layout="prev, pager, next" :current-page="pageQuery.page"
            :page-size="pageQuery.rows" :total="pageTotal" @size-change="handleSizeChange"
            @current-change="handleCurrentChange" />
          "
        >
          <el-pagination
            size="small"
            background
            layout="prev, pager, next"
            :current-page="pageQuery.page"
            :page-size="pageQuery.rows"
            :total="pageTotal"
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
          />
        </div>
      </div>
    </div>
    <div class="Maintenancemanagement_r">
      <div class="content">
        <div class="checkbox">
          <span style="
          <span
            style="
              color: rgba(0, 9, 56, 1);
              font-size: 1.13rem;
              font-weight: bold;
            ">设置检修权限</span>
            "
            >设置检修权限</span
          >
        </div>
        <div class="serch">
          <div class="serch_box">
            <div class="serchb">全局搜索</div>
            <input v-model="queryForm1.inputcontent" placeholder="请输入关键词搜索"
              style="border-left: 0.06rem solid #e2e2e2" />
            <input
              v-model="queryForm1.inputcontent"
              placeholder="请输入关键词搜索"
              style="border-left: 0.06rem solid #e2e2e2"
            />
          </div>
          <el-button @click="handleQuery1" type="primary" size="small"
            style="margin-left: 0.98rem; height: 2rem">查询</el-button>
          <el-button size="small" style="height: 2rem" @click="resetQuery1">重置</el-button>
          <el-button
            @click="handleQuery1"
            type="primary"
            size="small"
            style="margin-left: 0.98rem; height: 2rem"
            >查询</el-button
          >
          <el-button size="small" style="height: 2rem" @click="resetQuery1"
            >重置</el-button
          >
        </div>
        <div style="margin-top: 1rem; height: 100%">
          <el-table empty-text="暂无数据" height="450" :data="gridData" style="width: 100%" :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }">
            <el-table-column prop="userTrueName" label="姓名" align="center" min-width="3%" />
            <el-table-column prop="userName" label="账号" align="center" min-width="3%" />
            <el-table-column prop="cardNumber" label="卡号" align="center" min-width="3%" />
          <el-table
            empty-text="暂无数据"
            height="450"
            :data="gridData"
            style="width: 100%"
            :header-cell-style="{
              background: 'rgba(250,250,250,1)',
              color: '#101010',
              fontSize: '0.88rem',
              height: '3rem',
              border: 'none',
            }"
            :row-style="{
              color: '#101010',
              fontSize: '0.88rem',
              height: '3rem',
            }"
          >
            <el-table-column
              prop="userTrueName"
              label="姓名"
              align="center"
              min-width="3%"
            />
            <el-table-column
              prop="userName"
              label="账号"
              align="center"
              min-width="3%"
            />
            <el-table-column
              prop="cardNumber"
              label="卡号"
              align="center"
              min-width="3%"
            />
            <el-table-column prop="userteam" label="班组" align="center" min-width="3%" />
            <el-table-column prop="headImageUrl" label="人脸" align="center" min-width="3%">
            <el-table-column
              prop="userteam"
              label="班组"
              align="center"
              min-width="3%"
            />
            <el-table-column
              prop="headImageUrl"
              label="人脸"
              align="center"
              min-width="3%"
            >
              <template #default="scope">
                <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                  :fit="fit" />
                <el-image
                  style="width: 5rem; height: 5rem"
                  :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                  :fit="fit"
                />
              </template>
            </el-table-column>
            <el-table-column label="操作" align="center" min-width="4%">
              <template #default="scope">
                <div v-if="scope.row.isPossible == null" style="
                <div
                  v-if="scope.row.isPossible == null"
                  style="
                    display: flex;
                    flex-direction: column;
                    justify-content: space-between;
                    align-items: center;
                  ">
                  <el-button style="
                  "
                >
                  <el-button
                    style="
                      height: 2.32rem;
                      width:9rem;
                      width: 9rem;
                      font-size: 0.75rem;
                      color: #fff;
                      margin-left: 1rem;
                    " size="small" type="primary" @click="allow(scope.row)">允许进入检修</el-button>
                  <el-button style="
                    "
                    size="small"
                    type="primary"
                    @click="allow(scope.row)"
                    >允许进入检修</el-button
                  >
                  <el-button
                    style="
                      height: 2.32rem;
                      width: 9rem;
                      font-size: 0.75rem;
                      color: #fff;
                      margin-top: 0.25rem;
                    " size="small" @click="forbid(scope.row)" type="warning">禁止进入检修</el-button>
                    "
                    size="small"
                    @click="forbid(scope.row)"
                    type="warning"
                    >禁止进入检修</el-button
                  >
                </div>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div style="
        <div
          style="
            display: flex;
            justify-content: right;
            align-self: flex-end;
            margin-bottom: 1.19rem;
            margin-right: 1.25rem;
          ">
          <el-pagination size="small" background layout="prev, pager, next" :current-page="pageQuery1.page"
            :page-size="pageQuery1.rows" :total="pageTotal1" @size-change="handleSizeChange1"
            @current-change="handleCurrentChange1" />
          "
        >
          <el-pagination
            size="small"
            background
            layout="prev, pager, next"
            :current-page="pageQuery1.page"
            :page-size="pageQuery1.rows"
            :total="pageTotal1"
            @size-change="handleSizeChange1"
            @current-change="handleCurrentChange1"
          />
        </div>
      </div>
    </div>
    <!-- å…è®¸è¿›å…¥æ£€ä¿® -->
    <el-dialog v-model="claimdialogVisible" title="允许进入检修" width="400" align-center>
      <div style="
    <el-dialog
      v-model="claimdialogVisible"
      title="允许进入检修"
      width="400"
      align-center
    >
      <div
        style="
          height: 5rem;
          display: flex;
          justify-content: center;
          align-items: center;
        ">
        "
      >
        <el-icon color="#FAAD14">
          <WarningFilled />
        </el-icon>
        <span style="color: rgba(0, 0, 0, 1); font-size: 1.25rem">是否确认【{{ info.userTrueName }}】今日允许进入检修?</span>
        <span style="color: rgba(0, 0, 0, 1); font-size: 1.25rem"
          >是否确认【{{ info.userTrueName }}】今日允许进入检修?</span
        >
      </div>
      <template #footer>
        <div class="dialog-footer" style="text-align: right">
@@ -175,17 +318,26 @@
    </el-dialog>
    <!-- ç¦æ­¢è¿›å…¥æ£€ä¿® -->
    <el-dialog v-model="claimdialogVisible1" title="禁止进入检修" width="400" align-center>
      <div style="
    <el-dialog
      v-model="claimdialogVisible1"
      title="禁止进入检修"
      width="400"
      align-center
    >
      <div
        style="
          height: 5rem;
          display: flex;
          justify-content: center;
          align-items: center;
        ">
        "
      >
        <el-icon color="#FAAD14">
          <WarningFilled />
        </el-icon>
        <span style="color: rgba(0, 0, 0, 1); font-size: 1.25rem">是否确认【{{ info.userTrueName }}】今日禁止进入检修?</span>
        <span style="color: rgba(0, 0, 0, 1); font-size: 1.25rem"
          >是否确认【{{ info.userTrueName }}】今日禁止进入检修?</span
        >
      </div>
      <template #footer>
        <div class="dialog-footer" style="text-align: right">
@@ -253,6 +405,9 @@
const claimdialogVisible = ref(false);
const claimdialogVisible1 = ref(false);
const info = ref({});
const account = localStorage.getItem("user")
  ? JSON.parse(localStorage.getItem("user")).userName
  : ""; //获取账号
//正在检修的人数
const totalCount = ref(0);
@@ -316,6 +471,7 @@
    pageSize: pageQuery.value.rows,
    searchKeyword: queryForm.value.inputcontent,
    status: queryForm.value.selectType,
    account: account,
  }).then((res) => {
    tableData.value = res.data.items;
    pageTotal.value = res.data.totalCount;
@@ -330,6 +486,7 @@
    pageIndex: pageQuery.value.page,
    pageSize: pageQuery.value.rows,
    searchKeyword: queryForm1.value.inputcontent,
    account: account,
  }).then((res) => {
    gridData.value = res.data.items;
    pageTotal1.value = res.data.totalCount;
@@ -351,6 +508,7 @@
    pageIndex: pageQuery.value.page,
    pageSize: pageQuery.value.rows,
    searchKeyword: queryForm1.value.inputcontent,
    account: account,
  }).then((res) => {
    gridData.value = res.data.items;
    pageTotal1.value = res.data.totalCount;
@@ -360,6 +518,7 @@
    pageSize: pageQuery.value.rows,
    searchKeyword: queryForm.value.inputcontent,
    status: queryForm.value.selectType,
    account: account,
  }).then((res) => {
    tableData.value = res.data.items;
    pageTotal.value = res.data.totalCount;
@@ -458,4 +617,4 @@
    margin-right: 0;
  }
}
</style>
</style>
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/Parametersettings/Parametersettings.vue
@@ -89,7 +89,7 @@
        </el-form-item>
      </el-form>
    </div>
    <div class="Parametersettings_c">
    <!-- <div class="Parametersettings_c">
      <div
        style="color: rgba(0, 9, 56, 1); font-size: 1.13rem; font-weight: bold"
      >
@@ -175,13 +175,14 @@
          >清除故障</el-button
        >
      </div>
    </div>
    </div> -->
  </div>
</template>
<script setup>
import { ref } from "vue";
import { ElMessage } from "element-plus";
import { AddData } from "@/api/newapi/Parameters";
const userInfo = JSON.parse(localStorage.getItem("user"));
const ruleForm = ref({
  creater: "string",
  createDate: "2025-03-27T05:48:57.698Z",
@@ -192,6 +193,7 @@
  retractionSpeed: 0,
  manualExtend: 0,
  manualRetraction: 0,
  depid: userInfo.depid,
});
//保存
@@ -208,7 +210,7 @@
  display: flex;
  justify-content: space-between;
  .Parametersettings_l {
    width: 36%;
    width: 100%;
    height: 100%;
    background-color: #fff;
    padding: 1.44rem 1.25rem;
@@ -236,4 +238,4 @@
    padding: 1.44rem 1.25rem;
  }
}
</style>
</style>
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/PickAndDrop/Manualcontrol.vue
@@ -97,6 +97,14 @@
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_l">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控左侧</span
            >
            <img src="@/assets/imgs/right.png" alt="" />
          </div>
        </div>
      </div>
      <div class="content_r">
        <div class="model">
@@ -179,6 +187,14 @@
              <div class="pulse2"></div>
              <div class="pulse3"></div>
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_r">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控右侧</span
            >
            <img src="@/assets/imgs/left.png" alt="" />
          </div>
        </div>
      </div>
@@ -270,6 +286,14 @@
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_l">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控左侧</span
            >
            <img src="@/assets/imgs/right.png" alt="" />
          </div>
        </div>
      </div>
      <div class="content_r">
        <div class="model">
@@ -355,6 +379,14 @@
              <div class="pulse2"></div>
              <div class="pulse3"></div>
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_r">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控右侧</span
            >
            <img src="@/assets/imgs/left.png" alt="" />
          </div>
        </div>
      </div>
@@ -509,9 +541,9 @@
  .content {
    display: flex;
    .content_l {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      width: 50%;
      height: 45rem;
@@ -521,13 +553,10 @@
      border: 0.06rem solid rgba(6, 229, 231, 1);
      padding: 0.88rem 0.88rem;
      box-sizing: border-box;
      .model {
        display: flex;
        .model_btn {
          display: flex;
          .btnicon {
            display: flex;
            justify-content: center;
@@ -546,13 +575,13 @@
      .operate {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        .item {
          display: flex;
          flex-direction: column;
          justify-content: center;
          width: 8.75rem;
          height: 4.19rem;
          height: 3.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(
            90deg,
@@ -654,11 +683,23 @@
          }
        }
      }
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 80%;
        border: 0.25rem solid rgba(255, 255, 255, 0.8);
        img {
          width: 6rem;
          height: 8rem;
        }
      }
    }
    .content_r {
      display: flex;
      justify-content: space-between;
      flex-direction: column;
      width: 50%;
      height: 45rem;
      background-color: rgba(9, 48, 104, 1);
@@ -692,15 +733,16 @@
      .operate {
        display: flex;
        align-items: flex-end;
        flex-direction: column;
        padding: 0.88rem 0.88rem;
        padding: 0.58rem 0.58rem;
        .item {
          display: flex;
          flex-direction: column;
          justify-content: center;
          width: 8.75rem;
          height: 4.19rem;
          height: 3.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(
            90deg,
@@ -802,6 +844,17 @@
          }
        }
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 80%;
        border: 0.25rem solid rgba(255, 255, 255, 0.8);
        img {
          width: 6rem;
          height: 8rem;
        }
      }
    }
  }
@@ -811,9 +864,9 @@
    .content_l {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      width: 100%;
      height: 45rem;
      background-color: rgba(9, 48, 104, 1);
      color: rgba(16, 16, 16, 1);
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
@@ -845,7 +898,8 @@
      .operate {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        padding: 0.58rem 0.58rem;
        .item {
          display: flex;
          flex-direction: column;
@@ -953,13 +1007,20 @@
          }
        }
      }
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
    }
    .content_r {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      width: 100%;
      height: 45rem;
      background-color: rgba(9, 48, 104, 1);
      color: rgba(16, 16, 16, 1);
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
@@ -993,7 +1054,7 @@
        display: flex;
        flex-direction: column;
        padding: 0.88rem 0.88rem;
        align-items: flex-end;
        .item {
          display: flex;
          flex-direction: column;
@@ -1101,6 +1162,13 @@
          }
        }
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
    }
  }
}
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/PickAndDrop/PickAndDrop.vue
@@ -102,6 +102,14 @@
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_l">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控左侧</span
            >
            <img src="@/assets/imgs/right.png" alt="" />
          </div>
        </div>
      </div>
      <div class="content_r">
        <div class="model">右侧伸缩杆</div>
@@ -117,6 +125,14 @@
              <div class="pulse2"></div>
              <div class="pulse3"></div>
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_r">
            <span style="color: #fff; font-size: 1.25rem; font-weight: bold"
              >视频监控右侧</span
            >
            <img src="@/assets/imgs/left.png" alt="" />
          </div>
        </div>
      </div>
@@ -138,6 +154,14 @@
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_l">
            <span style="color: #fff; font-size: 2.5rem; font-weight: bold"
              >视频监控左侧</span
            >
            <img src="@/assets/imgs/right.png" alt="" />
          </div>
        </div>
      </div>
      <div class="content_r">
        <div class="model">右侧伸缩杆</div>
@@ -153,6 +177,14 @@
              <div class="pulse2"></div>
              <div class="pulse3"></div>
            </div>
          </div>
        </div>
        <div style="display: flex; flex-direction: column; align-items: center">
          <div class="video_r">
            <span style="color: #fff; font-size: 2.5rem; font-weight: bold"
              >视频监控右侧</span
            >
            <img src="@/assets/imgs/left.png" alt="" />
          </div>
        </div>
      </div>
@@ -217,10 +249,8 @@
    height: 7.83rem;
    display: flex;
    justify-content: space-between;
    .button_l {
      display: flex;
      .btnicon {
        display: flex;
        justify-content: center;
@@ -319,6 +349,7 @@
    .content_l {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      width: 50%;
      height: 45rem;
@@ -326,7 +357,7 @@
      color: rgba(16, 16, 16, 1);
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
      border: 0.06rem solid rgba(6, 229, 231, 1);
      padding: 2rem 0rem;
      .model {
        color: #fff;
        text-align: center;
@@ -337,14 +368,15 @@
      .operate {
        display: flex;
        flex-direction: column;
        padding: 0.88rem 0.88rem;
        align-items: flex-end;
        padding: 0.58rem 0.58rem;
        .item {
          display: flex;
          flex-direction: column;
          justify-content: center;
          width: 8.75rem;
          height: 4.19rem;
          height: 3.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(
            90deg,
@@ -446,10 +478,22 @@
          }
        }
      }
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 80%;
        border: 0.25rem solid rgba(255, 255, 255, 0.8);
        img {
          width: 6rem;
          height: 8rem;
        }
      }
    }
    .content_r {
      display: flex;
      flex-direction: column;
      justify-content: space-between;
      width: 50%;
      height: 45rem;
@@ -458,7 +502,7 @@
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
      border: 0.06rem solid rgba(6, 229, 231, 1);
      margin-left: 2rem;
      padding: 2rem 0rem;
      .model {
        color: #fff;
        text-align: center;
@@ -469,14 +513,14 @@
      .operate {
        display: flex;
        flex-direction: column;
        padding: 0.88rem 0.88rem;
        align-items: flex-end;
        padding: 0.58rem 0.58rem;
        .item {
          display: flex;
          flex-direction: column;
          justify-content: center;
          width: 8.75rem;
          height: 4.19rem;
          height: 3.19rem;
          border-radius: 0.31rem;
          background: linear-gradient(
            90deg,
@@ -576,6 +620,17 @@
            height: 4.375rem;
            opacity: 0;
          }
        }
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 80%;
        border: 0.25rem solid rgba(255, 255, 255, 0.8);
        img {
          width: 6rem;
          height: 8rem;
        }
      }
    }
@@ -588,12 +643,13 @@
    .content_l {
      display: flex;
      justify-content: space-between;
      flex-direction: column;
      width: 100%;
      height: 45rem;
      background-color: rgba(9, 48, 104, 1);
      color: rgba(16, 16, 16, 1);
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
      border: 0.06rem solid rgba(6, 229, 231, 1);
      padding: 2rem 0rem;
      .model {
        color: #fff;
@@ -605,8 +661,8 @@
      .operate {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        padding: 0.88rem 0.88rem;
        .item {
          display: flex;
          flex-direction: column;
@@ -713,19 +769,27 @@
            opacity: 0;
          }
        }
      }
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
    }
    .content_r {
      display: flex;
      justify-content: space-between;
      flex-direction: column;
      justify-content: space-around;
      width: 100%;
      height: 45rem;
      background-color: rgba(9, 48, 104, 1);
      color: rgba(16, 16, 16, 1);
      box-shadow: 0rem 0.13rem 0.38rem 0rem rgba(6, 229, 231, 1);
      border: 0.06rem solid rgba(6, 229, 231, 1);
      margin-top: 10%;
      padding: 2rem 0rem;
      .model {
        color: #fff;
@@ -737,8 +801,8 @@
      .operate {
        display: flex;
        flex-direction: column;
        align-items: flex-end;
        padding: 0.88rem 0.88rem;
        .item {
          display: flex;
          flex-direction: column;
@@ -846,6 +910,13 @@
          }
        }
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
    }
  }
}
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/UserManagement/Usermanagement.vue
@@ -2,17 +2,27 @@
  <div class="Usermanagement">
    <div class="content">
      <div class="checkbox">
        <div :class="['item', isactive == 1 ? 'isactive' : '']" @click="changeactive(1)">
        <div
          :class="['item', isactive == 1 ? 'isactive' : '']"
          @click="changeactive(1)"
        >
          ç”¨æˆ·åˆ—表
        </div>
        <div :class="['item', isactive == 2 ? 'isactive' : '']" @click="changeactive(2)">
        <div
          :class="['item', isactive == 2 ? 'isactive' : '']"
          @click="changeactive(2)"
        >
          ç”¨æˆ·è§’色
        </div>
      </div>
      <div class="serch">
        <div class="time_box">
          <div class="time">创建日期</div>
          <el-date-picker v-model="queryForm.selectTime" prefix-icon="none" clear-icon="none" style="
          <el-date-picker
            v-model="queryForm.selectTime"
            prefix-icon="none"
            clear-icon="none"
            style="
              font-size: 0.75rem !important;
              border: 0.06rem solid rgba(222, 222, 222, 1);
              border-radius: 0 0.25rem 0.25rem 0;
@@ -20,175 +30,359 @@
              width: 19rem;
              height: 2rem;
              border-left: 0;
            " format="YYYY-MM-DD HH:mm:ss" type="datetimerange" range-separator="~" start-placeholder="起始日期"
            end-placeholder="截止日期" size="small" />
            "
            format="YYYY-MM-DD HH:mm:ss"
            type="datetimerange"
            range-separator="~"
            start-placeholder="起始日期"
            end-placeholder="截止日期"
            size="small"
          />
        </div>
        <div class="serch_box">
          <div class="serchb">
            <el-select v-model="queryForm.selectType" placeholder="请选择" size="small"
              style="width: 100%; font-size: 0.15rem">
              <el-option v-for="item in selectoptions" :key="item.value" :label="item.label" :value="item.value" />
            <el-select
              v-model="queryForm.selectType"
              placeholder="请选择"
              size="small"
              style="width: 100%; font-size: 0.15rem"
            >
              <el-option
                v-for="item in selectoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              />
            </el-select>
          </div>
          <input v-model="queryForm.selectInput" placeholder="请输入关键词搜索" style="border-left: 0.06rem solid #e2e2e2" />
          <input
            v-model="queryForm.selectInput"
            placeholder="请输入关键词搜索"
            style="border-left: 0.06rem solid #e2e2e2"
          />
        </div>
        <el-button @click="handleQuery" type="primary" size="small"
          style="margin-left: 0.98rem; height: 2rem">查询</el-button>
        <el-button size="small" style="height: 2rem" @click="resetQuery">重置</el-button>
        <el-button
          @click="handleQuery"
          type="primary"
          size="small"
          style="margin-left: 0.98rem; height: 2rem"
          >查询</el-button
        >
        <el-button size="small" style="height: 2rem" @click="resetQuery"
          >重置</el-button
        >
      </div>
      <div class="btns">
        <div style="display: flex; align-items: center">
          <!-- ç”¨æˆ·åˆ—表新建 -->
          <el-button v-if="isactive == 1" type="primary" size="small" @click="dialogVisible = true" style="
          <el-button
            v-if="isactive == 1"
            type="primary"
            size="small"
            @click="dialogVisible = true"
            style="
              width: 5.5rem;
              height: 2rem;
              font-size: 0.88rem;
              display: flex;
              align-items: center;
            "><el-icon style="margin-right: 0.2rem">
              <Plus />
            </el-icon>新建</el-button>
            "
            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
            >新建</el-button
          >
          <!-- ç”¨æˆ·è§’色新建 -->
          <el-button v-if="isactive == 2" type="primary" size="small" @click="AddRole" style="
          <el-button
            v-if="isactive == 2"
            type="primary"
            size="small"
            @click="AddRole"
            style="
              width: 5.5rem;
              height: 2rem;
              font-size: 0.88rem;
              display: flex;
              align-items: center;
            "><el-icon style="margin-right: 0.2rem">
              <Plus />
            </el-icon>新建</el-button>
          <el-button size="small" style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel">批量导出</el-button>
          <el-button @click="deleteAll" size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem">批量删除</el-button>
            "
            ><el-icon style="margin-right: 0.2rem"> <Plus /> </el-icon
            >新建</el-button
          >
          <el-button
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            @click="printExcel"
            >批量导出</el-button
          >
          <el-button
            @click="deleteAll"
            size="small"
            style="width: 5.5rem; height: 2rem; font-size: 0.88rem"
            >批量删除</el-button
          >
        </div>
      </div>
      <div style="margin-top: 1rem; height: 100%">
        <!-- ç”¨æˆ·åˆ—表 -->
        <el-table empty-text="暂无数据" height="450" v-if="isactive == 1" :data="tableData" style="width: 100%"
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 1"
          :data="tableData"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
          }"
          :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }" @selection-change="UserSelectionChange">
          }"
          @selection-change="UserSelectionChange"
        >
          <el-table-column type="selection" align="center" min-width="1%" />
          <el-table-column prop="userName" label="登录账号" align="center" min-width="2%" />
          <el-table-column prop="userTrueName" label="真实姓名" align="center" min-width="3%" />
          <el-table-column prop="phoneNo" label="联系方式" align="center" min-width="3%" />
          <el-table-column prop="role_Id" label="用户分组" align="center" min-width="2%" />
          <el-table-column prop="roleName" label="用户角色" align="center" min-width="3%" />
          <el-table-column prop="address" label="人脸照片" align="center" min-width="3%">
          <el-table-column
            prop="userName"
            label="登录账号"
            align="center"
            min-width="2%"
          />
          <el-table-column
            prop="userTrueName"
            label="真实姓名"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="phoneNo"
            label="联系方式"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="role_Id"
            label="用户分组"
            align="center"
            min-width="2%"
          />
          <el-table-column
            prop="roleName"
            label="用户角色"
            align="center"
            min-width="3%"
          />
          <el-table-column
            prop="address"
            label="人脸照片"
            align="center"
            min-width="3%"
          >
            <template #default="scope">
              <el-image style="width: 5rem; height: 5rem" :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress :initial-index="4" fit="cover" />
              <el-image
                style="width: 5rem; height: 5rem"
                :src="'http://192.168.0.80:1598' + scope.row.headImageUrl"
                show-progress
                :initial-index="4"
                fit="cover"
              />
            </template>
          </el-table-column>
          <el-table-column label="是否启用" align="center" min-width="2%">
            <template #default="scope">
              <el-switch :disabled="(userInfo.userName == 'admin' || userInfo.roleId == '1' ? scope.row.userName == 'admin' || scope.row.user_Id == '1' : scope.row.userName == 'admin' || scope.row.user_Id == '1' || scope.row.userName != userInfo.userName
              )
                " v-model="scope.row.enable" :active-value="1" :inactive-value="0" @change="changeSwitch(scope.row)" />
              <el-switch
                :disabled="
                  userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName
                "
                v-model="scope.row.enable"
                :active-value="1"
                :inactive-value="0"
                @change="changeSwitch(scope.row)"
              />
            </template>
          </el-table-column>
          <el-table-column prop="createDate" label="创建日期" align="center" min-width="3%" />
          <el-table-column
            prop="createDate"
            label="创建日期"
            align="center"
            min-width="3%"
          />
          <el-table-column label="操作" align="center" min-width="3%">
            <template #default="scope">
              <el-button size="small" type="text" @click="Edit(scope.row)" :disabled="scope.row.isdisabled
                ">编辑</el-button>
              <el-button size="small" type="text" :disabled="scope.row.isdisabled
                " @click="Editpassword(scope.row)">修改密码</el-button>
              <el-button size="small" type="text" @click="deletUser(scope.row)" :disabled="scope.row.isdisabled
                ">删除</el-button>
              <el-button
                size="small"
                type="text"
                @click="Edit(scope.row)"
                :disabled="scope.row.isdisabled"
                >编辑</el-button
              >
              <el-button
                size="small"
                type="text"
                :disabled="scope.row.isdisabled"
                @click="Editpassword(scope.row)"
                >修改密码</el-button
              >
              <el-button
                size="small"
                type="text"
                @click="deletUser(scope.row)"
                :disabled="scope.row.isdisabled"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <!-- ç”¨æˆ·è§’色 -->
        <el-table empty-text="暂无数据" height="450" v-if="isactive == 2" :data="grideData" style="width: 100%"
        <el-table
          empty-text="暂无数据"
          height="450"
          v-if="isactive == 2"
          :data="grideData"
          style="width: 100%"
          :header-cell-style="{
            background: 'rgba(250,250,250,1)',
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
            border: 'none',
          }" :row-style="{
          }"
          :row-style="{
            color: '#101010',
            fontSize: '0.88rem',
            height: '3rem',
          }" @selection-change="RoleSelectionChange">
          }"
          @selection-change="RoleSelectionChange"
        >
          <el-table-column type="selection" align="center" />
          <el-table-column prop="roleName" label="角色名称" align="center" />
          <el-table-column prop="name" label="角色权限" align="center">
            <template #default="scope">
              <span v-if="
                !(userInfo.userName == 'admin' || userInfo.roleId == '1' ? scope.row.userName == 'admin' || scope.row.user_Id == '1' : scope.row.userName == 'admin' || scope.row.user_Id == '1' || scope.row.userName != userInfo.userName
                )
              " @click="toDetail(scope.row)" style="color: #4386ff; cursor: pointer">管理</span>
              <span
                v-if="
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName)
                "
                @click="toDetail(scope.row)"
                style="color: #4386ff; cursor: pointer"
                >管理</span
              >
            </template>
          </el-table-column>
          <el-table-column prop="deptName" label="备注" align="center" />
          <el-table-column label="是否启用" align="center">
            <template #default="scope">
              <el-switch :disabled="!(userInfo.userName == 'admin' || userInfo.roleId == '1'
              )
                " v-model="scope.row.enable" :active-value="1" :inactive-value="0"
                @change="changeRoleSwitch(scope.row)" />
              <el-switch
                :disabled="
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1')
                "
                v-model="scope.row.enable"
                :active-value="1"
                :inactive-value="0"
                @change="changeRoleSwitch(scope.row)"
              />
            </template>
          </el-table-column>
          <el-table-column prop="createDate" label="创建日期" align="center" />
          <el-table-column label="操作" align="center">
            <template #default="scope">
              <span v-if="
                !(userInfo.userName == 'admin' || userInfo.roleId == '1' ? scope.row.userName == 'admin' || scope.row.user_Id == '1' : scope.row.userName == 'admin' || scope.row.user_Id == '1' || scope.row.userName != userInfo.userName
                )
              " style="color: blue; font-size: 0.88rem; cursor: pointer" @click="EditRole(scope.row)">编辑</span>
            </template></el-table-column>
              <span
                v-if="
                  !(userInfo.userName == 'admin' || userInfo.roleId == '1'
                    ? scope.row.userName == 'admin' || scope.row.user_Id == '1'
                    : scope.row.userName == 'admin' ||
                      scope.row.user_Id == '1' ||
                      scope.row.userName != userInfo.userName)
                "
                style="color: blue; font-size: 0.88rem; cursor: pointer"
                @click="EditRole(scope.row)"
                >编辑</span
              >
            </template></el-table-column
          >
        </el-table>
      </div>
      <div style="
      <div
        style="
          display: flex;
          justify-content: right;
          align-self: flex-end;
          margin-bottom: 1.19rem;
          margin-right: 1.25rem;
        ">
        <el-pagination v-if="isactive == 1" size="small" background layout="prev, pager, next"
          :current-page="pageQuery.page" :page-size="pageQuery.rows" :total="pageTotal" @size-change="handleSizeChange"
          @current-change="handleCurrentChange" />
        "
      >
        <el-pagination
          v-if="isactive == 1"
          size="small"
          background
          layout="prev, pager, next"
          :current-page="pageQuery.page"
          :page-size="pageQuery.rows"
          :total="pageTotal"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
        />
      </div>
    </div>
    <!-- ç”¨æˆ·ä¿¡æ¯æ–°å»ºç¼–辑弹出框 -->
    <el-dialog v-model="dialogVisible" title="" width="60%" :before-close="handleClose" :show-close="false"
      :align-center="true" @close="resetForm(formUserRef)">
    <el-dialog
      v-model="dialogVisible"
      title=""
      width="60%"
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm(formUserRef)"
    >
      <template #title>
        <div style="
        <div
          style="
            height: 3.63rem;
            display: flex;
            border-bottom: 1px solid #e6e6e6;
          ">
          <span style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold">用户信息</span>
          "
        >
          <span
            style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
            >用户信息</span
          >
        </div>
      </template>
      <el-form :model="formUser" label-width="auto" label-position="top" :rules="rules" ref="formUserRef"
        :hide-required-asterisk="true">
      <el-form
        :model="formUser"
        label-width="auto"
        label-position="top"
        :rules="rules"
        ref="formUserRef"
        :hide-required-asterisk="true"
      >
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item prop="username">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">登录账号</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >登录账号</span
                  >
                </div>
              </template>
              <el-input size="small" v-model="formUser.username" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.username"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
@@ -196,10 +390,17 @@
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">真实姓名</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >真实姓名</span
                  >
                </div>
              </template>
              <el-input size="small" v-model="formUser.usertruename" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.usertruename"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
@@ -207,10 +408,17 @@
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">联系电话</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >联系电话</span
                  >
                </div>
              </template>
              <el-input size="small" v-model="formUser.phoneno" placeholder="请输入" />
              <el-input
                size="small"
                v-model="formUser.phoneno"
                placeholder="请输入"
              />
            </el-form-item>
          </el-col>
        </el-row>
@@ -220,13 +428,24 @@
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">用户角色
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >用户角色
                  </span>
                </div>
              </template>
              <el-select v-model="formUser.roleid" placeholder="请选择" size="small">
                <el-option :disabled="item.roleId == 1" v-for="item in groupOptions" :key="item.roleId"
                  :label="item.roleName" :value="item.roleId" />
              <el-select
                v-model="formUser.roleid"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  :disabled="item.roleId == 1"
                  v-for="item in groupOptions"
                  :key="item.roleId"
                  :label="item.roleName"
                  :value="item.roleId"
                />
              </el-select>
            </el-form-item>
          </el-col>
@@ -235,12 +454,23 @@
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">用户类型
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >用户类型
                  </span>
                </div>
              </template>
              <el-select v-model="formUser.rolename" placeholder="请选择" size="small">
                <el-option v-for="item in roleNameList" :key="item.value" :label="item.label" :value="item.value" />
              <el-select
                v-model="formUser.rolename"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in roleNameList"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
@@ -249,22 +479,62 @@
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">是否启用</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >是否启用</span
                  >
                </div>
              </template>
              <el-select v-model="formUser.enable" placeholder="请选择" size="small">
                <el-option v-for="item in isoptins" :key="item.value" :label="item.label" :value="item.value" />
              <el-select
                v-model="formUser.enable"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in isoptins"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item prop="dept_Id">
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >部门</span
                  >
                </div>
              </template>
              <el-select
                v-model="formUser.dept_Id"
                placeholder="请选择"
                size="small"
              >
                <el-option
                  v-for="item in departmentOptions"
                  :key="item.id"
                  :label="item.departmentName"
                  :value="item.id"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item>
              <template #label>
                <div style="display: flex; align-items: flex-end">
                  <span style="color: red; margin-right: 0.2rem">*</span>
                  <span style="font-size: 0.88rem; color: black; font-weight: bold">人脸图片</span>
                  <span
                    style="font-size: 0.88rem; color: black; font-weight: bold"
                    >人脸图片</span
                  >
                  <!-- <span
                    style="
                      color: rgba(255, 0, 0, 1);
@@ -275,26 +545,50 @@
                  > -->
                </div>
              </template>
              <el-upload ref="uploadRef" name="files" class="avatar-uploader"
                action="http://192.168.0.80:1598/api/User/SaveFiles" list-type="picture-card" limit="1"
                :auto-upload="true" @before-upload="beforeAvatarUpload" :on-success="handleAvatarSuccess"
                :file-list="fileList != [] ? fileList : []" :class="{ hide: showUpload }">
              <el-upload
                ref="uploadRef"
                name="files"
                class="avatar-uploader"
                action="http://192.168.0.80:1598/api/User/SaveFiles"
                list-type="picture-card"
                limit="1"
                :auto-upload="true"
                @before-upload="beforeAvatarUpload"
                :on-success="handleAvatarSuccess"
                :file-list="fileList != [] ? fileList : []"
                :class="{ hide: showUpload }"
              >
                <el-icon>
                  <Plus />
                </el-icon>
                <template #file="{ file }">
                  <div>
                    <img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
                    <img
                      class="el-upload-list__item-thumbnail"
                      :src="file.url"
                      alt=""
                    />
                    <span class="el-upload-list__item-actions">
                      <span class="el-upload-list__item-preview" @click="handlePictureCardPreview(file)">
                      <span
                        class="el-upload-list__item-preview"
                        @click="handlePictureCardPreview(file)"
                      >
                        <el-icon size="15"><zoom-in /></el-icon>
                      </span>
                      <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleDownload(file)">
                      <span
                        v-if="!disabled"
                        class="el-upload-list__item-delete"
                        @click="handleDownload(file)"
                      >
                        <el-icon size="15">
                          <Download />
                        </el-icon>
                      </span>
                      <span v-if="!disabled" class="el-upload-list__item-delete" @click="handleRemove(file)">
                      <span
                        v-if="!disabled"
                        class="el-upload-list__item-delete"
                        @click="handleRemove(file)"
                      >
                        <el-icon size="15">
                          <Delete />
                        </el-icon>
@@ -309,9 +603,19 @@
      </el-form>
      <template #footer>
        <div class="dialog-footer" style="text-align: center">
          <el-button size="small" @click="dialogVisible = false" style="height: 2rem; font-size: 0.88rem">取消</el-button>
          <el-button
            size="small"
            @click="dialogVisible = false"
            style="height: 2rem; font-size: 0.88rem"
            >取消</el-button
          >
          <el-button size="small" type="primary" @click="saveObj(formUserRef)" style="height: 2rem; font-size: 0.88rem">
          <el-button
            size="small"
            type="primary"
            @click="saveObj(formUserRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
          </el-button>
        </div>
@@ -319,21 +623,39 @@
    </el-dialog>
    <!-- ç”¨æˆ·ä¿¡æ¯ä¿®æ”¹å¯†ç å¼¹å‡ºæ¡† -->
    <el-dialog v-model="dialogVisible1" title="" width="30%" :before-close="handleClose" :show-close="false"
      :align-center="true">
    <el-dialog
      v-model="dialogVisible1"
      title=""
      width="30%"
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
    >
      <template #title>
        <div style="
        <div
          style="
            height: 3.63rem;
            display: flex;
            border-bottom: 1px solid #e6e6e6;
          ">
          <span style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold">用户信息</span>
          "
        >
          <span
            style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
            >用户信息</span
          >
        </div>
      </template>
      <el-form :model="newobj" label-width="auto" label-position="top" ref="formpasswordRef" :rules="passwordrules">
      <el-form
        :model="newobj"
        label-width="auto"
        label-position="top"
        ref="formpasswordRef"
        :rules="passwordrules"
      >
        <el-row>
          <el-col>
            <div style="
            <div
              style="
                height: 3.63rem;
                display: flex;
                align-items: center;
@@ -341,23 +663,40 @@
                padding: 0 2rem;
                box-sizing: border-box;
                border-radius: 0.25rem;
              ">
              <span style="color: #51b820; font-size: 1rem">账号:{{ formpassword.userName }}</span><span
                style="color: #51b820; font-size: 1rem; margin-left: 2rem">用户:{{ formpassword.roleName }}</span>
              "
            >
              <span style="color: #51b820; font-size: 1rem"
                >账号:{{ formpassword.userName }}</span
              ><span style="color: #51b820; font-size: 1rem; margin-left: 2rem"
                >用户:{{ formpassword.roleName }}</span
              >
            </div>
          </el-col>
        </el-row>
        <el-form-item prop="newPwd">
          <el-input style="margin-top: 1rem" size="large" v-model="newobj.newPwd" placeholder="请输入" />
          <el-input
            style="margin-top: 1rem"
            size="large"
            v-model="newobj.newPwd"
            placeholder="请输入"
          />
        </el-form-item>
      </el-form>
      <template #footer>
        <div class="dialog-footer" style="text-align: center">
          <el-button size="small" @click="dialogVisible1 = false"
            style="height: 2rem; font-size: 0.88rem">取消</el-button>
          <el-button
            size="small"
            @click="dialogVisible1 = false"
            style="height: 2rem; font-size: 0.88rem"
            >取消</el-button
          >
          <el-button size="small" type="primary" @click="savePassword(formpasswordRef)"
            style="height: 2rem; font-size: 0.88rem">
          <el-button
            size="small"
            type="primary"
            @click="savePassword(formpasswordRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
          </el-button>
        </div>
@@ -365,44 +704,84 @@
    </el-dialog>
    <!-- ç”¨æˆ·è§’色新建 -->
    <el-dialog v-model="dialogVisible2" title="" width="20%" :before-close="handleClose" :show-close="false"
      :align-center="true" @close="resetForm1(formRoleRef)">
    <el-dialog
      v-model="dialogVisible2"
      title=""
      width="20%"
      :before-close="handleClose"
      :show-close="false"
      :align-center="true"
      @close="resetForm1(formRoleRef)"
    >
      <template #title>
        <div style="
        <div
          style="
            height: 3.63rem;
            display: flex;
            border-bottom: 1px solid #e6e6e6;
          ">
          <span style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold">用户角色</span>
          "
        >
          <span
            style="color: rgb(16, 16, 16); font-size: 1rem; font-weight: bold"
            >用户角色</span
          >
        </div>
      </template>
      <el-form :model="formRole" label-width="auto" label-position="top" ref="formRoleRef" :rules="roleRules"
        :hide-required-asterisk="true">
      <el-form
        :model="formRole"
        label-width="auto"
        label-position="top"
        ref="formRoleRef"
        :rules="roleRules"
        :hide-required-asterisk="true"
      >
        <el-form-item prop="roleName">
          <template #label>
            <div style="display: flex; align-items: flex-end">
              <span style="color: red; margin-right: 0.2rem">*</span>
              <span style="font-size: 0.88rem; color: black; font-weight: bold">角色名称</span>
              <span style="font-size: 0.88rem; color: black; font-weight: bold"
                >角色名称</span
              >
            </div>
          </template>
          <el-input style="height: 2rem" size="small" v-model="formRole.roleName" placeholder="请输入" />
          <el-input
            style="height: 2rem"
            size="small"
            v-model="formRole.roleName"
            placeholder="请输入"
          />
        </el-form-item>
        <el-form-item>
          <template #label>
            <div style="display: flex; align-items: flex-end">
              <span style="font-size: 0.88rem; color: black; font-weight: bold">备注</span>
              <span style="font-size: 0.88rem; color: black; font-weight: bold"
                >备注</span
              >
            </div>
          </template>
          <el-input style="height: 2rem" size="small" v-model="formRole.description" placeholder="请输入" />
          <el-input
            style="height: 2rem"
            size="small"
            v-model="formRole.description"
            placeholder="请输入"
          />
        </el-form-item>
      </el-form>
      <template #footer>
        <div class="dialog-footer" style="text-align: center">
          <el-button size="small" @click="dialogVisible2 = false"
            style="height: 2rem; font-size: 0.88rem">取消</el-button>
          <el-button
            size="small"
            @click="dialogVisible2 = false"
            style="height: 2rem; font-size: 0.88rem"
            >取消</el-button
          >
          <el-button size="small" type="primary" @click="saveRole(formRoleRef)"
            style="height: 2rem; font-size: 0.88rem">
          <el-button
            size="small"
            type="primary"
            @click="saveRole(formRoleRef)"
            style="height: 2rem; font-size: 0.88rem"
          >
            ä¿å­˜
          </el-button>
        </div>
@@ -410,15 +789,21 @@
    </el-dialog>
    <el-dialog v-model="imgdialogVisible" width="35%" top="3vh">
      <div style="
      <div
        style="
          width: 100%;
          height: 100%;
          display: flex;
          justify-content: center;
          align-items: center;
        ">
        <img w-full style="width: 100%;
          height: 100%;" :src="dialogImageUrl" alt="Preview Image" />
        "
      >
        <img
          w-full
          style="width: 100%; height: 100%"
          :src="dialogImageUrl"
          alt="Preview Image"
        />
      </div>
    </el-dialog>
  </div>
@@ -433,12 +818,8 @@
  DelApi,
  ExportApi,
  ExportApi1,
  UpdatePassword,
  UpdatePwd,
  AddUserApi,
  EditUserApi,
  DeleteUserData,
  IsEnabled
} from "@/api/user";
import { useRouter } from "vue-router";
import { formatTime } from "@/utils/index.js";
@@ -449,6 +830,7 @@
  UpdateRoleApi,
  DeleteRoleApi,
} from "@/api/role";
import { GetDepartment } from "@/api/user";
let obj = {
  selectName: "",
  selectTime: [], // æ—¶é—´èŒƒå›´
@@ -464,7 +846,7 @@
const formUserRef = ref();
const options = ref([]);
const props = { multiple: true };
const userInfo = ref()
const userInfo = ref();
const isoptins = ref([
  {
    value: 0,
@@ -483,6 +865,7 @@
  enable: 1,
  path: "",
  usertruename: "",
  dept_Id: 1,
});
const rules = reactive({
  userName: {
@@ -585,8 +968,33 @@
});
const uploadRef = ref();
const showUpload = ref(false)
const showUpload = ref(false);
const pageTotal = ref(0);
//获取部门
const departmentOptions = ref([]);
const getDepartment = () => {
  GetDepartment({
    page: 1,
    rows: 100,
    total: 0,
    tableName: "string",
    sort: "string",
    order: "string",
    wheres: "string",
    export: true,
    value: "string",
    filter: [
      {
        name: "string",
        value: "string",
        displayType: "string",
      },
    ],
  }).then((res) => {
    departmentOptions.value = res.rows;
  });
};
//登录记录
const initData = () => {
  // æŸ¥è¯¢æ¡ä»¶
@@ -608,12 +1016,17 @@
    tableData.value = res.rows.map((item) => {
      return {
        ...item,
        isdisabled: userInfo.value.userName == 'admin' || userInfo.value.roleId == "1" ? item.userName == "admin" || item.user_Id == "1" : item.userName == "admin" || item.user_Id == "1" || item.userName != userInfo.value.userName
        isdisabled:
          userInfo.value.userName == "admin" || userInfo.value.roleId == "1"
            ? item.userName == "admin" || item.user_Id == "1"
            : item.userName == "admin" ||
              item.user_Id == "1" ||
              item.userName != userInfo.value.userName,
      };
    });
    pageTotal.value = res.total;
  });
  getDepartment();
};
//分页请求参数
const pageQuery = ref({
@@ -1002,7 +1415,6 @@
const toDetail = (row) => {
  router.push({ name: "permission", state: { info: JSON.stringify(row) } });
};
onMounted(() => {
  initData();
ÏîÄ¿´úÂë/ÉìËõ¸Ë/client/src/views/tts/VideoSurveillance/VideoSurveillance.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,201 @@
<template>
  <div class="VideoSurveillance">
    <div class="Portraitscreen" v-if="!isMobile">
      <div class="video_top">
        <span style="color: #fff; font-size: 10rem; font-weight: bold"
          >监控系统</span
        >
      </div>
      <div class="videobox">
        <div class="video_l">
          <span style="color: #fff; font-size: 5rem; font-weight: bold"
            >视频监控左侧</span
          >
          <img src="@/assets/imgs/right.png" alt="" />
        </div>
        <div class="video_r">
          <span style="color: #fff; font-size: 5rem; font-weight: bold"
            >视频监控右侧</span
          >
          <img src="@/assets/imgs/left.png" alt="" />
        </div>
      </div>
      <div class="video_bottom">
        <img src="@/assets/imgs/zuo.png" alt="" />
        <img
          src="@/assets/imgs/播放.png"
          v-if="!isPlaying"
          alt=""
          @click="playVideo"
        />
        <img src="@/assets/imgs/暂停.png" alt="" v-else @click="playVideo" />
        <img src="@/assets/imgs/you.png" alt="" />
      </div>
    </div>
    <div class="Landscapescreen" v-else>
      <div class="video_top">
        <span style="color: #fff; font-size: 5rem; font-weight: bold"
          >监控系统</span
        >
      </div>
      <div class="videobox">
        <div class="video_l">
          <span style="color: #fff; font-size: 2.5rem; font-weight: bold"
            >视频监控左侧</span
          >
          <img src="@/assets/imgs/right.png" alt="" />
        </div>
        <div class="video_r">
          <span style="color: #fff; font-size: 2.5rem; font-weight: bold"
            >视频监控右侧</span
          >
          <img src="@/assets/imgs/left.png" alt="" />
        </div>
      </div>
      <div class="video_bottom">
        <img src="@/assets/imgs/zuo.png" alt="" />
        <img
          src="@/assets/imgs/播放.png"
          alt=""
          v-if="!isPlaying"
          @click="playVideo"
        />
        <img src="@/assets/imgs/暂停.png" alt="" v-else @click="playVideo" />
        <img src="@/assets/imgs/you.png" alt="" />
      </div>
    </div>
  </div>
</template>
<script setup>
import { ref, onMounted, onUnmounted, nextTick } from "vue";
import { useRouter } from "vue-router";
const router = useRouter();
const isMobile = ref(false);
//是否在播放
const isPlaying = ref(false);
const playVideo = () => {
  isPlaying.value = !isPlaying.value;
  // æ’­æ”¾è§†é¢‘的逻辑
  console.log("播放视频");
};
onMounted(() => {
  // ç›‘听窗口大小变化
  window.addEventListener("resize", () => {
    nextTick(() => {
      if (window.innerWidth > 1080) {
        isMobile.value = true;
      } else {
        isMobile.value = false;
      }
    });
  });
  // åˆå§‹åŒ–时判断窗口大小
  if (window.innerWidth > 1080) {
    // å¦‚果窗口宽度小于1080px,执行相应的操作
    isMobile.value = true;
  } else {
    // å¦‚果窗口宽度大于等于1080px,执行相应的操作
    isMobile.value = false;
  }
});
</script>
<style lang="scss" scoped>
.VideoSurveillance {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  background-color: rgba(26, 74, 143, 0.9);
  .Portraitscreen {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    .videobox {
      width: 100%;
      height: 50%;
      justify-content: space-around;
      display: flex;
      flex-direction: column;
      align-items: center;
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 70rem;
        border: 0.75rem solid rgba(255, 255, 255, 0.8);
      }
    }
    .video_bottom {
      width: 80%;
      height: 20%;
      display: flex;
      justify-content: space-around;
      align-items: center;
      background-color: rgba(26, 74, 143, 0.2);
      img {
        width: 15rem;
        height: 15rem;
        // border-radius: 50%;
        cursor: pointer;
      }
    }
  }
  .Landscapescreen {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    .videobox {
      width: 100%;
      height: 50%;
      justify-content: space-around;
      display: flex;
      align-items: center;
      .video_l {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 50rem;
        border: 0.5rem solid rgba(255, 255, 255, 0.8);
      }
      .video_r {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 50rem;
        border: 0.5rem solid rgba(255, 255, 255, 0.8);
      }
    }
    .video_bottom {
      width: 80%;
      height: 20%;
      display: flex;
      justify-content: space-around;
      align-items: center;
      background-color: rgba(26, 74, 143, 0.2);
      margin-top: 5rem;
      img {
        width: 10rem;
        height: 10rem;
        // border-radius: 50%;
        cursor: pointer;
      }
    }
  }
}
</style>
ÏîÄ¿´úÂë/¿ÉÊÓ»¯´óÆÁ/client/src/layout/index.vue
@@ -56,14 +56,25 @@
              display: flex;
              align-items: center;
              cursor: pointer;
              justify-content: center;
            "
            @click="router.push({ path: '/' })"
          >
            <img
            <span
              style="
                width: 16rem;
                color: #fff;
                font-size: 2rem;
                font-weight: bold;
              "
            >
              æ™ºèƒ½å¤§å±ç³»ç»Ÿ
            </span>
            <!-- <img
              style="height: 3.38rem; width: 16rem"
              src="@/assets/index/index-text.png"
              alt=""
            />
            /> -->
          </div>
          <!-- å ä½ -->
          <span> </span>