已添加31个文件
已复制1个文件
已重命名102个文件
已删除71个文件
已修改20个文件
17826 ■■■■■ 文件已修改
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.omc/project-memory.json 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.omc/sessions/e6b9225b-2892-4ba9-8585-7ee1b6e2ef6f.json 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.claude/settings.local.json 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/idle-notif-cooldown.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/.omc/state/subagent-tracking.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/AGENTS.md 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/CLAUDE.md 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/.omc/project-memory.json 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/.yarn/install-state.gz 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/README.md 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/VITE_MIGRATION_SUMMARY.md 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/extension/system/Sys_Tenant.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/taskHty.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/router/viewGird.js 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/.omc/state/last-tool-error.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/Index.vue 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/fix.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/quartzJob/scheduler.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/system/Sys_Tenant.vue 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Client/src/views/taskinfo/taskHty.vue 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/memory.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/idle-notif-cooldown.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/.omc/state/subagent-tracking.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/AGENTS.md 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/CLAUDE.md 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/.omc/project-memory.json 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/.yarn/install-state.gz 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/.yarnrc.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/README.md 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/package.json 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/pnpm-lock.yaml 3917 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/public/webconfig.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/extension/outbound/outStockLockInfo.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/extension/stock/stock.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Tenant.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/router/viewGird.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/Login.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/charts/bigdata.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/chart-options.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/charts/chart.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/charts/formChart.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/stock/stock.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/system/PDA.vue 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/system/Sys_Tenant.vue 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/vite.config.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSClient/vue.config.js 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMSServer/AGENTS.md 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/.gitignore 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/README.md 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/index.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/package-lock.json 4654 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/package.json 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/App.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/main.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.dockerignore 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/957CD3507E75254DAB50B67D1CAD4ABB/57E558275472B567970CA987458436D5 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/957CD3507E75254DAB50B67D1CAD4ABB/89EE95323C118AB5E5FA0B5FC9E372D8 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/BE43EC63E499EE468C0161FA83175A2D/340C5AFE3B0C2AB455087AFF43725D6E 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/BE43EC63E499EE468C0161FA83175A2D/57E558275472B567970CA987458436D5 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/C569B8B80C5D3640BC534EFC4D2E9EFE/57E558275472B567970CA987458436D5 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/C569B8B80C5D3640BC534EFC4D2E9EFE/EEF5B4E6C1E13E5E42E047DE7B74D577 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/E6DFDF72DCCF3C46ABA29988BCD5456A/57E558275472B567970CA987458436D5 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/E6DFDF72DCCF3C46ABA29988BCD5456A/F977376DB3B74CAF672118CAACA4BA95 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/state.mpack 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/RobotClient.slnx/copilot-chat/bef6627e/sessions/36c312bd-395e-4534-89ed-c65ca163a4e7 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/RobotClient.slnx/v18/DocumentLayout.backup.json 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/.vs/RobotClient.slnx/v18/DocumentLayout.json 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/CLAUDE.md 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/Dockerfile 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/Program.cs 399 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/Properties/launchSettings.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/RobotClient.csproj 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/机械手客户端/RobotClient/RobotClient.slnx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/config/applicationhost.config 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.backup.json 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.json 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/AGENTS.md 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/CLAUDE.md 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Class1.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/PlcLinkStackerProtocolHandler.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/StackerInteractionProtocolHandler.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/IDeviceProtocolHandler.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/IProtocolTemplateService.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/MirrorAckProtocolHandler.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/ProtocolMonitoringHostedService.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/ProtocolMonitoringOptions.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/WIDESEAWCS_S7Simulator.Application.csproj 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/InstanceConfig.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/InstanceState.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/MemoryRegionConfig.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/S7ClientConnection.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Enums/InstanceStatus.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Enums/SiemensPLCType.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IMemoryRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IMemoryStore.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IPersistenceService.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IS7ServerInstance.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/ISimulatorInstanceManager.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Manager/SimulatorInstanceManager.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/CRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/DBRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/IRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MemoryRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MemoryStore.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/QRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/TRegion.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Persistence/FilePersistenceService.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Persistence/Models/InstanceDataModel.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolDataType.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolFieldDirection.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolFieldMapping.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolRuntimeState.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolTemplate.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Server/S7ServerInstance.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/WIDESEAWCS_S7Simulator.Core.csproj 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/ClientsController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/MemoryController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/ProtocolTemplatesController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/RobotClientsController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/WeatherForecastController.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-CWSC1/config.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-CWSC1/memory.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/config.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/memory.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-HCSC1/config.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-HCSC1/memory.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line1/config.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line1/memory.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line2/config.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/protocol-templates.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/protocol-templates.字段说明.md 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Program.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Properties/launchSettings.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Services/FileProtocolTemplateService.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Services/RobotClientManager.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/WIDESEAWCS_S7Simulator.Server.csproj 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/WeatherForecast.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/appsettings.Development.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/appsettings.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/launchSettings.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Memory/DBRegionTests.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Memory/MRegionTests.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Protocol/MirrorAckProtocolHandlerTests.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Protocol/StackerInteractionProtocolHandlerTests.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/UnitTest1.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Usings.cs 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/WIDESEAWCS_S7Simulator.UnitTests.csproj 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/.gitignore 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/index.html 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/package-lock.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/package.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/pnpm-lock.yaml 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/App.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/main.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/router/index.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/stores/instances.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/style.css 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/types/index.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/CreateView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/DetailsView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/EditView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/HomeView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/ProtocolTemplatesView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/RobotClientsView.vue 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/vite-env.d.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/tsconfig.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/tsconfig.node.json 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/vite.config.ts 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.slnx 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/docs/superpowers/plans/2026-03-16-protocol-template-db-monitoring.md 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/tmp_protocol_document.xml 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/设备协议/PlcLink_堆垛机项目.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/设备协议/WCS-输送线对接协议说明-V260202.docx 补丁 | 查看 | 原始文档 | blame | 历史
Code/测试工具/WIDESEAWCS_S7Simulator/设备协议/堆垛机与上位机交互信息.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
项目资料/设备协议/机械手协议/~$交互流程表(1).xlsx 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -426,3 +426,4 @@
/Code/WCS/WIDESEAWCS_S7Simulator/tmp_extract_堆垛机与上位机交互信息
/Code/WCS/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.backup.json
/Code/WCS/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.json
/.omc
.omc/project-memory.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,209 @@
{
  "version": "1.0.0",
  "lastScanned": 1774319550302,
  "projectRoot": "D:\\Git\\ShanMeiXinNengYuan",
  "techStack": {
    "languages": [],
    "frameworks": [],
    "packageManager": null,
    "runtime": null
  },
  "build": {
    "buildCommand": null,
    "testCommand": null,
    "lintCommand": null,
    "devCommand": null,
    "scripts": {}
  },
  "conventions": {
    "namingStyle": null,
    "importStyle": null,
    "testPattern": null,
    "fileOrganization": null
  },
  "structure": {
    "isMonorepo": false,
    "workspaces": [],
    "mainDirectories": [],
    "gitBranches": {
      "defaultBranch": "master",
      "branchingStrategy": null
    }
  },
  "customNotes": [],
  "directoryMap": {
    "Code": {
      "path": "Code",
      "purpose": null,
      "fileCount": 0,
      "lastAccessed": 1774319550279,
      "keyFiles": []
    },
    "项目资料": {
      "path": "项目资料",
      "purpose": null,
      "fileCount": 0,
      "lastAccessed": 1774319550280,
      "keyFiles": []
    }
  },
  "hotPaths": [
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\views\\Index.vue",
      "accessCount": 8,
      "lastAccessed": 1774325288485,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\CLAUDE.md",
      "accessCount": 4,
      "lastAccessed": 1774319832508,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\CLAUDE.md",
      "accessCount": 4,
      "lastAccessed": 1774320014175,
      "type": "file"
    },
    {
      "path": "Code\\WMS",
      "accessCount": 2,
      "lastAccessed": 1774319685208,
      "type": "directory"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\package.json",
      "accessCount": 1,
      "lastAccessed": 1774319589861,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Server\\CLAUDE.md",
      "accessCount": 1,
      "lastAccessed": 1774319589915,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\README.md",
      "accessCount": 1,
      "lastAccessed": 1774319589977,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\main.js",
      "accessCount": 1,
      "lastAccessed": 1774319604017,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\router\\index.js",
      "accessCount": 1,
      "lastAccessed": 1774319604071,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json",
      "accessCount": 1,
      "lastAccessed": 1774319604091,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\store\\index.js",
      "accessCount": 1,
      "lastAccessed": 1774319611661,
      "type": "file"
    },
    {
      "path": "Code\\WCS\\WIDESEAWCS_Client\\src\\api\\http.js",
      "accessCount": 1,
      "lastAccessed": 1774319611675,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSClient\\package.json",
      "accessCount": 1,
      "lastAccessed": 1774319652164,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSClient\\vite.config.js",
      "accessCount": 1,
      "lastAccessed": 1774319656371,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\main.js",
      "accessCount": 1,
      "lastAccessed": 1774319656381,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
      "accessCount": 1,
      "lastAccessed": 1774319656394,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj",
      "accessCount": 1,
      "lastAccessed": 1774319656456,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\WIDESEA_Core.csproj",
      "accessCount": 1,
      "lastAccessed": 1774319664837,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
      "accessCount": 1,
      "lastAccessed": 1774319668135,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSClient\\src\\router\\index.js",
      "accessCount": 1,
      "lastAccessed": 1774319668167,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseServices\\IService.cs",
      "accessCount": 1,
      "lastAccessed": 1774319668191,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Basic\\MaterielInfoController.cs",
      "accessCount": 1,
      "lastAccessed": 1774319671555,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_IBasicService\\IMaterielInfoService.cs",
      "accessCount": 1,
      "lastAccessed": 1774319671580,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\WIDESEA_Model.csproj",
      "accessCount": 1,
      "lastAccessed": 1774319671631,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
      "accessCount": 1,
      "lastAccessed": 1774319685049,
      "type": "file"
    },
    {
      "path": "Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\BaseController\\ApiBaseController.cs",
      "accessCount": 1,
      "lastAccessed": 1774319685114,
      "type": "file"
    }
  ],
  "userDirectives": []
}
.omc/sessions/e6b9225b-2892-4ba9-8585-7ee1b6e2ef6f.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
{
  "session_id": "e6b9225b-2892-4ba9-8585-7ee1b6e2ef6f",
  "ended_at": "2026-03-24T03:25:50.783Z",
  "reason": "other",
  "agents_spawned": 0,
  "agents_completed": 0,
  "modes_used": []
}
Code/WCS/.claude/settings.local.json
ÎļþÒÑɾ³ý
Code/WCS/.omc/state/agent-replay-607da09d-2c9a-4405-bfb9-46c9b0d2c05f.jsonl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
{"t":0,"agent":"a7f1459","agent_type":"unknown","event":"agent_stop","success":true}
Code/WCS/.omc/state/idle-notif-cooldown.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "lastSentAt": "2026-03-24T02:37:21.000Z"
}
Code/WCS/.omc/state/subagent-tracking.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "agents": [],
  "total_spawned": 0,
  "total_completed": 0,
  "total_failed": 0,
  "last_updated": "2026-03-24T02:38:41.486Z"
}
Code/WCS/AGENTS.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
# Repository Guidelines
## é¡¹ç›®ç»“构与模块组织
本仓库包含两个核心应用:
- `WIDESEAWCS_Client/`:Vue 3 + Vite å‰ç«¯ï¼Œä¸»è¦ç›®å½•包括 `src/views`、`src/components`、`src/api`、`src/router`、`src/store`。
- `WIDESEAWCS_Server/`:ASP.NET Core åŽç«¯è§£å†³æ–¹æ¡ˆï¼ˆ`WIDESEAWCS_Server.sln`),按分层组织为 `WIDESEAWCS_*Service`、`WIDESEAWCS_*Repository`、`WIDESEAWCS_Core`、`WIDESEAWCS_Domain`,调度与设备相关代码在 `WIDESEAWCS_Tasks` ä¸Ž `WIDESEAWCS_QuartzJob`。
测试主要位于 `WIDESEAWCS_Server/WIDESEAWCS_Tests`(xUnit),另外还有领域与集成测试项目。
## æž„建、测试与本地开发命令
- å‰ç«¯ï¼ˆåœ¨ `WIDESEAWCS_Client/` æ‰§è¡Œï¼‰ï¼š
  - `npm install`:安装依赖。
  - `npm run serve`:启动本地开发服务(Vite)。
  - `npm run build`:构建生产资源。
  - `npm run lint`:执行 ESLint æ£€æŸ¥ã€‚
- åŽç«¯ï¼ˆåœ¨ `WIDESEAWCS_Server/` æ‰§è¡Œï¼‰ï¼š
  - `dotnet restore WIDESEAWCS_Server.sln`:还原 NuGet ä¾èµ–。
  - `dotnet build WIDESEAWCS_Server.sln`:编译全部后端项目。
  - `dotnet run --project WIDESEAWCS_Server`:本地启动 API。
  - `dotnet test WIDESEAWCS_Tests/WIDESEAWCS_Tests.csproj`:运行单元测试。
## å¼€å‘流程强制规范
- æ‰€æœ‰ä»»åŠ¡å¿…é¡»åœ¨ `Code/WCS/.worktrees/<task-name>` ç‹¬ç«‹ worktree ä¸­å¼€å‘,不直接在主工作区改动。
- åˆ†æ”¯å‘½åç»Ÿä¸€ï¼š`feat/<模块>-<主题>`、`fix/<模块>-<问题>`、`refactor/<模块>-<主题>`、`docs/<主题>`。
- æ¯æ¬¡æäº¤å‰è‡³å°‘执行与改动相关的最小验证(前端改动跑 `npm run lint`;后端改动跑 `dotnet test` æˆ–最小可运行验证)。
- ç¦æ­¢ä¸€æ¬¡æäº¤æ··å…¥æ— å…³é‡æž„、格式化噪声或大面积文件移动。
## ä»£ç é£Žæ ¼ä¸Žå‘½åè§„范
- C#:4 ç©ºæ ¼ç¼©è¿›ï¼›ç±»åž‹/方法/属性使用 `PascalCase`;局部变量和参数使用 `camelCase`;接口使用 `I` å‰ç¼€ã€‚
- Vue/JS:遵循现有 ESLint é…ç½®ä¸Žé¡¹ç›®æ—¢æœ‰æ¨¡å¼ï¼›æ–‡ä»¶ååº”与功能一致(如 `TaskController.cs`、功能目录下 `index.vue`)。
- é»˜è®¤è¦æ±‚:对新增或修改的代码添加详细中文注释,至少包含方法目的、参数含义、返回值、关键逻辑步骤和异常处理说明。
- æ³¨é‡Šè¦æ±‚可读、可维护,禁止“重复代码字面意思”的无效注释。
## æ•°æ®ä¸€è‡´æ€§ä¸Žäº‹åŠ¡è§„èŒƒ
- åŒä¸€ä¸šåŠ¡æ“ä½œæ¶‰åŠå¤šä¸ªæ•°æ®å¯¹è±¡ï¼ˆå¤šè¡¨ã€å¤šä»“å‚¨ã€è·¨æœåŠ¡å†™å…¥ï¼‰åŒæ—¶æ”¹åŠ¨æ—¶ï¼Œå¿…é¡»ä½¿ç”¨æ•°æ®åº“äº‹åŠ¡ï¼ˆTransaction)保证原子性。
- äº‹åŠ¡èŒƒå›´åªè¦†ç›–å¿…è¦å†™æ“ä½œï¼Œç¦æ­¢å°†é•¿è€—æ—¶ IO/网络调用放入事务内,避免长事务锁表。
- å‘生异常时必须回滚事务,并记录事务上下文(业务单号、关键主键、调用链标识)。
- è‹¥æ¶‰åŠåˆ†å¸ƒå¼æˆ–跨边界写入,需在 PR ä¸­æ˜Žç¡®ä¸€è‡´æ€§ç­–略(补偿、重试、幂等键)。
## æŽ¥å£ã€æ—¥å¿—与异常规范
- API è¿”回结构保持统一,字段命名与现有后端序列化策略一致,避免随意变更响应字段。
- Service å±‚抛出的业务异常需包含可定位上下文(任务号、设备号、关键参数)。
- æ—¥å¿—级别规范:调试细节用 `Debug`,业务关键路径用 `Information`,可恢复异常用 `Warning`,不可恢复错误用 `Error`。
- ä¸¥ç¦åžå¼‚常;捕获后必须记录上下文并决定重抛或转换为业务错误。
- æ¶‰åŠå¤–部系统调用、IO、网络通信、设备通信、数据库访问的关键路径必须使用 `try-catch`;`catch` ä¸­è‡³å°‘记录错误信息与关键参数,并保留原始堆栈(`throw;`),禁止仅 `throw ex;`。
## æµ‹è¯•规范
- ä¸»è¦æµ‹è¯•框架为 xUnit,项目已引入 `Moq`、`FluentAssertions`、`coverlet.collector`。
- æµ‹è¯•命名建议:`MethodName_ShouldExpectedBehavior`。
- æ¶‰åŠè¡Œä¸ºå˜åŒ–的改动,必须同步新增或更新测试后再合并。
## æäº¤ä¸Ž Pull Request è§„范
- æäº¤åŽ†å²ä»¥èšç„¦åž‹å‰ç¼€ä¸ºä¸»ï¼š`feat:`、`fix:`、`refactor:`、`docs:`、`chore:`(中文摘要)。
- æ¯æ¡æäº¤ä¿¡æ¯å¿…须包含详细提交内容:至少说明改了什么、为什么改、影响了哪些模块/文件;禁止仅写“修改代码”“优化”这类模糊描述。
- PR å¿…须说明:改动内容、改动原因、影响路径、验证方式与结果、潜在风险与回滚方案。
- ä»…在前端界面变更时附截图;接口变更需附请求/响应示例。
## å®‰å…¨ä¸Žé…ç½®è§„范
- ç¦æ­¢æäº¤å¯†é’¥ã€ä»¤ç‰Œã€è¿žæŽ¥ä¸²æ˜Žæ–‡ï¼›æ•æ„Ÿé…ç½®å¿…须放入环境变量或本地受控配置。
- `appsettings*.json` çš„环境差异项需文档化,避免把开发机配置带入测试/生产。
- æ¶‰åŠæƒé™ã€é‰´æƒã€ä¸­é—´ä»¶é¡ºåºçš„æ”¹åŠ¨ï¼Œå¿…é¡»åœ¨ PR ä¸­å•独标注。
Code/WCS/CLAUDE.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,183 @@
# CLAUDE.md
本文件为 Claude Code (claude.ai/code) åœ¨æ­¤ä»£ç åº“中工作时提供指导。
## é¡¹ç›®æ¦‚è¿°
这是一个 **WCS(仓库控制系统)** - é„¯ç¾Žæ–°èƒ½æºä»“库控制系统,包含:
- **WIDESEAWCS_Client** - Vue 3 å‰ç«¯åº”用(Element Plus UI)
- **WIDESEAWCS_Server** - ASP.NET Core 6.0 åŽç«¯ API æœåС噍
系统管理自动化仓库作业,包括堆垛机、输送线、穿梭车和机械手的物料搬运任务(组盘、换盘、拆盘)。
---
## å¸¸ç”¨å‘½ä»¤
### å‰ç«¯ (WIDESEAWCS_Client)
```bash
# å®‰è£…依赖(在 Client ç›®å½•中)
cd WIDESEAWCS_Client
npm install
# å¼€å‘服务器
npm run serve
# ç”Ÿäº§æž„建
npm run build
# ä»£ç æ£€æŸ¥
npm run lint
```
**Node.js 18+ æ³¨æ„äº‹é¡¹**:如果 `npm run serve` å›  OpenSSL é”™è¯¯å¤±è´¥ï¼Œ`package.json` è„šæœ¬å·²åŒ…å« `SET NODE_OPTIONS=--openssl-legacy-provider` è§£å†³æ–¹æ¡ˆã€‚
### åŽç«¯ (WIDESEAWCS_Server)
```bash
# æž„建整个解决方案
cd WIDESEAWCS_Server
dotnet build WIDESEAWCS_Server.sln
# è¿è¡ŒæœåС噍
dotnet run --project WIDESEAWCS_Server
# è¿è¡Œæµ‹è¯•
dotnet test WIDESEAWCS_Tests
```
**服务器端口**:API è¿è¡Œåœ¨ `http://*:9292`(可在 `appsettings.json` ä¸­é…ç½®ï¼‰
---
## æž¶æž„
### å‰ç«¯æž¶æž„ (Vue 3)
**技术栈**:
- Vue 3 + Vite
- Element Plus UI æ¡†æž¶
- Vue Router(hash æ¨¡å¼ï¼‰
- Vuex çŠ¶æ€ç®¡ç†
- Axios HTTP è¯·æ±‚
- SignalR å®žæ—¶é€šä¿¡ï¼ˆå¯é€‰ï¼‰
**关键目录**:
- `src/views/` - é¡µé¢ç»„件(Home、Login、system、basicinfo、taskinfo、charts)
- `src/components/basic/` - å¯å¤ç”¨ç»„件,包括 `ViewGrid`(数据表格组件)
- `src/api/` - HTTP å®¢æˆ·ç«¯ï¼ˆ`http.js`),带令牌管理和拦截器
- `src/router/` - è·¯ç”±å®šä¹‰ï¼Œå¸¦èº«ä»½éªŒè¯å®ˆå«
- `src/store/` - Vuex å­˜å‚¨ï¼Œç”¨äºŽç”¨æˆ·ä¿¡æ¯å’Œæƒé™
- `src/uitils/` - å·¥å…·å‡½æ•°
**HTTP å®¢æˆ·ç«¯** (`src/api/http.js`):
- åŸºç¡€ URL é»˜è®¤å€¼ï¼šå¼€å‘环境(`http://127.0.0.1:9292/`)、生产环境(`http://115.159.85.185:9292/`)
- è‡ªåŠ¨åŒ…å« `Authorization: Bearer {token}` è¯·æ±‚头
- æ”¶åˆ° `wideseawcs_exp` å“åº”头时自动刷新令牌
- 401 è‡ªåŠ¨é‡å®šå‘åˆ°ç™»å½•é¡µ
- å¯¼å‡ºæ–¹æ³•:`post()`、`get()`、`download()`、`ajax()`
**全局属性**(在 `main.js` ä¸­æŒ‚载):
- `this.$http` - HTTP å®¢æˆ·ç«¯
- `this.base` - é€šç”¨å·¥å…·
- `this.permission` - æƒé™æ£€æŸ¥
- `this.$global` - å…¨å±€é…ç½®ï¼ˆSignalR å¯ç”¨æ ‡å¿—、表格标签显示)
### åŽç«¯æž¶æž„ (ASP.NET Core)
**技术栈**:
- ASP.NET Core 6.0 Web API
- Autofac DI,使用 `IDependency` æ ‡è®°æŽ¥å£å®žçŽ°è‡ªåŠ¨æ³¨å†Œ
- Quartz.NET å®šæ—¶ä»»åŠ¡ï¼ˆè®¾å¤‡é€šä¿¡å¾ªçŽ¯ï¼‰
- SqlSugar ORM æ•°æ®åº“访问
- Redis(通过 `WIDESEAWCS_RedisService` å®žçް L1+L2 æ··åˆç¼“存)
- TCP Socket æœåŠ¡å™¨ï¼ˆç«¯å£ 2000)用于实时设备通信
- HslCommunication åº“用于 PLC/硬件通信
**项目结构**:
```
WIDESEAWCS_Server/          # ä¸» API æœåС噍
WIDESEAWCS_Core/            # æ ¸å¿ƒåŸºç¡€è®¾æ–½ï¼šåŸºç±»ã€DI、扩展、中间件
WIDESEAWCS_Model/           # æ•°æ®æ¨¡åž‹å’Œ DTO
WIDESEAWCS_Communicator/    # ç¡¬ä»¶é€šä¿¡é©±åŠ¨ï¼ˆè¥¿é—¨å­ã€æ¬§å§†é¾™ã€Modbus ç­‰ï¼‰
WIDESEAWCS_QuartzJob/       # ä»»åŠ¡è°ƒåº¦åŸºç¡€è®¾æ–½å’Œè®¾å¤‡æŠ½è±¡
WIDESEAWCS_Tasks/           # Quartz ä»»åŠ¡å®žçŽ°ï¼ˆè®¾å¤‡é€šä¿¡å¾ªçŽ¯ï¼‰
WIDESEAWCS_RedisService/    # Redis æœåŠ¡ï¼šç¼“å­˜ã€é”ã€è®¡æ•°å™¨ã€å‘å¸ƒè®¢é˜…
WIDESEAWCS_*Repository/     # æ•°æ®è®¿é—®å±‚实现
WIDESEAWCS_*Service/        # ä¸šåŠ¡æœåŠ¡å±‚
WIDESEAWCS_Tests/           # å•元测试
```
**依赖注入模式**:
- å®žçް `IDependency` æ ‡è®°æŽ¥å£çš„æœåŠ¡ç”± Autofac **自动注册**
- ä½äºŽ `AutofacModuleRegister` ä¸­æ‰«ææ‰€æœ‰ç¨‹åºé›†
- æ·»åŠ å‰ä½¿ç”¨ `services.Remove()` è¦†ç›–现有注册
**缓存层** (`ICacheService`):
- L1(内存)+ L2(Redis)混合缓存
- å®žçŽ°ï¼š`MemoryCacheService`、`RedisCacheService`、`HybridCacheService`
- å¸¸ç”¨æ–¹æ³•:`Add`、`Get<T>`、`Remove`、`RemoveByPrefix`、`GetOrAdd<T>`
**设备通信**:
- ä»»åŠ¡ç»§æ‰¿ `JobBase` å¹¶å®žçް `IJob`
- è®¾å¤‡ç±»åž‹ï¼š`IStackerCrane`(堆垛机)、`IConveyorLine`(输送线)、`IShuttleCar`(穿梭车)、`IRobot`(机械手)
- é€šä¿¡å™¨ï¼š`SiemensS7Communicator`、`OmronEtherNetCommunicator`、`ModbusTcpCommunicator`、`SerialPortCommunicator`
- TCP Socket æœåŠ¡å™¨ï¼ˆç«¯å£ 2000)由 `SocketServerHostedService` ç®¡ç†
---
## å…³é”®é›†æˆç‚¹
### ç³»ç»Ÿé›†æˆ URL (BaseAPI å¸¸é‡)
- WMS:`http://localhost:9291/api/`
- WCS(本服务器):`http://localhost:9292/api/`
- MES:`http://localhost:9293/api/`
- ERP:`http://localhost:9294/api/`
### æœºæ¢°æ‰‹é€šä¿¡ç³»ç»Ÿ
机械手控制的模块化架构:
- `RobotClientManager` - TCP å®¢æˆ·ç«¯è¿žæŽ¥ç®¡ç†
- `RobotStateManager` - çº¿ç¨‹å®‰å…¨çš„æœºæ¢°æ‰‹çŠ¶æ€ç¼“å­˜
- `RobotMessageHandler` - TCP æ¶ˆæ¯è§£æž
- `RobotTaskProcessor` - ä»»åŠ¡æ‰§è¡Œå’ŒçŠ¶æ€è½¬æ¢
- ä»»åŠ¡ç±»åž‹ï¼š`GroupPallet (500)` ç»„盘、`ChangePallet (510)` æ¢ç›˜ã€`SplitPallet (520)` æ‹†ç›˜
### é…ç½® (appsettings.json)
关键设置:
- `"urls": "http://*:9292"` - æœåŠ¡å™¨ç«¯å£
- `"QuartzJobAutoStart": true` - è‡ªåŠ¨å¯åŠ¨å®šæ—¶ä»»åŠ¡
- `"SocketServer:Enabled": true` - å¯ç”¨ TCP æœåС噍
- `"RedisConfig:Enabled": true` - å¯ç”¨ Redis ç¼“å­˜
- `"DBType": "SqlServer"` - æ•°æ®åº“类型
---
## å¼€å‘指南
### æ·»åŠ æ–°åŠŸèƒ½
**后端**:
1. åœ¨ `WIDESEAWCS_IService/` ä¸­åˆ›å»ºæœåŠ¡æŽ¥å£
2. åœ¨ `WIDESEAWCS_Service/` ä¸­åˆ›å»ºæœåŠ¡å®žçŽ°ï¼Œå®žçŽ° `IDependency`
3. åœ¨ `WIDESEAWCS_Tasks/` ä¸­åˆ›å»ºä»»åŠ¡ï¼Œç»§æ‰¿ `JobBase` å’Œ `IJob`
4. åœ¨ `WIDESEAWCS_QuartzJob/Device/` ä¸­æ·»åŠ è®¾å¤‡ç±»åž‹
**前端**:
1. åœ¨ `src/views/` ä¸­æ·»åŠ è§†å›¾
2. åœ¨ `src/router/index.js` ä¸­æ·»åŠ è·¯ç”±
3. ä½¿ç”¨ `$http.post()` å’Œ `$http.get()` è¿›è¡Œ API è°ƒç”¨
4. ä½¿ç”¨ `ViewGrid` ç»„件显示数据表格
### ä»£ç é£Žæ ¼
- **C#**:类型/方法/属性使用 PascalCase,局部变量/参数使用 camelCase。4 ç©ºæ ¼ç¼©è¿›ï¼Œå¤§æ‹¬å·æ¢è¡Œã€‚
- **JavaScript/Vue**:遵循现有模式,新组件使用 Vue 3 Composition API
- **注释**:为新增/修改的代码添加详细的中文注释(方法目的、参数、返回值、逐行说明、异常处理)
### é‡è¦è¯´æ˜Ž
- åŽç«¯ä½¿ç”¨ **CamelCase** JSON åºåˆ—化
- æ‰€æœ‰æœåŠ¡é€šè¿‡ Autofac é»˜è®¤ä½¿ç”¨ **scoped** ç”Ÿå‘½å‘¨æœŸ
- Redis è¿žæŽ¥åœ¨é¦–次访问时延迟初始化
- åœ¨ä»»åŠ¡ä¸­ä½¿ç”¨ `ConsoleHelper.WriteSuccessLine()` / `WriteErrorLine()` è¿›è¡ŒæŽ§åˆ¶å°è¾“出
- TCP Socket æœåŠ¡å™¨ç‹¬ç«‹äºŽ HTTP API è¿è¡Œ
Code/WCS/WIDESEAWCS_Client/.omc/project-memory.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,207 @@
{
  "version": "1.0.0",
  "lastScanned": 1774322743799,
  "projectRoot": "d:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Client",
  "techStack": {
    "languages": [
      {
        "name": "JavaScript/TypeScript",
        "version": null,
        "confidence": "high",
        "markers": [
          "package.json"
        ]
      }
    ],
    "frameworks": [
      {
        "name": "vue",
        "version": "3.2.37",
        "category": "frontend"
      },
      {
        "name": "vite",
        "version": "5.0.0",
        "category": "build"
      }
    ],
    "packageManager": "pnpm",
    "runtime": null
  },
  "build": {
    "buildCommand": "pnpm build",
    "testCommand": null,
    "lintCommand": "pnpm lint",
    "devCommand": null,
    "scripts": {
      "serve": "vite",
      "build": "vite build",
      "preview": "vite preview",
      "lint": "eslint --ext .js,.vue src"
    }
  },
  "conventions": {
    "namingStyle": null,
    "importStyle": null,
    "testPattern": null,
    "fileOrganization": "type-based"
  },
  "structure": {
    "isMonorepo": false,
    "workspaces": [],
    "mainDirectories": [
      "public",
      "src",
      "tests"
    ],
    "gitBranches": {
      "defaultBranch": "master",
      "branchingStrategy": null
    }
  },
  "customNotes": [],
  "directoryMap": {
    "config": {
      "path": "config",
      "purpose": "Configuration files",
      "fileCount": 1,
      "lastAccessed": 1774322743642,
      "keyFiles": [
        "buttons.js"
      ]
    },
    "dist": {
      "path": "dist",
      "purpose": "Distribution/build output",
      "fileCount": 3,
      "lastAccessed": 1774322743642,
      "keyFiles": [
        "index.html",
        "wcslogo.png",
        "wms_d.png"
      ]
    },
    "public": {
      "path": "public",
      "purpose": "Public files",
      "fileCount": 3,
      "lastAccessed": 1774322743680,
      "keyFiles": [
        "index.html",
        "wcslogo.png",
        "wms_d.png"
      ]
    },
    "src": {
      "path": "src",
      "purpose": "Source code",
      "fileCount": 2,
      "lastAccessed": 1774322743680,
      "keyFiles": [
        "App.vue",
        "main.js"
      ]
    },
    "tests": {
      "path": "tests",
      "purpose": "Test files",
      "fileCount": 0,
      "lastAccessed": 1774322743682,
      "keyFiles": []
    },
    "dist\\assets": {
      "path": "dist\\assets",
      "purpose": "Static assets",
      "fileCount": 80,
      "lastAccessed": 1774322743684,
      "keyFiles": [
        "401-D9QhAVFF.js",
        "404-DCIcd6re.js",
        "Audit-C52MvHzW.css"
      ]
    },
    "dist\\static": {
      "path": "dist\\static",
      "purpose": "Static files",
      "fileCount": 1,
      "lastAccessed": 1774322743684,
      "keyFiles": [
        "login_bg.png"
      ]
    },
    "public\\static": {
      "path": "public\\static",
      "purpose": "Static files",
      "fileCount": 1,
      "lastAccessed": 1774322743685,
      "keyFiles": [
        "login_bg.png"
      ]
    },
    "src\\api": {
      "path": "src\\api",
      "purpose": "API routes",
      "fileCount": 3,
      "lastAccessed": 1774322743686,
      "keyFiles": [
        "http.js",
        "permission.js",
        "useTest.js"
      ]
    },
    "src\\assets": {
      "path": "src\\assets",
      "purpose": "Static assets",
      "fileCount": 1,
      "lastAccessed": 1774322743687,
      "keyFiles": [
        "logo.png"
      ]
    },
    "src\\components": {
      "path": "src\\components",
      "purpose": "UI components",
      "fileCount": 0,
      "lastAccessed": 1774322743688,
      "keyFiles": []
    },
    "src\\views": {
      "path": "src\\views",
      "purpose": "View templates",
      "fileCount": 3,
      "lastAccessed": 1774322743689,
      "keyFiles": [
        "Home.vue",
        "Index.vue",
        "Login.vue"
      ]
    }
  },
  "hotPaths": [
    {
      "path": "src\\views\\Index.vue",
      "accessCount": 2,
      "lastAccessed": 1774325401660,
      "type": "directory"
    },
    {
      "path": "src\\views\\fix_encoding.js",
      "accessCount": 1,
      "lastAccessed": 1774325444193,
      "type": "file"
    },
    {
      "path": "src\\views\\fix.js",
      "accessCount": 1,
      "lastAccessed": 1774325462466,
      "type": "file"
    },
    {
      "path": "src\\views\\replacements.json",
      "accessCount": 1,
      "lastAccessed": 1774325476630,
      "type": "file"
    }
  ],
  "userDirectives": []
}
Code/WCS/WIDESEAWCS_Client/.yarn/install-state.gz
Binary files differ
Code/WCS/WIDESEAWCS_Client/README.md
ÎļþÒÑɾ³ý
Code/WCS/WIDESEAWCS_Client/VITE_MIGRATION_SUMMARY.md
ÎļþÒÑɾ³ý
Code/WCS/WIDESEAWCS_Client/src/extension/system/Sys_Tenant.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
// è¯¥æ‰©å±•文件用于租户页面的前端扩展。
// æ–¹æ³•目的:在不修改通用 view-grid ç»„件的前提下,预留查询前后、保存前后的业务扩展入口。
// å‚数说明:各方法参数由框架回调传入(如搜索参数、表单数据、行数据)。
// è¿”回值说明:返回 true è¡¨ç¤ºç»§ç»­æ‰§è¡Œæ¡†æž¶é»˜è®¤æµç¨‹ï¼Œè¿”回 false è¡¨ç¤ºä¸­æ–­é»˜è®¤æµç¨‹ã€‚
// å¼‚常处理说明:当前扩展不抛出异常,若后续增加网络调用,请在对应方法内使用 try-catch å¹¶è®°å½•关键上下文。
let extension = {
  components: {
    gridHeader: "",
    gridBody: "",
    gridFooter: "",
    modelHeader: "",
    modelBody: "",
    modelFooter: "",
  },
  tableAction: "",
  buttons: { view: [], box: [], detail: [] },
  methods: {
    // æ–¹æ³•目的:页面初始化前执行,可用于调整按钮、列配置。
    // å‚数含义:无。
    // è¿”回值:无。
    onInit() {},
    // æ–¹æ³•目的:页面初始化完成后执行,可用于加载附加数据。
    // å‚数含义:无。
    // è¿”回值:无。
    onInited() {},
    // æ–¹æ³•目的:查询前参数预处理。
    // å‚数含义:param ä¸ºå½“前查询条件对象。
    // è¿”回值:true ç»§ç»­æŸ¥è¯¢ï¼Œfalse ç»ˆæ­¢æŸ¥è¯¢ã€‚
    searchBefore(param) {
      return true;
    },
    // æ–¹æ³•目的:查询结果后处理。
    // å‚数含义:result ä¸ºåŽç«¯è¿”回结果。
    // è¿”回值:true ç»§ç»­æ¸²æŸ“,false å¯ç”¨äºŽé˜»æ–­åŽç»­å¤„理。
    searchAfter(result) {
      return true;
    },
    // æ–¹æ³•目的:新增保存前校验或补充字段。
    // å‚数含义:formData ä¸ºå¾…提交表单对象。
    // è¿”回值:true ç»§ç»­ä¿å­˜ï¼Œfalse ç»ˆæ­¢ä¿å­˜ã€‚
    addBefore(formData) {
      return true;
    },
    // æ–¹æ³•目的:编辑保存前校验或补充字段。
    // å‚数含义:formData ä¸ºå¾…提交表单对象。
    // è¿”回值:true ç»§ç»­ä¿å­˜ï¼Œfalse ç»ˆæ­¢ä¿å­˜ã€‚
    updateBefore(formData) {
      return true;
    },
    // æ–¹æ³•目的:表格行点击事件扩展。
    // å‚数含义:row ä¸ºè¡Œæ•°æ®ï¼Œcolumn ä¸ºåˆ—配置,event ä¸ºåŽŸå§‹äº‹ä»¶å¯¹è±¡ã€‚
    // è¿”回值:无。
    rowClick({ row, column, event }) {},
    // æ–¹æ³•目的:新增/编辑弹窗打开后扩展处理。
    // å‚数含义:row ä¸ºå½“前行数据;新增时可能为空对象。
    // è¿”回值:无。
    modelOpenAfter(row) {},
  },
};
export default extension;
Code/WCS/WIDESEAWCS_Client/src/extension/taskinfo/taskHty.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
// è¯¥æ‰©å±•文件用于任务历史页面的业务扩展。
// æ–¹æ³•目的:统一预留列表查询、保存前后和弹窗打开时的扩展入口,保持与项目内 task é¡µé¢ä¸€è‡´çš„æ‰©å±•点。
// å‚数含义:由框架按生命周期传入,包含查询参数、表单数据、行数据等上下文。
// è¿”回值说明:返回 true ä»£è¡¨ç»§ç»­é»˜è®¤è¡Œä¸ºï¼Œè¿”回 false ä»£è¡¨ä¸­æ–­é»˜è®¤è¡Œä¸ºã€‚
// å¼‚常处理说明:当前未引入外部调用;若后续新增接口调用,需在方法内补充 try-catch å¹¶è®°å½•关键业务参数。
let extension = {
  components: {
    gridHeader: "",
    gridBody: "",
    gridFooter: "",
    modelHeader: "",
    modelBody: "",
    modelFooter: "",
  },
  tableAction: "",
  buttons: { view: [], box: [], detail: [] },
  methods: {
    // æ–¹æ³•目的:页面初始化时执行自定义逻辑。
    // å‚数:无。
    // è¿”回值:无。
    onInit() {},
    // æ–¹æ³•目的:页面初始化完成后执行自定义逻辑。
    // å‚数:无。
    // è¿”回值:无。
    onInited() {},
    // æ–¹æ³•目的:查询前处理查询条件。
    // å‚数:param æŸ¥è¯¢å‚数对象。
    // è¿”回值:true ç»§ç»­æŸ¥è¯¢ï¼Œfalse ç»ˆæ­¢æŸ¥è¯¢ã€‚
    searchBefore(param) {
      return true;
    },
    // æ–¹æ³•目的:查询后处理返回结果。
    // å‚数:result åŽç«¯è¿”回数据。
    // è¿”回值:true ç»§ç»­æ¸²æŸ“,false ç»ˆæ­¢åŽç»­å¤„理。
    searchAfter(result) {
      return true;
    },
    // æ–¹æ³•目的:新增前校验或补充提交字段。
    // å‚数:formData è¡¨å•提交对象。
    // è¿”回值:true ç»§ç»­æäº¤ï¼Œfalse ç»ˆæ­¢æäº¤ã€‚
    addBefore(formData) {
      return true;
    },
    // æ–¹æ³•目的:编辑前校验或补充提交字段。
    // å‚数:formData è¡¨å•提交对象。
    // è¿”回值:true ç»§ç»­æäº¤ï¼Œfalse ç»ˆæ­¢æäº¤ã€‚
    updateBefore(formData) {
      return true;
    },
    // æ–¹æ³•目的:点击行时扩展处理。
    // å‚数:row è¡Œæ•°æ®ï¼Œcolumn åˆ—配置,event åŽŸå§‹äº‹ä»¶ã€‚
    // è¿”回值:无。
    rowClick({ row, column, event }) {},
    // æ–¹æ³•目的:编辑弹窗打开后执行扩展逻辑。
    // å‚数:row å½“前行数据。
    // è¿”回值:无。
    modelOpenAfter(row) {},
  },
};
export default extension;
Code/WCS/WIDESEAWCS_Client/src/router/viewGird.js
@@ -1,4 +1,3 @@
let viewgird = [
  {
    path: '/Sys_Log',
@@ -15,7 +14,6 @@
    name: 'permission',
    component: () => import('@/views/system/Permission.vue')
  },
  {
    path: '/Sys_Dictionary',
    name: 'Sys_Dictionary',
@@ -25,38 +23,62 @@
    path: '/Sys_Role',
    name: 'Sys_Role',
    component: () => import('@/views/system/Sys_Role.vue')
  }, {
  },
  {
    path: '/Sys_Role1',
    name: 'Sys_Role1',
    component: () => import('@/views/system/Sys_Role1.vue')
  }, {
  },
  {
    path: '/Sys_DictionaryList',
    name: 'Sys_DictionaryList',
    component: () => import('@/views/system/Sys_DictionaryList.vue')
  }, {
  },
  {
    path: '/Sys_Tenant',
    name: 'Sys_Tenant',
    component: () => import('@/views/system/Sys_Tenant.vue')
  },
  {
    path: '/deviceInfo',
    name: 'deviceInfo',
    component: () => import('@/views/quartzJob/deviceInfo.vue')
  }, {
  },
  {
    path: '/deviceProtocol',
    name: 'deviceProtocol',
    component: () => import('@/views/quartzJob/deviceProtocol.vue')
  }, {
  },
  {
    path: '/deviceProtocolDetail',
    name: 'deviceProtocolDetail',
    component: () => import('@/views/quartzJob/deviceProtocolDetail.vue')
  }, {
  },
  {
    path: '/dispatchInfo',
    name: 'dispatchInfo',
    component: () => import('@/views/quartzJob/dispatchInfo.vue')
  }, {
  },
  {
    path: '/scheduler',
    name: 'scheduler',
    component: () => import('@/views/quartzJob/scheduler.vue')
  },
  {
    path: '/task',
    name: 'task',
    component: () => import('@/views/taskinfo/task.vue')
  }, {
  },
  {
    path: '/taskHty',
    name: 'taskHty',
    component: () => import('@/views/taskinfo/taskHty.vue')
  },
  {
    path: '/router',
    name: 'router',
    component: () => import('@/views/basicinfo/router.vue')
  }]
  }
];
export default viewgird
export default viewgird;
Code/WCS/WIDESEAWCS_Client/src/views/.omc/state/last-tool-error.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "tool_name": "Bash",
  "tool_input_preview": "{\"command\":\"cd \\\"D:\\\\Git\\\\ShanMeiXinNengYuan\\\\Code\\\\WCS\\\\WIDESEAWCS_Client\\\\src\\\\views\\\" && node fix.js\",\"description\":\"Run Node.js script to fix encoding issues\"}",
  "error": "Exit code 1\n<anonymous_script>:6\r\n  \"婵炴垵鐗婃导鍛村礆濡ゅ嫨鈧?: \"消息通知\",\r\n                    ^\r\n\r\nSyntaxError: Expected ':' after property name in JSON at position 131 (line 6 column 21)\r\n    at JSON.parse (<anonymous>)\r\n    at Object.<anonymous> (D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Client\\src\\views\\fix.js:9:27)\r\n    at Module._compile (node:internal/modules/cjs/loader:1761:14)\r\n    at Object..js (node:internal/modules/cjs/loader:1893:10)\r\n    at Module.load (node:internal/modules/cjs/loader:1481...",
  "timestamp": "2026-03-24T04:11:22.878Z",
  "retry_count": 4
}
Code/WCS/WIDESEAWCS_Client/src/views/Index.vue
@@ -151,7 +151,7 @@
      otherTabs: true,
      menuLeft: 0,
      menuTop: 0,
      //  contextMenuVisible: false, // å³é”®å…³é—­æ˜¾/隐
      //  contextMenuVisible: false, // å³é”®å…³é—­æ˜¯å¦å¯è§
    };
  },
  setup(props, context) {
@@ -178,21 +178,21 @@
    ]);
    const links = ref([
      // {
      //   text: "框架视频",
      //   text: "框架视频教程",
      //   path: "https://www.cctalk.com/m/group/90268531",
      //   id: -3,
      // },
      // { text: "大屏数据", path: "/bigdata", id: -3 },
      // { text: "大数据", path: "/bigdata", id: -3 },
      // {
      //   text: "框架文档",
      //   path: "http://v2.volcore.xyz/document/guide",
      //   id: -2,
      // },   {
      //   text: "框架企业版",
      //   text: "框架产品",
      //   path: "http://pro.volcore.xyz/",
      //   id: 10,
      // },
      { text: "个人中心", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
      { text: "个人信息", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
      {
        text: "安全退出",
        path: "/login",
@@ -274,11 +274,11 @@
        navigation.push({
          //  orderNo: String(navigation.length),// åºå·
          id: item.id + "",
          name: item.name || item.text || "无标题",
          name: item.name || item.text || "无标签",
          path: item.path,
          query: item.query, //2021.03.20修复自定义二次打开$tabs时参数丢失的问题
        });
        //新打开的tab移至最后一个选项
        //新建打开的tab选中到最后一个选项
        selectId.value = navigation.length - 1 + "";
      } else {
        selectId.value = _index + "";
@@ -290,7 +290,7 @@
        // this.$router.push(item);
      }
      currentMenuId.value = item.id * 1;
      // tab菜单绑定右键事件
      // tab右键菜单绑定点击事件
      proxy.$nextTick(function (e) {
        proxy.bindRightClickMenu(true);
      });
@@ -399,7 +399,7 @@
        visibleItem.right = selectMenuIndex.value != navigation.length - 1;
        //只有两个菜单时不显示关闭左边
        visibleItem.left = navigation.length != 2;
        //只有两个菜单时不显示关闭其他
        //只有两个菜单时不显示关闭其他菜单
        visibleItem.other = navigation.length != 2;
      }
      contextMenuVisible.value = true;
@@ -422,7 +422,7 @@
      });
    };
    /**
     * å…³é—­å…¶å®ƒæ ‡ç­¾é¡µ
     * å…³é—­å…¶ä»–标签页
     * @param {*} par å…³é—­ç±»åž‹(left,right,other)
     */
    const closeTabs = (value) => {
@@ -457,7 +457,7 @@
          break;
        }
        default: {
          //关闭所有
          //关闭所有标签
          navigation.splice(1, navigation.length);
          toHome();
          break;
@@ -473,7 +473,7 @@
    watch(
      () => contextMenuVisible.value,
      (newVal, oldVal) => {
        // ç›‘视
        // ç›‘视 contextMenuVisible çš„变化,添加或移除点击事件监听器
        if (newVal) {
          document.body.addEventListener("click", closeTabsMenu);
        } else {
@@ -485,6 +485,61 @@
    /**
     * ç³»ç»Ÿåˆ›å»ºå¼€å§‹
     */
    /**
     * æ–¹æ³•目的:补齐后端菜单未配置时的新页面入口,避免新增页面无入口。
     * å‚数含义:data ä¸ºåŽç«¯è¿”回的菜单数组。
     * è¿”回值:返回补齐后的菜单数组。
     * å…³é”®é€»è¾‘:仅在菜单中不存在相同 url æ—¶è¿½åŠ é»˜è®¤èœå•ï¼Œé¿å…è¦†ç›–å·²æœ‰é…ç½®ã€‚
     * å¼‚常处理:该方法仅操作内存数据,不涉及外部调用,异常由上层流程统一捕获。
     */
    const ensureBuiltinMenus = (data) => {
      const menus = Array.isArray(data) ? data : [];
      const exists = (url) => menus.some((m) => (m.url || "") === url);
      const maxId = menus.reduce((max, item) => {
        const current = Number(item.id);
        return Number.isFinite(current) ? Math.max(max, current) : max;
      }, 0);
      const defaultMenus = [
        {
          id: maxId + 1001,
          name: "租户管理",
          url: "/Sys_Tenant",
          parentId: 0,
          icon: "el-icon-office-building",
          enable: 1,
          tableName: "Sys_Tenant",
          permission: ["Search", "Add", "Update", "Delete"],
        },
        {
          id: maxId + 1002,
          name: "任务历史",
          url: "/taskHty",
          parentId: 0,
          icon: "el-icon-time",
          enable: 1,
          tableName: "taskHty",
          permission: ["Search", "Export"],
        },
        {
          id: maxId + 1003,
          name: "调度控制",
          url: "/scheduler",
          parentId: 0,
          icon: "el-icon-video-play",
          enable: 1,
          tableName: "scheduler",
          permission: ["Search", "Update"],
        },
      ];
      defaultMenus.forEach((menu) => {
        if (!exists(menu.url)) {
          menus.push(menu);
        }
      });
      return menus;
    };
    const created = () => {
      let _theme = localStorage.getItem("vol3_theme");
      if (_theme) {
@@ -501,6 +556,7 @@
      Object.assign(_config.$tabs, { open: open, close: close });
      http.get("api/Sys_Menu/getTreeMenu", {}, true).then((data) => {
        data = ensureBuiltinMenus(data);
        data.push({ id: "1", name: "首页", url: "/home" }); // ä¸ºäº†èŽ·å–é€‰ä¸­id使用
        data.forEach((d) => {
          d.path = (d.url || "").replace("/Manager", "");
@@ -513,7 +569,7 @@
        menuOptions.value = data;
        permissionInited.value = true;
        //开启消息推送(main.js中设置是否开启signalR)2022.05.05
         //开启消息推送(main.js中设置是否开启signalR)2022.05.05
        if (_config.$global.signalR) {
          MessageConfig(http, (result) => {
            messageList.unshift(result);
@@ -532,7 +588,7 @@
          item = links.value.find((x) => {
            return x.path == router.currentRoute.value.path; //this.$route.path;
          });
          //查找最后一次跳转的页面
          //查找最后访问的页面
          if (!item) {
            item = getItem();
          }
@@ -579,7 +635,7 @@
    };
  },
  /**
   * æŒ‚载钩子函数
   * æŒ‚载完成后执行的函数
   */
  mounted() {
    let _date = showTime();
@@ -594,9 +650,9 @@
  methods: {
    /**
     * ç»‘定右键事件
     * @param {*} enable æ˜¯å¦å¯ç”¨å³é”®äº‹ä»¶[true:启用;false:禁用;]
     * @param {*} $event äº‹ä»¶
     * ç»‘定右键菜单事件
     * @param {*} enable æ˜¯å¦å¯ç”¨å³é”®èœå•事件[true:启用;false:禁用;]
     * @param {*} $event äº‹ä»¶å¯¹è±¡
     */
    bindRightClickMenu(enable) {
      if (!enable) return;
Code/WCS/WIDESEAWCS_Client/src/views/fix.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
const fs = require('fs');
const path = require('path');
const filePath = path.join(__dirname, 'Index.vue');
let content = fs.readFileSync(filePath, 'utf8');
// Read replacements from external JSON to avoid encoding issues in script
const replacements = JSON.parse(fs.readFileSync(path.join(__dirname, 'replacements.json'), 'utf8'));
for (const [old, newStr] of Object.entries(replacements)) {
    content = content.split(old).join(newStr);
}
fs.writeFileSync(filePath, content, 'utf8');
console.log('Fixed ' + Object.keys(replacements).length + ' replacements');
Code/WCS/WIDESEAWCS_Client/src/views/quartzJob/scheduler.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,136 @@
<template>
  <div class="scheduler-page">
    <el-card shadow="never" class="card-item">
      <template #header>
        <span>调度服务控制</span>
      </template>
      <div class="button-row">
        <el-button type="success" @click="handleSchedulerAction('StartSchedule')">启动调度服务</el-button>
        <el-button type="warning" @click="handleSchedulerAction('StopSchedule')">停止调度服务</el-button>
      </div>
    </el-card>
    <el-card shadow="never" class="card-item">
      <template #header>
        <span>任务调度操作</span>
      </template>
      <el-form :model="jobForm" label-width="110px" class="form-wrap">
        <el-row :gutter="16">
          <el-col :span="8">
            <el-form-item label="任务名称">
              <el-input v-model="jobForm.name" placeholder="请输入任务名称" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="任务分组">
              <el-input v-model="jobForm.jobGroup" placeholder="请输入任务分组" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="执行类名">
              <el-input v-model="jobForm.className" placeholder="请输入执行类名" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div class="button-row">
        <el-button type="primary" @click="handleSchedulerAction('PauseJob')">暂停任务</el-button>
        <el-button type="primary" @click="handleSchedulerAction('ResumeJob')">恢复任务</el-button>
        <el-button type="primary" @click="handleSchedulerAction('ExecuteJob')">立即执行</el-button>
        <el-button type="danger" @click="handleSchedulerAction('DeleteScheduleJob')">删除任务</el-button>
      </div>
    </el-card>
  </div>
</template>
<script>
import { defineComponent, ref } from "vue";
import { ElMessage } from "element-plus";
import http from "@/api/http";
export default defineComponent({
  setup() {
    const jobForm = ref({
      name: "",
      jobGroup: "",
      className: "",
      assemblyName: "",
      intervalSecond: 0,
      beginTime: "",
      endTime: "",
      remark: "",
    });
    /**
     * æ–¹æ³•目的:校验任务级调度操作所需参数,避免提交无效请求。
     * å‚数含义:无(直接读取当前 jobForm)。
     * è¿”回值:true è¡¨ç¤ºæ ¡éªŒé€šè¿‡ï¼›false è¡¨ç¤ºæ ¡éªŒå¤±è´¥å¹¶å¼¹å‡ºæç¤ºã€‚
     * å¼‚常处理:本地校验不抛异常,通过消息提示引导用户补全关键字段。
     */
    const validateJobPayload = () => {
      if (!jobForm.value.name || !jobForm.value.jobGroup || !jobForm.value.className) {
        ElMessage.error("请先填写任务名称、任务分组、执行类名");
        return false;
      }
      return true;
    };
    /**
     * æ–¹æ³•目的:统一处理调度控制请求,兼容 GET ä¸Ž POST ä¸¤ç±»æŽ¥å£ã€‚
     * å‚数含义:action ä¸ºè°ƒåº¦åŠ¨ä½œåç§°ï¼Œå¯¹åº”åŽç«¯ api/Scheduler/{action}。
     * è¿”回值:Promise<void>,执行完成后通过消息提示结果。
     * å…³é”®é€»è¾‘:
     * 1. å…¨å±€åŠ¨ä½œï¼ˆå¯åŠ¨/停止)走 GET。
     * 2. ä»»åŠ¡åŠ¨ä½œï¼ˆæš‚åœ/恢复/执行/删除)走 POST,并提交 jobForm。
     * 3. æŽ¥å£è¿”回 status=false æ—¶æç¤ºåŽç«¯ message。
     * å¼‚常处理:使用 try-catch æ•获请求异常并保留错误上下文输出。
     */
    const handleSchedulerAction = async (action) => {
      try {
        const isGlobalAction = action === "StartSchedule" || action === "StopSchedule";
        if (!isGlobalAction && !validateJobPayload()) {
          return;
        }
        let result;
        if (isGlobalAction) {
          result = await http.get(`/api/Scheduler/${action}`, {}, true);
        } else {
          result = await http.post(`/api/Scheduler/${action}`, jobForm.value, true);
        }
        if (result && result.status) {
          ElMessage.success(result.message || "操作成功");
          return;
        }
        ElMessage.error((result && result.message) || "操作失败");
      } catch (error) {
        console.error("调度请求异常", { action, jobForm: jobForm.value, error });
        ElMessage.error("调度请求失败,请稍后重试");
      }
    };
    return {
      jobForm,
      handleSchedulerAction,
    };
  },
});
</script>
<style scoped>
.scheduler-page {
  padding: 12px;
}
.card-item {
  margin-bottom: 12px;
}
.button-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}
</style>
Code/WCS/WIDESEAWCS_Client/src/views/system/Sys_Tenant.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,238 @@
<template>
  <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_Tenant.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const tenantTypeOptions = [
      { key: 0, value: "默认租户" },
      { key: 1, value: "企业租户" },
      { key: 2, value: "平台租户" },
    ];
    const dbTypeOptions = [
      { key: 0, value: "SqlServer" },
      { key: 1, value: "MySql" },
      { key: 2, value: "PostgreSQL" },
      { key: 3, value: "Oracle" },
      { key: 4, value: "Sqlite" },
    ];
    const statusOptions = [
      { key: 1, value: "启用" },
      { key: 0, value: "禁用" },
    ];
    const table = ref({
      key: "tenantId",
      footer: "Foots",
      cnName: "租户管理",
      name: "Sys_Tenant",
      url: "/tenant/",
      sortName: "tenantId",
    });
    const editFormFields = ref({
      tenantName: "",
      tenantType: 0,
      dbType: 0,
      connectionString: "",
      status: 1,
      remark: "",
    });
    const editFormOptions = ref([
      [
        { title: "租户名称", required: true, field: "tenantName", type: "string" },
        {
          title: "租户类型",
          required: true,
          field: "tenantType",
          type: "select",
          data: tenantTypeOptions,
        },
      ],
      [
        {
          title: "数据库类型",
          required: true,
          field: "dbType",
          type: "select",
          data: dbTypeOptions,
        },
        {
          title: "状态",
          required: true,
          field: "status",
          type: "select",
          data: statusOptions,
        },
      ],
      [
        {
          title: "连接字符串",
          required: true,
          field: "connectionString",
          colSize: 12,
          type: "textarea",
        },
      ],
      [{ title: "备注", field: "remark", colSize: 12, type: "textarea" }],
    ]);
    const searchFormFields = ref({
      tenantName: "",
      tenantType: "",
      dbType: "",
      status: "",
    });
    const searchFormOptions = ref([
      [
        { title: "租户名称", field: "tenantName", type: "like" },
        {
          title: "租户类型",
          field: "tenantType",
          type: "select",
          data: tenantTypeOptions,
        },
      ],
      [
        {
          title: "数据库类型",
          field: "dbType",
          type: "select",
          data: dbTypeOptions,
        },
        {
          title: "状态",
          field: "status",
          type: "select",
          data: statusOptions,
        },
      ],
    ]);
    const columns = ref([
      {
        field: "tenantId",
        title: "租户ID",
        type: "int",
        width: 110,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "tenantName",
        title: "租户名称",
        type: "string",
        width: 180,
        require: true,
        align: "left",
      },
      {
        field: "tenantType",
        title: "租户类型",
        type: "int",
        width: 120,
        align: "left",
        bind: { key: "tenantTypeLocal", data: tenantTypeOptions },
      },
      {
        field: "dbType",
        title: "数据库类型",
        type: "int",
        width: 140,
        align: "left",
        bind: { key: "dbTypeLocal", data: dbTypeOptions },
      },
      {
        field: "status",
        title: "状态",
        type: "int",
        width: 100,
        align: "left",
        bind: { key: "tenantStatusLocal", data: statusOptions },
      },
      {
        field: "connectionString",
        title: "连接字符串",
        type: "string",
        width: 320,
        align: "left",
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 160,
        align: "left",
        sort: true,
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 160,
        align: "left",
        sort: true,
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 180,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "",
      table: "",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code/WCS/WIDESEAWCS_Client/src/views/taskinfo/taskHty.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,242 @@
<template>
  <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/taskinfo/taskHty.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    const table = ref({
      key: "taskId",
      footer: "Foots",
      cnName: "任务历史",
      name: "taskHty",
      url: "/Task_Hty/",
      sortName: "insertTime",
    });
    const editFormFields = ref({});
    const editFormOptions = ref([]);
    const searchFormFields = ref({
      taskNum: "",
      palletCode: "",
      roadway: "",
      sourceAddress: "",
      targetAddress: "",
      currentAddress: "",
      nextAddress: "",
      creater: "",
      createDate: "",
      operateType: "",
      insertTime: "",
    });
    const searchFormOptions = ref([
      [
        { title: "任务号", field: "taskNum", type: "int" },
        { title: "托盘编码", field: "palletCode", type: "like" },
        {
          title: "任务类型",
          field: "taskType",
          type: "selectList",
          dataKey: "taskType",
          data: [],
        },
        {
          title: "任务状态",
          field: "taskStatus",
          type: "selectList",
          dataKey: "taskState",
          data: [],
        },
      ],
      [
        { title: "起始地址", field: "sourceAddress", type: "like" },
        { title: "目标地址", field: "targetAddress", type: "like" },
        { title: "当前位置", field: "currentAddress", type: "like" },
        { title: "下一位置", field: "nextAddress", type: "like" },
      ],
      [
        { title: "巷道号", field: "roadway", type: "like" },
        { title: "创建人", field: "creater", type: "like" },
        { title: "操作类型", field: "operateType", type: "like" },
        { title: "移入历史时间", field: "insertTime", type: "datetime" },
      ],
    ]);
    const columns = ref([
      {
        field: "taskId",
        title: "TaskId",
        type: "int",
        width: 90,
        hidden: true,
        readonly: true,
        require: true,
        align: "left",
      },
      {
        field: "taskNum",
        title: "任务号",
        type: "int",
        width: 100,
        align: "left",
      },
      {
        field: "palletCode",
        title: "托盘编码",
        type: "string",
        width: 150,
        align: "left",
      },
      {
        field: "roadway",
        title: "巷道号",
        type: "string",
        width: 90,
        align: "left",
      },
      {
        field: "taskType",
        title: "任务类型",
        type: "int",
        width: 90,
        align: "left",
        bind: { key: "taskType", data: [] },
      },
      {
        field: "taskStatus",
        title: "任务状态",
        type: "int",
        width: 120,
        align: "left",
        bind: { key: "taskState", data: [] },
      },
      {
        field: "sourceAddress",
        title: "起始地址",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "targetAddress",
        title: "目标地址",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "currentAddress",
        title: "当前位置",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "nextAddress",
        title: "下一位置",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "grade",
        title: "优先级",
        type: "int",
        width: 90,
        align: "left",
      },
      {
        field: "sourceId",
        title: "原表主键",
        type: "int",
        width: 100,
        align: "left",
      },
      {
        field: "operateType",
        title: "操作类型",
        type: "string",
        width: 120,
        align: "left",
      },
      {
        field: "insertTime",
        title: "移入历史时间",
        type: "datetime",
        width: 170,
        align: "left",
        sort: true,
      },
      {
        field: "creater",
        title: "创建人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "createDate",
        title: "创建时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "modifier",
        title: "修改人",
        type: "string",
        width: 100,
        align: "left",
      },
      {
        field: "modifyDate",
        title: "修改时间",
        type: "datetime",
        width: 160,
        align: "left",
      },
      {
        field: "remark",
        title: "备注",
        type: "string",
        width: 120,
        align: "left",
      },
    ]);
    const detail = ref({
      cnName: "",
      table: "",
      columns: [],
      sortName: "",
      key: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/memory.json
ÎļþÒÑɾ³ý
Code/WCS/WIDESEAWCS_Server/.vs/WIDESEAWCS_Server/v18/DocumentLayout.json
@@ -3,8 +3,40 @@
  "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{F9886971-C3B2-4334-B014-D5109F2041DE}|WIDESEAWCS_RedisService\\WIDESEAWCS_RedisService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_redisservice\\cache\\hybridcacheservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{F9886971-C3B2-4334-B014-D5109F2041DE}|WIDESEAWCS_RedisService\\WIDESEAWCS_RedisService.csproj|solutionrelative:wideseawcs_redisservice\\cache\\hybridcacheservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\flows\\relocationtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\flows\\relocationtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\commonstackercranejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\flows\\outboundtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\flows\\outboundtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\flows\\inboundtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\flows\\inboundtaskflowservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotmessagehandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotmessagehandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\workflow\\robotworkfloworchestrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\workflow\\robotworkfloworchestrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_systemservices\\sys_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_server\\hostedservice\\apiroutecachewarmuphostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -17,22 +49,6 @@
    {
      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_core\\http\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\http\\http\\httpclienthelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\workflow\\robotworkfloworchestrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\workflow\\robotworkfloworchestrator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_systemservices\\sys_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_dictionaryservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotmessagehandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotmessagehandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_server\\wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\robotjob\\robotjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
@@ -42,7 +58,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 3,
          "SelectedChildIndex": 4,
          "Children": [
            {
              "$type": "Bookmark",
@@ -57,34 +73,61 @@
              "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "HybridCacheService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_RedisService\\Cache\\HybridCacheService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_RedisService\\Cache\\HybridCacheService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_RedisService\\Cache\\HybridCacheService.cs",
              "RelativeToolTip": "WIDESEAWCS_RedisService\\Cache\\HybridCacheService.cs",
              "ViewState": "AgIAABcAAAAAAAAAAAAlwCoAAAAMAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T08:03:50.919Z",
              "EditorCaption": ""
              "$type": "Bookmark",
              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "ApiRouteCacheWarmupHostedService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "RelativeToolTip": "WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "ViewState": "AgIAACMAAAAAAAAAAADwvzYAAAAlAAAAAAAAAA==",
              "DocumentIndex": 0,
              "Title": "RelocationTaskFlowService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\RelocationTaskFlowService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\Flows\\RelocationTaskFlowService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\RelocationTaskFlowService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\Flows\\RelocationTaskFlowService.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAABHAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T08:01:46.997Z",
              "WhenOpened": "2026-03-19T09:35:02.468Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "OutboundTaskFlowService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\OutboundTaskFlowService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\Flows\\OutboundTaskFlowService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\OutboundTaskFlowService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\Flows\\OutboundTaskFlowService.cs",
              "ViewState": "AgIAAEMAAAAAAAAAAAAewEEAAAAiAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T09:34:19.406Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "Title": "InboundTaskFlowService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\InboundTaskFlowService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\Flows\\InboundTaskFlowService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\Flows\\InboundTaskFlowService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\Flows\\InboundTaskFlowService.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T09:34:14.627Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "Title": "ApiRouteCacheWarmupHostedService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "RelativeToolTip": "WIDESEAWCS_Server\\HostedService\\ApiRouteCacheWarmupHostedService.cs",
              "ViewState": "AgIAABoAAAAAAAAAAADwvzIAAAAdAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T08:01:46.997Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "Title": "RedisServiceSetup.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_RedisService\\Extensions\\RedisServiceSetup.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_RedisService\\Extensions\\RedisServiceSetup.cs",
@@ -92,12 +135,11 @@
              "RelativeToolTip": "WIDESEAWCS_RedisService\\Extensions\\RedisServiceSetup.cs",
              "ViewState": "AgIAADQAAAAAAAAAAAAqwCgAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T07:52:38.709Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-19T07:52:38.709Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 11,
              "Title": "HttpClientHelper.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Core\\Http\\HTTP\\HttpClientHelper.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Http\\HTTP\\HttpClientHelper.cs",
@@ -105,60 +147,79 @@
              "RelativeToolTip": "WIDESEAWCS_Core\\Http\\HTTP\\HttpClientHelper.cs",
              "ViewState": "AgIAAA4AAAAAAAAAAAAowBoAAABNAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T07:48:09.389Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-19T07:48:09.389Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 3,
              "Title": "TaskService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAGQBAAAAAAAAAADwv3oBAABOAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T01:42:07.337Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "CommonStackerCraneJob.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
              "ViewState": "AgIAAEoAAAAAAAAAAAAQwF0AAAAzAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T01:42:07.364Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "Title": "Sys_DictionaryService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
              "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_DictionaryService.cs",
              "ViewState": "AgIAADIAAAAAAAAAAAAYwFcAAAAQAAAAAAAAAA==",
              "ViewState": "AgIAAAsAAAAAAAAAAAAIwFcAAAAQAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T07:47:06.312Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-19T07:47:06.312Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 6,
              "Title": "RobotWorkflowOrchestrator.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\Workflow\\RobotWorkflowOrchestrator.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RobotJob\\Workflow\\RobotWorkflowOrchestrator.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\Workflow\\RobotWorkflowOrchestrator.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RobotJob\\Workflow\\RobotWorkflowOrchestrator.cs",
              "ViewState": "AgIAADEAAAAAAAAAAAAkwFcAAAAMAAAAAAAAAA==",
              "ViewState": "AgIAADQAAAAAAAAAAAAkwC8AAAA1AAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-18T09:21:38.852Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-18T09:21:38.852Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 5,
              "Title": "RobotMessageHandler.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\RobotMessageHandler.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RobotJob\\RobotMessageHandler.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\RobotMessageHandler.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RobotJob\\RobotMessageHandler.cs",
              "ViewState": "AgIAABYAAAAAAAAAAAAAwC0AAAAcAAAAAAAAAA==",
              "ViewState": "AgIAABQAAAAAAAAAAADwvzwAAAAwAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-18T09:10:02.533Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-18T09:10:02.533Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 8,
              "Title": "RobotJob.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
              "RelativeToolTip": "WIDESEAWCS_Tasks\\RobotJob\\RobotJob.cs",
              "ViewState": "AgIAADcAAAAAAAAAAAAiwEkAAAANAAAAAAAAAA==",
              "ViewState": "AgIAAEcAAAAAAAAAAAAmwDUAAAAPAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-18T08:56:41.452Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-18T08:56:41.452Z"
            }
          ]
        }
Code/WMS/.omc/state/agent-replay-4cd1f4b9-ad6a-4b8f-8a01-8260579d1f66.jsonl
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
{"t":0,"agent":"a1dd170","agent_type":"unknown","event":"agent_stop","success":true}
{"t":0,"agent":"a5ca246","agent_type":"unknown","event":"agent_stop","success":true}
Code/WMS/.omc/state/idle-notif-cooldown.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "lastSentAt": "2026-03-24T02:40:56.392Z"
}
Code/WMS/.omc/state/subagent-tracking.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
{
  "agents": [],
  "total_spawned": 0,
  "total_completed": 0,
  "total_failed": 0,
  "last_updated": "2026-03-24T02:41:20.073Z"
}
Code/WMS/AGENTS.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
# Repository Guidelines
## é¡¹ç›®ç»“构与模块组织
仓库由两个主项目组成:
- `WIDESEA_WMSServer/`:ASP.NET Core åŽç«¯ï¼ˆè§£å†³æ–¹æ¡ˆï¼š`WIDESEA_WMSServer.sln`)。
- `WIDESEA_WMSClient/`:Vue 3 å‰ç«¯ï¼ˆVite + Yarn)。
后端按职责拆分:`WIDESEA_WMSServer/`(API å¯åŠ¨é¡¹ç›®ï¼‰ã€`WIDESEA_Core/`(基础设施/基类能力)、`WIDESEA_Model/`(实体模型)、`WIDESEA_DTO/`(数据传输对象)、`WIDESEA_I*Service/`(服务接口)、`WIDESEA_*Service/`(服务实现)。前端源码位于 `WIDESEA_WMSClient/src/`,单元测试位于 `WIDESEA_WMSClient/tests/unit/`。
## æž„建、测试与开发命令
后端(在 `WIDESEA_WMSServer` ç›®å½•执行):
- `dotnet restore WIDESEA_WMSServer.sln`:还原 NuGet ä¾èµ–。
- `dotnet build WIDESEA_WMSServer.sln`:构建全部后端项目。
- `dotnet run --project WIDESEA_WMSServer/WIDESEA_WMSServer.csproj`:本地启动 API。
前端(在 `WIDESEA_WMSClient` ç›®å½•执行):
- `npm install`:安装依赖。
- `npm run serve`:启动本地开发服务(Vite)。
- `npm run build`:构建生产资源。
- `npm run lint`:执行 ESLint æ£€æŸ¥ã€‚
## å¼€å‘流程强制规范
- æ‰€æœ‰ä»»åŠ¡å¿…é¡»åœ¨ `Code/WMS/.worktrees/<task-name>` ç‹¬ç«‹ worktree ä¸­å¼€å‘,不直接在主工作区改动。
- åˆ†æ”¯å‘½åç»Ÿä¸€ï¼š`feat/<模块>-<主题>`、`fix/<模块>-<问题>`、`refactor/<模块>-<主题>`、`docs/<主题>`。
- æ¯æ¬¡æäº¤å‰è‡³å°‘执行与改动相关的最小验证(前端改动跑 `npm run lint`;后端改动跑 `dotnet test` æˆ–最小可运行验证)。
- ç¦æ­¢ä¸€æ¬¡æäº¤æ··å…¥æ— å…³é‡æž„、格式化噪声或大面积文件移动。
## ä»£ç é£Žæ ¼ä¸Žå‘½åçº¦å®š
前端使用 Vue Standard ESLint è§„则,缩进为 4 ç©ºæ ¼ï¼ˆè§ `package.json`)。Vue ç»„件采用 PascalCase;扩展配置建议放在 `src/extension/{domain}/{entity}.js`。
后端遵循现有分层与命名:`I{Entity}Service`(接口)、`{Entity}Service`(实现)、`{Entity}Controller`(控制器)。新增代码应保持与现有 Autofac æ³¨å†Œã€åŸºç¡€ Controller/Service æ¨¡å¼ä¸€è‡´ã€‚
默认要求:对新增或修改的代码添加详细中文注释,至少包含方法目的、参数含义、返回值、关键逻辑步骤和异常处理说明。
注释要求可读、可维护,禁止“重复代码字面意思”的无效注释。
## æ•°æ®ä¸€è‡´æ€§ä¸Žäº‹åŠ¡è§„èŒƒ
- åŒä¸€ä¸šåŠ¡æ“ä½œæ¶‰åŠå¤šä¸ªæ•°æ®å¯¹è±¡ï¼ˆå¤šè¡¨ã€å¤šä»“å‚¨ã€è·¨æœåŠ¡å†™å…¥ï¼‰åŒæ—¶æ”¹åŠ¨æ—¶ï¼Œå¿…é¡»ä½¿ç”¨æ•°æ®åº“äº‹åŠ¡ï¼ˆTransaction)保证原子性。
- äº‹åŠ¡èŒƒå›´åªè¦†ç›–å¿…è¦å†™æ“ä½œï¼Œç¦æ­¢å°†é•¿è€—æ—¶ IO/网络调用放入事务内,避免长事务锁表。
- å‘生异常时必须回滚事务,并记录事务上下文(业务单号、关键主键、调用链标识)。
- è‹¥æ¶‰åŠåˆ†å¸ƒå¼æˆ–跨边界写入,需在 PR ä¸­æ˜Žç¡®ä¸€è‡´æ€§ç­–略(补偿、重试、幂等键)。
## æŽ¥å£ã€æ—¥å¿—与异常规范
- API è¿”回结构保持统一,字段命名与现有后端序列化策略一致,避免随意变更响应字段。
- Service å±‚抛出的业务异常需包含可定位上下文(任务号、设备号、关键参数)。
- æ—¥å¿—级别规范:调试细节用 `Debug`,业务关键路径用 `Information`,可恢复异常用 `Warning`,不可恢复错误用 `Error`。
- ä¸¥ç¦åžå¼‚常;捕获后必须记录上下文并决定重抛或转换为业务错误。
- æ¶‰åŠå¤–部系统调用、IO、网络通信、设备通信、数据库访问的关键路径必须使用 `try-catch`;`catch` ä¸­è‡³å°‘记录错误信息与关键参数,并保留原始堆栈(`throw;`),禁止仅 `throw ex;`。
## æµ‹è¯•指南
前端测试采用 Vue å•元测试(`tests/unit/*.spec.js`)。涉及 UI é€»è¾‘或接口交互变更时,应补充或更新测试,并执行 `yarn test:unit`。
当前解决方案中未包含独立后端测试项目。后端改动至少需完成构建与关键 API æ‰‹å·¥éªŒè¯ï¼›å¤æ‚业务逻辑建议新增测试项目(如 xUnit)并纳入解决方案。
## æäº¤ä¸Žåˆå¹¶è¯·æ±‚规范
最近提交普遍采用 Conventional Commit å‰ç¼€ï¼š`feat:`、`fix:`、`refactor:`、`docs:`、`chore:`(中文描述)。建议一次提交聚焦一个明确改动点。
PR å»ºè®®åŒ…含:
- å˜æ›´ç›®çš„与业务影响说明;
- æ¶‰åŠæ¨¡å—与目录范围(前端/后端);
- éªŒè¯è¯æ®ï¼ˆå·²æ‰§è¡Œå‘½ä»¤ä¸Žç»“果);
- UI å˜æ›´æˆªå›¾æˆ–录屏;
- å…³è”任务或问题编号(如有)。
Code/WMS/CLAUDE.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,187 @@
# CLAUDE.md
此文件为 Claude Code (claude.ai/code) æä¾›åœ¨æ­¤ä»£ç åº“中工作的指导。
## é¡¹ç›®æ¦‚è¿°
这是一个 WMS(仓库管理系统),后端采用 ASP.NET Core 6.0,前端采用 Vue 3。系统管理仓库运营,包括入库、出库、库存、任务和基础主数据。
```
WMS/
├── WIDESEA_WMSServer/           # åŽç«¯ (ASP.NET Core 6.0)
│   â”œâ”€â”€ WIDESEA_WMSServer/       # ä¸» API é¡¹ç›®
│   â”œâ”€â”€ WIDESEA_Core/            # æ ¸å¿ƒæ¡†æž¶ï¼ˆåŸºç¡€æŽ§åˆ¶å™¨ã€æœåŠ¡ã€ä»“å‚¨ï¼‰
│   â”œâ”€â”€ WIDESEA_Model/           # æŒ‰é¢†åŸŸç»„织的数据模型
│   â”œâ”€â”€ WIDESEA_*Service/        # æœåŠ¡å®žçŽ°ï¼ˆBasic、Inbound、Outbound、Stock ç­‰ï¼‰
│   â”œâ”€â”€ WIDESEA_I*Service/       # æœåŠ¡æŽ¥å£
│   â”œâ”€â”€ WIDESEA_DTO/             # æ•°æ®ä¼ è¾“对象
│   â””── WIDESEA_Common/          # å…¬å…±å·¥å…·ç±»
└── WIDESEA_WMSClient/           # å‰ç«¯ (Vue 3 + Vite)
    â”œâ”€â”€ src/api/                 # HTTP å®¢æˆ·ç«¯å’Œ API è°ƒç”¨
    â”œâ”€â”€ src/components/basic/    # å¯å¤ç”¨ç»„件(ViewGrid、VolForm、VolTable)
    â”œâ”€â”€ src/extension/           # ä¸ŽåŽç«¯åŒ¹é…çš„领域特定配置
    â”œâ”€â”€ src/views/               # Vue é¡µé¢ç»„ä»¶
    â”œâ”€â”€ src/router/              # Vue Router é…ç½®
    â””── src/store/               # Vuex çŠ¶æ€ç®¡ç†
```
## å¼€å‘命令
### åŽç«¯ (ASP.NET Core)
```bash
# æž„建解决方案
cd WIDESEA_WMSServer
dotnet build WIDESEA_WMSServer.sln
# è¿è¡ŒæœåŠ¡å™¨ï¼ˆé»˜è®¤ç«¯å£ï¼š9291)
cd WIDESEA_WMSServer/WIDESEA_WMSServer
dotnet run
# è¿˜åŽŸåŒ…
dotnet restore
# ä½¿ç”¨ç‰¹å®šé…ç½®è¿è¡Œ
dotnet run --configuration Release
```
### å‰ç«¯ (Vue 3 + Vite)
```bash
cd WIDESEA_WMSClient
# å®‰è£…依赖(使用 yarn)
yarn install
# å¼€å‘服务器(端口 8080)
yarn dev
# ç”Ÿäº§æž„建
yarn build
# é¢„览生产构建
yarn preview
# è¿è¡Œå•元测试
yarn test:unit
# ä»£ç æ£€æŸ¥
yarn lint
```
## æž¶æž„
### åŽç«¯æž¶æž„
**采用清洁架构原则的分层架构:**
- **控制器** (`WIDESEA_WMSServer/Controllers/`):继承自 `ApiBaseController<TService, TEntity>`,自动提供 CRUD ç«¯ç‚¹ã€‚领域特定控制器按文件夹组织(Basic、Inbound、Outbound、Stock、System、TaskInfo ç­‰ï¼‰ã€‚
- **服务层** (`WIDESEA_*Service/`):业务逻辑层。服务继承自 `ServiceBase<T, TEntity>` å¹¶å®žçް `WIDESEA_I*Service/` ä¸­çš„领域接口。通过 Autofac DI æ³¨å†Œã€‚
- **仓储层** (`WIDESEA_Core/BaseRepository/`):使用 SqlSugar ORM çš„æ•°æ®è®¿é—®å±‚。泛型 `IRepository<T>` å’Œ `RepositoryBase<T>` æä¾›é€šç”¨ CRUD æ“ä½œã€‚
- **模型** (`WIDESEA_Model/Models/`):按领域组织(Basic、Check、Inbound、Outbound、Stock、System、TaskInfo、Record、Config、ApprovalFlow)。模型继承自 `BaseEntity` æˆ– `BaseWarehouseEntity`。
- **DTO** (`WIDESEA_DTO/`):API è¯·æ±‚/响应的数据传输对象,按领域组织。
**关键基础设施组件:**
- `WIDESEA_Core/BaseController/ApiBaseController.cs`:具有自动 CRUD è·¯ç”±çš„基础控制器
- `WIDESEA_Core/BaseServices/IService.cs`:基础服务接口
- `WIDESEA_Core/Extensions/AutofacModuleRegister.cs`:Autofac DI æ³¨å†Œ
- `WIDESEA_Core/DB/`:SqlSugar æ•°æ®åº“配置
- `WIDESEA_Core/Authorization/`:JWT èº«ä»½éªŒè¯
- `WIDESEA_Core/Filter/`:全局异常处理和操作过滤器
### å‰ç«¯æž¶æž„
**带有自定义组件框架的 Vue 3 ç»„合式 API:**
- **ViewGrid ç»„ä»¶** (`src/components/basic/ViewGrid/`):核心表格/网格组件,处理数据显示、分页、搜索和 CRUD æ“ä½œã€‚通过扩展文件高度可配置。
- **扩展文件** (`src/extension/`):配置每个实体的 ViewGrid è¡Œä¸ºçš„ JavaScript æ–‡ä»¶ã€‚它们定义表格列、表单字段、搜索条件和自定义操作。模式:`src/extension/{domain}/{entityName}.js` åŒ¹é…åŽç«¯æŽ§åˆ¶å™¨ã€‚
- **API å±‚** (`src/api/`):封装 Axios çš„ HTTP å®¢æˆ·ç«¯ï¼Œå…·æœ‰èº«ä»½éªŒè¯å’Œé”™è¯¯å¤„理拦截器。
- **路由器** (`src/router/index.js`):带有哈希模式、身份验证守卫和从 `viewGird.js` åŠ¨æ€è·¯ç”±åŠ è½½çš„ Vue Router。
**关键前端模式:**
- æ‰©å±•文件(如 `src/extension/basic/materielInfo.js`)定义表头、表单字段和自定义业务逻辑
- `src/views/` ä¸­çš„视图很精简,大多使用由扩展配置的 ViewGrid ç»„ä»¶
- Vuex å­˜å‚¨ç®¡ç†èº«ä»½éªŒè¯çŠ¶æ€å’ŒåŠ è½½æŒ‡ç¤ºå™¨
## é…ç½®
### åŽç«¯é…ç½®
`WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json` ä¸­çš„关键设置:
- `urls`:服务器端口(默认:`http://*:9291`)
- `ConnectionString`:SQL Server æ•°æ®åº“连接
- `MainDB`:主数据库名称
- `Cors`:前端源头的 CORS ç­–ç•¥
- `WebSocketPort`:实时更新的 WebSocket ç«¯å£ï¼ˆé»˜è®¤ï¼š9296)
- `AutoOutboundTask`:自动出库操作的后台任务配置
### å‰ç«¯é…ç½®
- `vite.config.js`:Vite æž„建配置,`@` åˆ«åæŒ‡å‘ `src/`
- æœåŠ¡å™¨é»˜è®¤è¿è¡Œåœ¨ç«¯å£ 8080
- åŸºäºŽå“ˆå¸Œçš„路由(`createWebHashHistory`)
## ä»£ç çº¦å®š
### åŽç«¯
1. **命名规范**:
   - æŽ§åˆ¶å™¨ï¼š`{Entity}Controller.cs`
   - æœåŠ¡ï¼š`{Entity}Service.cs`(实现 `I{Entity}Service`)
   - æ¨¡åž‹ï¼š`Dt_{EntityName}.cs`(数据库实体使用 `Dt_` å‰ç¼€ï¼‰
   - API è·¯ç”±ï¼š`api/{ControllerName}`
2. **服务注册**:实现 `IDependency` çš„æœåŠ¡ä¼šé€šè¿‡ Autofac ä»Žæ‰€æœ‰é¡¹ç›®ç¨‹åºé›†ä¸­è‡ªåŠ¨æ³¨å†Œã€‚
3. **控制器模式**:大多数控制器继承自 `ApiBaseController<TService, TEntity>`,只需要构造函数。根据需要添加自定义操作。
4. **响应格式**:`WebResponseContent` åŒ…装器,包含 `Status`(布尔值)和 `Data` å±žæ€§ã€‚
### å‰ç«¯
1. **扩展文件模式**:对于每个后端实体,在 `src/extension/{domain}/{entity}.js` åˆ›å»ºæ‰©å±•文件,包含:
   - è¡¨æ ¼åˆ—定义
   - è¡¨å•字段配置
   - è‡ªå®šä¹‰ URL æ¨¡å¼
   - ä¸šåŠ¡é€»è¾‘é’©å­
2. **组件命名**:Vue ç»„件使用 PascalCase,尽可能匹配后端实体名称。
3. **API è°ƒç”¨**:使用全局 `this.http` å¯¹è±¡è¿›è¡Œ HTTP è¯·æ±‚。
## æ·»åŠ æ–°åŠŸèƒ½
### åŽç«¯
1. åœ¨ `WIDESEA_Model/Models/{Domain}/` ä¸­åˆ›å»ºæ¨¡åž‹
2. åœ¨ `WIDESEA_I{Domain}Service/` ä¸­åˆ›å»ºæœåŠ¡æŽ¥å£
3. åœ¨ `WIDESEA_{Domain}Service/` ä¸­åˆ›å»ºæœåŠ¡å®žçŽ°
4. åœ¨ `WIDESEA_WMSServer/Controllers/{Domain}/` ä¸­åˆ›å»ºæŽ§åˆ¶å™¨ï¼Œç»§æ‰¿è‡ª `ApiBaseController<TService, TEntity>`
5. æœåŠ¡é€šè¿‡ `IDependency` æŽ¥å£è‡ªåŠ¨æ³¨å†Œ
### å‰ç«¯
1. åœ¨ `src/extension/{domain}/{entity}.js` åˆ›å»ºæ‰©å±•文件
2. å¦‚需自定义 UI,在 `src/views/{domain}/{entity}.vue` åˆ›å»ºå¯é€‰è§†å›¾ç»„ä»¶
3. å¦‚需要,添加路由配置
4. ViewGrid ç»„件配合扩展配置可自动处理大多数 CRUD æ“ä½œ
## æ•°æ®åº“
- **ORM**:SqlSugar
- **数据库**:SQL Server
- **连接字符串**:在 `appsettings.json` ä¸­é…ç½®
- **迁移**:通过 SqlSugar çš„ Code First æ–¹å¼å¤„理
## å®žæ—¶åŠŸèƒ½
- SignalR ç”¨äºŽæœåŠ¡å™¨å’Œå®¢æˆ·ç«¯ä¹‹é—´çš„å®žæ—¶æ›´æ–°
- WebSocket æœåŠ¡å™¨åœ¨å•ç‹¬ç«¯å£ï¼ˆå¯åœ¨ `appsettings.json` ä¸­é…ç½®ï¼‰
- å‰ç«¯ SignalR å®¢æˆ·ç«¯é›†æˆåœ¨ `src/main.js` ä¸­
## API æ–‡æ¡£
运行后端服务器时可用 Swagger UI(查看 `/swagger` ç«¯ç‚¹ï¼‰ã€‚
Code/WMS/WIDESEA_WMSClient/.omc/project-memory.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,185 @@
{
  "version": "1.0.0",
  "lastScanned": 1774324348368,
  "projectRoot": "d:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSClient",
  "techStack": {
    "languages": [
      {
        "name": "JavaScript/TypeScript",
        "version": null,
        "confidence": "high",
        "markers": [
          "package.json"
        ]
      }
    ],
    "frameworks": [
      {
        "name": "vue",
        "version": "3.2.37",
        "category": "frontend"
      },
      {
        "name": "vite",
        "version": "5.0.0",
        "category": "build"
      }
    ],
    "packageManager": "yarn",
    "runtime": null
  },
  "build": {
    "buildCommand": "yarn build",
    "testCommand": null,
    "lintCommand": "yarn lint",
    "devCommand": "yarn dev",
    "scripts": {
      "dev": "vite",
      "build": "vite build",
      "preview": "vite preview --port 8080",
      "test:unit": "vue-cli-service test:unit",
      "lint": "vue-cli-service lint"
    }
  },
  "conventions": {
    "namingStyle": null,
    "importStyle": null,
    "testPattern": null,
    "fileOrganization": "type-based"
  },
  "structure": {
    "isMonorepo": false,
    "workspaces": [],
    "mainDirectories": [
      "public",
      "src",
      "tests"
    ],
    "gitBranches": {
      "defaultBranch": "master",
      "branchingStrategy": null
    }
  },
  "customNotes": [],
  "directoryMap": {
    "config": {
      "path": "config",
      "purpose": "Configuration files",
      "fileCount": 1,
      "lastAccessed": 1774324348233,
      "keyFiles": [
        "buttons.js"
      ]
    },
    "dist": {
      "path": "dist",
      "purpose": "Distribution/build output",
      "fileCount": 4,
      "lastAccessed": 1774324348234,
      "keyFiles": [
        "index.html",
        "wcslogo.png",
        "webconfig.js",
        "wms_d.png"
      ]
    },
    "public": {
      "path": "public",
      "purpose": "Public files",
      "fileCount": 4,
      "lastAccessed": 1774324348294,
      "keyFiles": [
        "index.html",
        "wcslogo.png",
        "webconfig.js",
        "wms_d.png"
      ]
    },
    "src": {
      "path": "src",
      "purpose": "Source code",
      "fileCount": 2,
      "lastAccessed": 1774324348294,
      "keyFiles": [
        "App.vue",
        "main.js"
      ]
    },
    "tests": {
      "path": "tests",
      "purpose": "Test files",
      "fileCount": 0,
      "lastAccessed": 1774324348294,
      "keyFiles": []
    },
    "dist\\assets": {
      "path": "dist\\assets",
      "purpose": "Static assets",
      "fileCount": 106,
      "lastAccessed": 1774324348296,
      "keyFiles": [
        "401-CX5beHYt.js",
        "404-mamt5IUf.js",
        "Audit-BmPdFI9f.js"
      ]
    },
    "dist\\static": {
      "path": "dist\\static",
      "purpose": "Static files",
      "fileCount": 1,
      "lastAccessed": 1774324348296,
      "keyFiles": [
        "login_bg.png"
      ]
    },
    "public\\static": {
      "path": "public\\static",
      "purpose": "Static files",
      "fileCount": 1,
      "lastAccessed": 1774324348297,
      "keyFiles": [
        "login_bg.png"
      ]
    },
    "src\\api": {
      "path": "src\\api",
      "purpose": "API routes",
      "fileCount": 3,
      "lastAccessed": 1774324348297,
      "keyFiles": [
        "http.js",
        "permission.js",
        "useTest.js"
      ]
    },
    "src\\assets": {
      "path": "src\\assets",
      "purpose": "Static assets",
      "fileCount": 1,
      "lastAccessed": 1774324348298,
      "keyFiles": [
        "logo.png"
      ]
    },
    "src\\components": {
      "path": "src\\components",
      "purpose": "UI components",
      "fileCount": 0,
      "lastAccessed": 1774324348299,
      "keyFiles": []
    },
    "src\\views": {
      "path": "src\\views",
      "purpose": "View templates",
      "fileCount": 3,
      "lastAccessed": 1774324348299,
      "keyFiles": [
        "Home.vue",
        "Index.vue",
        "Login.vue"
      ]
    }
  },
  "hotPaths": [],
  "userDirectives": []
}
Code/WMS/WIDESEA_WMSClient/.yarn/install-state.gz
Binary files differ
Code/WMS/WIDESEA_WMSClient/.yarnrc.yml
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMSClient/README.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMSClient/package.json
@@ -3,7 +3,7 @@
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "vite",
    "serve": "vite",
    "build": "vite build",
    "preview": "vite preview --port 8080",
    "test:unit": "vue-cli-service test:unit",
@@ -63,6 +63,5 @@
  },
  "eslintIgnore": [
    "*"
  ],
  "packageManager": "yarn@4.12.0"
  ]
}
Code/WMS/WIDESEA_WMSClient/pnpm-lock.yaml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3917 @@
lockfileVersion: '9.0'
settings:
  autoInstallPeers: true
  excludeLinksFromLockfile: false
importers:
  .:
    dependencies:
      '@element-plus/icons-vue':
        specifier: ^2.1.0
        version: 2.3.2(vue@3.5.30)
      '@microsoft/signalr':
        specifier: ^6.0.4
        version: 6.0.25
      ali-oss:
        specifier: ^6.17.1
        version: 6.23.0
      axios:
        specifier: ^0.21.1
        version: 0.21.4
      core-js:
        specifier: ^3.6.5
        version: 3.49.0
      echarts:
        specifier: ^5.0.2
        version: 5.6.0
      element-plus:
        specifier: ^2.2.14
        version: 2.13.6(vue@3.5.30)
      jsbarcode:
        specifier: ^3.11.6
        version: 3.12.3
      less:
        specifier: ^4.1.1
        version: 4.6.4
      qrcode:
        specifier: ^1.5.4
        version: 1.5.4
      vue:
        specifier: ^3.2.37
        version: 3.5.30
      vue-barcode:
        specifier: ^1.3.0
        version: 1.3.0
      vue-draggable-next:
        specifier: ^2.0.1
        version: 2.3.0(sortablejs@1.15.7)(vue@3.5.30)
      vue-qrcode:
        specifier: ^2.2.2
        version: 2.2.2(qrcode@1.5.4)(vue@3.5.30)
      vue-router:
        specifier: ^4.0.0-0
        version: 4.6.4(vue@3.5.30)
      vuex:
        specifier: ^4.0.0-0
        version: 4.1.0(vue@3.5.30)
    devDependencies:
      '@babel/plugin-syntax-dynamic-import':
        specifier: ^7.8.3
        version: 7.8.3(@babel/core@7.29.0)
      '@vitejs/plugin-vue':
        specifier: ^4.0.0
        version: 4.6.2(vite@5.4.21(@types/node@25.5.0)(less@4.6.4)(sass@1.98.0)(stylus@0.54.8)(terser@5.46.1))(vue@3.5.30)
      '@vue/compiler-sfc':
        specifier: ^3.0.0
        version: 3.5.30
      '@vue/test-utils':
        specifier: ^2.0.0-0
        version: 2.4.6
      chai:
        specifier: ^4.1.2
        version: 4.5.0
      cross-env:
        specifier: ^7.0.3
        version: 7.0.3
      less-loader:
        specifier: ^7.3.0
        version: 7.3.0(less@4.6.4)(webpack@5.105.4)
      sass:
        specifier: ^1.78.0
        version: 1.98.0
      sass-loader:
        specifier: ^16.0.1
        version: 16.0.7(sass@1.98.0)(webpack@5.105.4)
      stylus:
        specifier: ^0.54.7
        version: 0.54.8
      stylus-loader:
        specifier: ^3.0.2
        version: 3.0.2(stylus@0.54.8)
      vite:
        specifier: ^5.0.0
        version: 5.4.21(@types/node@25.5.0)(less@4.6.4)(sass@1.98.0)(stylus@0.54.8)(terser@5.46.1)
packages:
  '@babel/code-frame@7.29.0':
    resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
    engines: {node: '>=6.9.0'}
  '@babel/compat-data@7.29.0':
    resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
    engines: {node: '>=6.9.0'}
  '@babel/core@7.29.0':
    resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
    engines: {node: '>=6.9.0'}
  '@babel/generator@7.29.1':
    resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-compilation-targets@7.28.6':
    resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-globals@7.28.0':
    resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-module-imports@7.28.6':
    resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-module-transforms@7.28.6':
    resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
    engines: {node: '>=6.9.0'}
    peerDependencies:
      '@babel/core': ^7.0.0
  '@babel/helper-plugin-utils@7.28.6':
    resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-string-parser@7.27.1':
    resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-validator-identifier@7.28.5':
    resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
    engines: {node: '>=6.9.0'}
  '@babel/helper-validator-option@7.27.1':
    resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
    engines: {node: '>=6.9.0'}
  '@babel/helpers@7.29.2':
    resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==}
    engines: {node: '>=6.9.0'}
  '@babel/parser@7.29.2':
    resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==}
    engines: {node: '>=6.0.0'}
    hasBin: true
  '@babel/plugin-syntax-dynamic-import@7.8.3':
    resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==}
    peerDependencies:
      '@babel/core': ^7.0.0-0
  '@babel/template@7.28.6':
    resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
    engines: {node: '>=6.9.0'}
  '@babel/traverse@7.29.0':
    resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
    engines: {node: '>=6.9.0'}
  '@babel/types@7.29.0':
    resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
    engines: {node: '>=6.9.0'}
  '@ctrl/tinycolor@4.2.0':
    resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==}
    engines: {node: '>=14'}
  '@element-plus/icons-vue@2.3.2':
    resolution: {integrity: sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==}
    peerDependencies:
      vue: ^3.2.0
  '@esbuild/aix-ppc64@0.21.5':
    resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
    engines: {node: '>=12'}
    cpu: [ppc64]
    os: [aix]
  '@esbuild/android-arm64@0.21.5':
    resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
    engines: {node: '>=12'}
    cpu: [arm64]
    os: [android]
  '@esbuild/android-arm@0.21.5':
    resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
    engines: {node: '>=12'}
    cpu: [arm]
    os: [android]
  '@esbuild/android-x64@0.21.5':
    resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [android]
  '@esbuild/darwin-arm64@0.21.5':
    resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
    engines: {node: '>=12'}
    cpu: [arm64]
    os: [darwin]
  '@esbuild/darwin-x64@0.21.5':
    resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [darwin]
  '@esbuild/freebsd-arm64@0.21.5':
    resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
    engines: {node: '>=12'}
    cpu: [arm64]
    os: [freebsd]
  '@esbuild/freebsd-x64@0.21.5':
    resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [freebsd]
  '@esbuild/linux-arm64@0.21.5':
    resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
    engines: {node: '>=12'}
    cpu: [arm64]
    os: [linux]
  '@esbuild/linux-arm@0.21.5':
    resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
    engines: {node: '>=12'}
    cpu: [arm]
    os: [linux]
  '@esbuild/linux-ia32@0.21.5':
    resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
    engines: {node: '>=12'}
    cpu: [ia32]
    os: [linux]
  '@esbuild/linux-loong64@0.21.5':
    resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
    engines: {node: '>=12'}
    cpu: [loong64]
    os: [linux]
  '@esbuild/linux-mips64el@0.21.5':
    resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
    engines: {node: '>=12'}
    cpu: [mips64el]
    os: [linux]
  '@esbuild/linux-ppc64@0.21.5':
    resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
    engines: {node: '>=12'}
    cpu: [ppc64]
    os: [linux]
  '@esbuild/linux-riscv64@0.21.5':
    resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
    engines: {node: '>=12'}
    cpu: [riscv64]
    os: [linux]
  '@esbuild/linux-s390x@0.21.5':
    resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
    engines: {node: '>=12'}
    cpu: [s390x]
    os: [linux]
  '@esbuild/linux-x64@0.21.5':
    resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [linux]
  '@esbuild/netbsd-x64@0.21.5':
    resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [netbsd]
  '@esbuild/openbsd-x64@0.21.5':
    resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [openbsd]
  '@esbuild/sunos-x64@0.21.5':
    resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [sunos]
  '@esbuild/win32-arm64@0.21.5':
    resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
    engines: {node: '>=12'}
    cpu: [arm64]
    os: [win32]
  '@esbuild/win32-ia32@0.21.5':
    resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
    engines: {node: '>=12'}
    cpu: [ia32]
    os: [win32]
  '@esbuild/win32-x64@0.21.5':
    resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
    engines: {node: '>=12'}
    cpu: [x64]
    os: [win32]
  '@floating-ui/core@1.7.5':
    resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
  '@floating-ui/dom@1.7.6':
    resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==}
  '@floating-ui/utils@0.2.11':
    resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
  '@isaacs/cliui@8.0.2':
    resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
    engines: {node: '>=12'}
  '@jridgewell/gen-mapping@0.3.13':
    resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
  '@jridgewell/remapping@2.3.5':
    resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
  '@jridgewell/resolve-uri@3.1.2':
    resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
    engines: {node: '>=6.0.0'}
  '@jridgewell/source-map@0.3.11':
    resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
  '@jridgewell/sourcemap-codec@1.5.5':
    resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
  '@jridgewell/trace-mapping@0.3.31':
    resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
  '@microsoft/signalr@6.0.25':
    resolution: {integrity: sha512-8AzrpxS+E0yn1tXSlv7+UlURLmSxTQDgbvOT0pGKXjZT7MkhnDP+/GLuk7veRtUjczou/x32d9PHhYlr2NBy6Q==}
  '@one-ini/wasm@0.1.1':
    resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
  '@parcel/watcher-android-arm64@2.5.6':
    resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm64]
    os: [android]
  '@parcel/watcher-darwin-arm64@2.5.6':
    resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm64]
    os: [darwin]
  '@parcel/watcher-darwin-x64@2.5.6':
    resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
    engines: {node: '>= 10.0.0'}
    cpu: [x64]
    os: [darwin]
  '@parcel/watcher-freebsd-x64@2.5.6':
    resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
    engines: {node: '>= 10.0.0'}
    cpu: [x64]
    os: [freebsd]
  '@parcel/watcher-linux-arm-glibc@2.5.6':
    resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm]
    os: [linux]
    libc: [glibc]
  '@parcel/watcher-linux-arm-musl@2.5.6':
    resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm]
    os: [linux]
    libc: [musl]
  '@parcel/watcher-linux-arm64-glibc@2.5.6':
    resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]
  '@parcel/watcher-linux-arm64-musl@2.5.6':
    resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm64]
    os: [linux]
    libc: [musl]
  '@parcel/watcher-linux-x64-glibc@2.5.6':
    resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
    engines: {node: '>= 10.0.0'}
    cpu: [x64]
    os: [linux]
    libc: [glibc]
  '@parcel/watcher-linux-x64-musl@2.5.6':
    resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
    engines: {node: '>= 10.0.0'}
    cpu: [x64]
    os: [linux]
    libc: [musl]
  '@parcel/watcher-win32-arm64@2.5.6':
    resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
    engines: {node: '>= 10.0.0'}
    cpu: [arm64]
    os: [win32]
  '@parcel/watcher-win32-ia32@2.5.6':
    resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
    engines: {node: '>= 10.0.0'}
    cpu: [ia32]
    os: [win32]
  '@parcel/watcher-win32-x64@2.5.6':
    resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
    engines: {node: '>= 10.0.0'}
    cpu: [x64]
    os: [win32]
  '@parcel/watcher@2.5.6':
    resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
    engines: {node: '>= 10.0.0'}
  '@pkgjs/parseargs@0.11.0':
    resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
    engines: {node: '>=14'}
  '@rollup/rollup-android-arm-eabi@4.60.0':
    resolution: {integrity: sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==}
    cpu: [arm]
    os: [android]
  '@rollup/rollup-android-arm64@4.60.0':
    resolution: {integrity: sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==}
    cpu: [arm64]
    os: [android]
  '@rollup/rollup-darwin-arm64@4.60.0':
    resolution: {integrity: sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==}
    cpu: [arm64]
    os: [darwin]
  '@rollup/rollup-darwin-x64@4.60.0':
    resolution: {integrity: sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==}
    cpu: [x64]
    os: [darwin]
  '@rollup/rollup-freebsd-arm64@4.60.0':
    resolution: {integrity: sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==}
    cpu: [arm64]
    os: [freebsd]
  '@rollup/rollup-freebsd-x64@4.60.0':
    resolution: {integrity: sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==}
    cpu: [x64]
    os: [freebsd]
  '@rollup/rollup-linux-arm-gnueabihf@4.60.0':
    resolution: {integrity: sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==}
    cpu: [arm]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-arm-musleabihf@4.60.0':
    resolution: {integrity: sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==}
    cpu: [arm]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-arm64-gnu@4.60.0':
    resolution: {integrity: sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==}
    cpu: [arm64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-arm64-musl@4.60.0':
    resolution: {integrity: sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==}
    cpu: [arm64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-loong64-gnu@4.60.0':
    resolution: {integrity: sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==}
    cpu: [loong64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-loong64-musl@4.60.0':
    resolution: {integrity: sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==}
    cpu: [loong64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-ppc64-gnu@4.60.0':
    resolution: {integrity: sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==}
    cpu: [ppc64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-ppc64-musl@4.60.0':
    resolution: {integrity: sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==}
    cpu: [ppc64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-riscv64-gnu@4.60.0':
    resolution: {integrity: sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==}
    cpu: [riscv64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-riscv64-musl@4.60.0':
    resolution: {integrity: sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==}
    cpu: [riscv64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-linux-s390x-gnu@4.60.0':
    resolution: {integrity: sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==}
    cpu: [s390x]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-x64-gnu@4.60.0':
    resolution: {integrity: sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==}
    cpu: [x64]
    os: [linux]
    libc: [glibc]
  '@rollup/rollup-linux-x64-musl@4.60.0':
    resolution: {integrity: sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==}
    cpu: [x64]
    os: [linux]
    libc: [musl]
  '@rollup/rollup-openbsd-x64@4.60.0':
    resolution: {integrity: sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==}
    cpu: [x64]
    os: [openbsd]
  '@rollup/rollup-openharmony-arm64@4.60.0':
    resolution: {integrity: sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==}
    cpu: [arm64]
    os: [openharmony]
  '@rollup/rollup-win32-arm64-msvc@4.60.0':
    resolution: {integrity: sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==}
    cpu: [arm64]
    os: [win32]
  '@rollup/rollup-win32-ia32-msvc@4.60.0':
    resolution: {integrity: sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==}
    cpu: [ia32]
    os: [win32]
  '@rollup/rollup-win32-x64-gnu@4.60.0':
    resolution: {integrity: sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==}
    cpu: [x64]
    os: [win32]
  '@rollup/rollup-win32-x64-msvc@4.60.0':
    resolution: {integrity: sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==}
    cpu: [x64]
    os: [win32]
  '@sxzz/popperjs-es@2.11.8':
    resolution: {integrity: sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ==}
  '@types/eslint-scope@3.7.7':
    resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==}
  '@types/eslint@9.6.1':
    resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
  '@types/estree@1.0.8':
    resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
  '@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==}
  '@types/lodash@4.17.24':
    resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==}
  '@types/node@25.5.0':
    resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==}
  '@types/web-bluetooth@0.0.20':
    resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
  '@vitejs/plugin-vue@4.6.2':
    resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==}
    engines: {node: ^14.18.0 || >=16.0.0}
    peerDependencies:
      vite: ^4.0.0 || ^5.0.0
      vue: ^3.2.25
  '@vue/compiler-core@3.5.30':
    resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==}
  '@vue/compiler-dom@3.5.30':
    resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==}
  '@vue/compiler-sfc@3.5.30':
    resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==}
  '@vue/compiler-ssr@3.5.30':
    resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==}
  '@vue/devtools-api@6.6.4':
    resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
  '@vue/reactivity@3.5.30':
    resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==}
  '@vue/runtime-core@3.5.30':
    resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==}
  '@vue/runtime-dom@3.5.30':
    resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==}
  '@vue/server-renderer@3.5.30':
    resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==}
    peerDependencies:
      vue: 3.5.30
  '@vue/shared@3.5.30':
    resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==}
  '@vue/test-utils@2.4.6':
    resolution: {integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==}
  '@vueuse/core@12.0.0':
    resolution: {integrity: sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==}
  '@vueuse/metadata@12.0.0':
    resolution: {integrity: sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==}
  '@vueuse/shared@12.0.0':
    resolution: {integrity: sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==}
  '@webassemblyjs/ast@1.14.1':
    resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==}
  '@webassemblyjs/floating-point-hex-parser@1.13.2':
    resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==}
  '@webassemblyjs/helper-api-error@1.13.2':
    resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==}
  '@webassemblyjs/helper-buffer@1.14.1':
    resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==}
  '@webassemblyjs/helper-numbers@1.13.2':
    resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==}
  '@webassemblyjs/helper-wasm-bytecode@1.13.2':
    resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==}
  '@webassemblyjs/helper-wasm-section@1.14.1':
    resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==}
  '@webassemblyjs/ieee754@1.13.2':
    resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==}
  '@webassemblyjs/leb128@1.13.2':
    resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==}
  '@webassemblyjs/utf8@1.13.2':
    resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==}
  '@webassemblyjs/wasm-edit@1.14.1':
    resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==}
  '@webassemblyjs/wasm-gen@1.14.1':
    resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==}
  '@webassemblyjs/wasm-opt@1.14.1':
    resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==}
  '@webassemblyjs/wasm-parser@1.14.1':
    resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==}
  '@webassemblyjs/wast-printer@1.14.1':
    resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
  '@xtuc/ieee754@1.2.0':
    resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
  '@xtuc/long@4.2.2':
    resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
  abbrev@2.0.0:
    resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==}
    engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
  abort-controller@3.0.0:
    resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
    engines: {node: '>=6.5'}
  acorn-import-phases@1.0.4:
    resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==}
    engines: {node: '>=10.13.0'}
    peerDependencies:
      acorn: ^8.14.0
  acorn@8.16.0:
    resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
    engines: {node: '>=0.4.0'}
    hasBin: true
  address@1.2.2:
    resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==}
    engines: {node: '>= 10.0.0'}
  agentkeepalive@3.5.3:
    resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==}
    engines: {node: '>= 4.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.14.0:
    resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
  ajv@8.18.0:
    resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==}
  ali-oss@6.23.0:
    resolution: {integrity: sha512-FipRmyd16Pr/tEey/YaaQ/24Pc3HEpLM9S1DRakEuXlSLXNIJnu1oJtHM53eVYpvW3dXapSjrip3xylZUTIZVQ==}
    engines: {node: '>=8'}
  ansi-regex@5.0.1:
    resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
    engines: {node: '>=8'}
  ansi-regex@6.2.2:
    resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
    engines: {node: '>=12'}
  ansi-styles@4.3.0:
    resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
    engines: {node: '>=8'}
  ansi-styles@6.2.3:
    resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
    engines: {node: '>=12'}
  any-promise@1.3.0:
    resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
  assertion-error@1.1.0:
    resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
  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
  axios@0.21.4:
    resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==}
  balanced-match@1.0.2:
    resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
  baseline-browser-mapping@2.10.10:
    resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==}
    engines: {node: '>=6.0.0'}
    hasBin: true
  big.js@5.2.2:
    resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==}
  bowser@1.9.4:
    resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==}
  brace-expansion@1.1.12:
    resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
  brace-expansion@2.0.2:
    resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
  browserslist@4.28.1:
    resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
    hasBin: true
  buffer-from@1.1.2:
    resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
  builtin-status-codes@3.0.0:
    resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==}
  call-bind-apply-helpers@1.0.2:
    resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
    engines: {node: '>= 0.4'}
  call-bound@1.0.4:
    resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
    engines: {node: '>= 0.4'}
  camelcase@5.3.1:
    resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
    engines: {node: '>=6'}
  caniuse-lite@1.0.30001781:
    resolution: {integrity: sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==}
  chai@4.5.0:
    resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
    engines: {node: '>=4'}
  check-error@1.0.3:
    resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
  chokidar@4.0.3:
    resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
    engines: {node: '>= 14.16.0'}
  chrome-trace-event@1.0.4:
    resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==}
    engines: {node: '>=6.0'}
  cliui@6.0.0:
    resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
  color-convert@2.0.1:
    resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
    engines: {node: '>=7.0.0'}
  color-name@1.1.4:
    resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
  commander@10.0.1:
    resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
    engines: {node: '>=14'}
  commander@2.20.3:
    resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
  concat-map@0.0.1:
    resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
  config-chain@1.1.13:
    resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
  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@3.0.5:
    resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
    engines: {node: '>=12.13'}
  copy-to@2.0.1:
    resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==}
  core-js@3.49.0:
    resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==}
  core-util-is@1.0.3:
    resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
  cross-env@7.0.3:
    resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
    engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
    hasBin: true
  cross-spawn@7.0.6:
    resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
    engines: {node: '>= 8'}
  css-parse@2.0.0:
    resolution: {integrity: sha512-UNIFik2RgSbiTwIW1IsFwXWn6vs+bYdq83LKTSOsx7NJR7WII9dxewkHLltfTLVppoUApHV0118a4RZRI9FLwA==}
  css@2.2.4:
    resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==}
  csstype@3.2.3:
    resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
  dateformat@2.2.0:
    resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==}
  dayjs@1.11.20:
    resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==}
  debug@3.1.0:
    resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
    peerDependencies:
      supports-color: '*'
    peerDependenciesMeta:
      supports-color:
        optional: true
  debug@4.4.3:
    resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
    engines: {node: '>=6.0'}
    peerDependencies:
      supports-color: '*'
    peerDependenciesMeta:
      supports-color:
        optional: true
  decamelize@1.2.0:
    resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
    engines: {node: '>=0.10.0'}
  decode-uri-component@0.2.2:
    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
    engines: {node: '>=0.10'}
  deep-eql@4.1.4:
    resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
    engines: {node: '>=6'}
  default-user-agent@1.0.0:
    resolution: {integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==}
    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}
  detect-libc@2.1.2:
    resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
    engines: {node: '>=8'}
  digest-header@1.1.0:
    resolution: {integrity: sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==}
    engines: {node: '>= 8.0.0'}
  dijkstrajs@1.0.3:
    resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
  dunder-proto@1.0.1:
    resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
    engines: {node: '>= 0.4'}
  eastasianwidth@0.2.0:
    resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
  echarts@5.6.0:
    resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
  editorconfig@1.0.7:
    resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==}
    engines: {node: '>=14'}
    hasBin: true
  ee-first@1.1.1:
    resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
  electron-to-chromium@1.5.321:
    resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==}
  element-plus@2.13.6:
    resolution: {integrity: sha512-XHgwXr8Fjz6i+6BaqFhAbae/dJbG7bBAAlHrY3pWL7dpj+JcqcOyKYt4Oy5KP86FQwS1k4uIZDjCx2FyUR5lDg==}
    peerDependencies:
      vue: ^3.3.0
  emoji-regex@8.0.0:
    resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
  emoji-regex@9.2.2:
    resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
  emojis-list@3.0.0:
    resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
    engines: {node: '>= 4'}
  end-of-stream@1.4.5:
    resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==}
  end-or-error@1.0.1:
    resolution: {integrity: sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==}
    engines: {node: '>= 0.11.14'}
  enhanced-resolve@5.20.1:
    resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
    engines: {node: '>=10.13.0'}
  entities@7.0.1:
    resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
    engines: {node: '>=0.12'}
  errno@0.1.8:
    resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
    hasBin: true
  es-define-property@1.0.1:
    resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
    engines: {node: '>= 0.4'}
  es-errors@1.3.0:
    resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
    engines: {node: '>= 0.4'}
  es-module-lexer@2.0.0:
    resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==}
  es-object-atoms@1.1.1:
    resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
    engines: {node: '>= 0.4'}
  esbuild@0.21.5:
    resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
    engines: {node: '>=12'}
    hasBin: true
  escalade@3.2.0:
    resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
    engines: {node: '>=6'}
  escape-html@1.0.3:
    resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
  eslint-scope@5.1.1:
    resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
    engines: {node: '>=8.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==}
  event-target-shim@5.0.1:
    resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
    engines: {node: '>=6'}
  events@3.3.0:
    resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
    engines: {node: '>=0.8.x'}
  eventsource@1.1.2:
    resolution: {integrity: sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==}
    engines: {node: '>=0.12.0'}
  extend-shallow@2.0.1:
    resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
    engines: {node: '>=0.10.0'}
  fast-deep-equal@3.1.3:
    resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
  fast-json-stable-stringify@2.1.0:
    resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
  fast-uri@3.1.0:
    resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
  fetch-cookie@0.11.0:
    resolution: {integrity: sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==}
    engines: {node: '>=8'}
  find-up@4.1.0:
    resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
    engines: {node: '>=8'}
  follow-redirects@1.15.11:
    resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
    engines: {node: '>=4.0'}
    peerDependencies:
      debug: '*'
    peerDependenciesMeta:
      debug:
        optional: true
  foreground-child@3.3.1:
    resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
    engines: {node: '>=14'}
  formstream@1.5.2:
    resolution: {integrity: sha512-NASf0lgxC1AyKNXQIrXTEYkiX99LhCEXTkiGObXAkpBui86a4u8FjH1o2bGb3PpqI3kafC+yw4zWeK6l6VHTgg==}
  fs.realpath@1.0.0:
    resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
  fsevents@2.3.3:
    resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
    engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
    os: [darwin]
  function-bind@1.1.2:
    resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
  gensync@1.0.0-beta.2:
    resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
    engines: {node: '>=6.9.0'}
  get-caller-file@2.0.5:
    resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
    engines: {node: 6.* || 8.* || >= 10.*}
  get-func-name@2.0.2:
    resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
  get-intrinsic@1.3.0:
    resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
    engines: {node: '>= 0.4'}
  get-proto@1.0.1:
    resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
    engines: {node: '>= 0.4'}
  get-ready@1.0.0:
    resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==}
  glob-to-regexp@0.4.1:
    resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
  glob@10.5.0:
    resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
    deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
    hasBin: true
  glob@7.2.3:
    resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
    deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
  gopd@1.2.0:
    resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
    engines: {node: '>= 0.4'}
  graceful-fs@4.2.11:
    resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
  has-flag@4.0.0:
    resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
    engines: {node: '>=8'}
  has-symbols@1.1.0:
    resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
    engines: {node: '>= 0.4'}
  hasown@2.0.2:
    resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
    engines: {node: '>= 0.4'}
  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'}
  image-size@0.5.5:
    resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
    engines: {node: '>=0.10.0'}
    hasBin: true
  immutable@5.1.5:
    resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==}
  inflight@1.0.6:
    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.4:
    resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
  ini@1.3.8:
    resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
  is-class-hotfix@0.0.6:
    resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==}
  is-extendable@0.1.1:
    resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
    engines: {node: '>=0.10.0'}
  is-extglob@2.1.1:
    resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
    engines: {node: '>=0.10.0'}
  is-fullwidth-code-point@3.0.0:
    resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
    engines: {node: '>=8'}
  is-glob@4.0.3:
    resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
    engines: {node: '>=0.10.0'}
  is-type-of@1.4.0:
    resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==}
  is-what@4.1.16:
    resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
    engines: {node: '>=12.13'}
  isarray@1.0.0:
    resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
  isexe@2.0.0:
    resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
  isstream@0.1.2:
    resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
  jackspeak@3.4.3:
    resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
  jest-worker@27.5.1:
    resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
    engines: {node: '>= 10.13.0'}
  js-base64@2.6.4:
    resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
  js-beautify@1.15.4:
    resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
    engines: {node: '>=14'}
    hasBin: true
  js-cookie@3.0.5:
    resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
    engines: {node: '>=14'}
  js-tokens@4.0.0:
    resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
  jsbarcode@3.12.3:
    resolution: {integrity: sha512-CuHU9hC6dPsHF5oVFMo8NW76uQVjH4L22CsP4hW+dNnGywJHC/B0ThA1CTDVLnxKLrrpYdicBLnd2xsgTfRnvg==}
  jsesc@3.1.0:
    resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
    engines: {node: '>=6'}
    hasBin: true
  json-parse-even-better-errors@2.3.1:
    resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
  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==}
    hasBin: true
  json5@2.2.3:
    resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
    engines: {node: '>=6'}
    hasBin: true
  jstoxml@2.2.9:
    resolution: {integrity: sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==}
  klona@2.0.6:
    resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==}
    engines: {node: '>= 8'}
  less-loader@7.3.0:
    resolution: {integrity: sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==}
    engines: {node: '>= 10.13.0'}
    peerDependencies:
      less: ^3.5.0 || ^4.0.0
      webpack: ^4.0.0 || ^5.0.0
  less@4.6.4:
    resolution: {integrity: sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==}
    engines: {node: '>=18'}
    hasBin: true
  loader-runner@4.3.1:
    resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==}
    engines: {node: '>=6.11.5'}
  loader-utils@1.4.2:
    resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
    engines: {node: '>=4.0.0'}
  loader-utils@2.0.4:
    resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==}
    engines: {node: '>=8.9.0'}
  locate-path@5.0.0:
    resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
    engines: {node: '>=8'}
  lodash-es@4.17.23:
    resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==}
  lodash-unified@1.0.3:
    resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
    peerDependencies:
      '@types/lodash-es': '*'
      lodash: '*'
      lodash-es: '*'
  lodash.clonedeep@4.5.0:
    resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
  lodash@4.17.23:
    resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
  loupe@2.3.7:
    resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
  lru-cache@10.4.3:
    resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
  lru-cache@5.1.1:
    resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
  magic-string@0.30.21:
    resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
  make-dir@2.1.0:
    resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
    engines: {node: '>=6'}
  math-intrinsics@1.1.0:
    resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
    engines: {node: '>= 0.4'}
  memoize-one@6.0.0:
    resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
  merge-descriptors@1.0.3:
    resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
  merge-stream@2.0.0:
    resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
  mime-db@1.52.0:
    resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
    engines: {node: '>= 0.6'}
  mime-types@2.1.35:
    resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
    engines: {node: '>= 0.6'}
  mime@1.6.0:
    resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
    engines: {node: '>=4'}
    hasBin: true
  mime@2.6.0:
    resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==}
    engines: {node: '>=4.0.0'}
    hasBin: true
  minimatch@3.1.5:
    resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
  minimatch@9.0.9:
    resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
    engines: {node: '>=16 || 14 >=14.17'}
  minimist@1.2.8:
    resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
  minipass@7.1.3:
    resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
    engines: {node: '>=16 || 14 >=14.17'}
  mkdirp@0.5.6:
    resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
    hasBin: true
  mkdirp@1.0.4:
    resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
    engines: {node: '>=10'}
    hasBin: true
  ms@2.0.0:
    resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
  ms@2.1.3:
    resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
  mz@2.7.0:
    resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
  nanoid@3.3.11:
    resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
    engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
    hasBin: true
  needle@3.5.0:
    resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==}
    engines: {node: '>= 4.4.x'}
    hasBin: true
  neo-async@2.6.2:
    resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
  node-addon-api@7.1.1:
    resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
  node-fetch@2.7.0:
    resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
    engines: {node: 4.x || >=6.0.0}
    peerDependencies:
      encoding: ^0.1.0
    peerDependenciesMeta:
      encoding:
        optional: true
  node-hex@1.0.1:
    resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==}
    engines: {node: '>=8.0.0'}
  node-releases@2.0.36:
    resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==}
  nopt@7.2.1:
    resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==}
    engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
    hasBin: true
  normalize-wheel-es@1.2.0:
    resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
  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'}
  once@1.4.0:
    resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
  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==}
    engines: {node: '>=6'}
  p-locate@4.1.0:
    resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
    engines: {node: '>=8'}
  p-try@2.2.0:
    resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
    engines: {node: '>=6'}
  package-json-from-dist@1.0.1:
    resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
  parse-node-version@1.0.1:
    resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
    engines: {node: '>= 0.10'}
  path-exists@4.0.0:
    resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
    engines: {node: '>=8'}
  path-is-absolute@1.0.1:
    resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
    engines: {node: '>=0.10.0'}
  path-key@3.1.1:
    resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
    engines: {node: '>=8'}
  path-scurry@1.11.1:
    resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
    engines: {node: '>=16 || 14 >=14.18'}
  pathval@1.1.1:
    resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
  pause-stream@0.0.11:
    resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==}
  picocolors@1.1.1:
    resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
  picomatch@4.0.4:
    resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
    engines: {node: '>=12'}
  pify@4.0.1:
    resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
    engines: {node: '>=6'}
  platform@1.3.6:
    resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
  pngjs@5.0.0:
    resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
    engines: {node: '>=10.13.0'}
  postcss@8.5.8:
    resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
    engines: {node: ^10 || ^12 || >=14}
  process-nextick-args@2.0.1:
    resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
  proto-list@1.2.4:
    resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
  prr@1.0.1:
    resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
  psl@1.15.0:
    resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
  pump@3.0.4:
    resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==}
  punycode@2.3.1:
    resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
    engines: {node: '>=6'}
  qrcode@1.5.4:
    resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==}
    engines: {node: '>=10.13.0'}
    hasBin: true
  qs@6.15.0:
    resolution: {integrity: sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==}
    engines: {node: '>=0.6'}
  querystringify@2.2.0:
    resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
  readable-stream@2.3.8:
    resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
  readdirp@4.1.2:
    resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
    engines: {node: '>= 14.18.0'}
  require-directory@2.1.1:
    resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
    engines: {node: '>=0.10.0'}
  require-from-string@2.0.2:
    resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
    engines: {node: '>=0.10.0'}
  require-main-filename@2.0.0:
    resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
  requires-port@1.0.0:
    resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
  resolve-url@0.2.1:
    resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
    deprecated: https://github.com/lydell/resolve-url#deprecated
  rollup@4.60.0:
    resolution: {integrity: sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==}
    engines: {node: '>=18.0.0', npm: '>=8.0.0'}
    hasBin: true
  safe-buffer@5.1.2:
    resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
  safer-buffer@2.1.2:
    resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
  sass-loader@16.0.7:
    resolution: {integrity: sha512-w6q+fRHourZ+e+xA1kcsF27iGM6jdB8teexYCfdUw0sYgcDNeZESnDNT9sUmmPm3ooziwUJXGwZJSTF3kOdBfA==}
    engines: {node: '>= 18.12.0'}
    peerDependencies:
      '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0
      node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
      sass: ^1.3.0
      sass-embedded: '*'
      webpack: ^5.0.0
    peerDependenciesMeta:
      '@rspack/core':
        optional: true
      node-sass:
        optional: true
      sass:
        optional: true
      sass-embedded:
        optional: true
      webpack:
        optional: true
  sass@1.98.0:
    resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==}
    engines: {node: '>=14.0.0'}
    hasBin: true
  sax@1.2.4:
    resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==}
  sax@1.6.0:
    resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==}
    engines: {node: '>=11.0.0'}
  schema-utils@3.3.0:
    resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==}
    engines: {node: '>= 10.13.0'}
  schema-utils@4.3.3:
    resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==}
    engines: {node: '>= 10.13.0'}
  sdk-base@2.0.1:
    resolution: {integrity: sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==}
  semver@5.7.2:
    resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
    hasBin: true
  semver@6.3.1:
    resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
    hasBin: true
  semver@7.7.4:
    resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
    engines: {node: '>=10'}
    hasBin: true
  set-blocking@2.0.0:
    resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
  shebang-command@2.0.0:
    resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
    engines: {node: '>=8'}
  shebang-regex@3.0.0:
    resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
    engines: {node: '>=8'}
  side-channel-list@1.0.0:
    resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
    engines: {node: '>= 0.4'}
  side-channel-map@1.0.1:
    resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
    engines: {node: '>= 0.4'}
  side-channel-weakmap@1.0.2:
    resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
    engines: {node: '>= 0.4'}
  side-channel@1.1.0:
    resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
    engines: {node: '>= 0.4'}
  signal-exit@4.1.0:
    resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
    engines: {node: '>=14'}
  sortablejs@1.15.7:
    resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==}
  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.6.1:
    resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
    engines: {node: '>=0.10.0'}
  source-map@0.7.6:
    resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
    engines: {node: '>= 12'}
  statuses@1.5.0:
    resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
    engines: {node: '>= 0.6'}
  stream-http@2.8.2:
    resolution: {integrity: sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==}
  stream-wormhole@1.1.0:
    resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==}
    engines: {node: '>=4.0.0'}
  string-width@4.2.3:
    resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
    engines: {node: '>=8'}
  string-width@5.1.2:
    resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
    engines: {node: '>=12'}
  string_decoder@1.1.1:
    resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
  strip-ansi@6.0.1:
    resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
    engines: {node: '>=8'}
  strip-ansi@7.2.0:
    resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==}
    engines: {node: '>=12'}
  stylus-loader@3.0.2:
    resolution: {integrity: sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==}
    peerDependencies:
      stylus: '>=0.52.4'
  stylus@0.54.8:
    resolution: {integrity: sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==}
    hasBin: true
  supports-color@8.1.1:
    resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
    engines: {node: '>=10'}
  tapable@2.3.2:
    resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
    engines: {node: '>=6'}
  terser-webpack-plugin@5.4.0:
    resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==}
    engines: {node: '>= 10.13.0'}
    peerDependencies:
      '@swc/core': '*'
      esbuild: '*'
      uglify-js: '*'
      webpack: ^5.1.0
    peerDependenciesMeta:
      '@swc/core':
        optional: true
      esbuild:
        optional: true
      uglify-js:
        optional: true
  terser@5.46.1:
    resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==}
    engines: {node: '>=10'}
    hasBin: true
  thenify-all@1.6.0:
    resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
    engines: {node: '>=0.8'}
  thenify@3.3.1:
    resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
  through@2.3.8:
    resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
  to-arraybuffer@1.0.1:
    resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==}
  tough-cookie@4.1.4:
    resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
    engines: {node: '>=6'}
  tr46@0.0.3:
    resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
  tslib@2.3.0:
    resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
  tslib@2.8.1:
    resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
  type-detect@4.1.0:
    resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
    engines: {node: '>=4'}
  undici-types@7.18.2:
    resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
  unescape@1.0.1:
    resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==}
    engines: {node: '>=0.10.0'}
  universalify@0.2.0:
    resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
    engines: {node: '>= 4.0.0'}
  update-browserslist-db@1.2.3:
    resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
    hasBin: true
    peerDependencies:
      browserslist: '>= 4.21.0'
  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-parse@1.5.10:
    resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
  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==}
  utility@1.18.0:
    resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==}
    engines: {node: '>= 0.12.0'}
  vite@5.4.21:
    resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
    engines: {node: ^18.0.0 || >=20.0.0}
    hasBin: true
    peerDependencies:
      '@types/node': ^18.0.0 || >=20.0.0
      less: '*'
      lightningcss: ^1.21.0
      sass: '*'
      sass-embedded: '*'
      stylus: '*'
      sugarss: '*'
      terser: ^5.4.0
    peerDependenciesMeta:
      '@types/node':
        optional: true
      less:
        optional: true
      lightningcss:
        optional: true
      sass:
        optional: true
      sass-embedded:
        optional: true
      stylus:
        optional: true
      sugarss:
        optional: true
      terser:
        optional: true
  vue-barcode@1.3.0:
    resolution: {integrity: sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==}
  vue-component-type-helpers@2.2.12:
    resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==}
  vue-component-type-helpers@3.2.6:
    resolution: {integrity: sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==}
  vue-draggable-next@2.3.0:
    resolution: {integrity: sha512-ymbY0UIwfSdg0iDN/iyNNwUrTqZ/6KbPryzsvTNXBLuDCuOBdNijSK8yynNtmiSj6RapTPQfjLGQdJrZkzBd2w==}
    peerDependencies:
      sortablejs: ^1.14.0
      vue: ^3.5.17
  vue-qrcode@2.2.2:
    resolution: {integrity: sha512-SbrXq/mSb1g2tbDyXPe9gy9KiMYsvxWKRErlpij1BqiFoHwQckheZV63CTw6yRLLUVG2RXAVlX+APkpdCK7SQQ==}
    peerDependencies:
      qrcode: ^1.0.0
      vue: ^2.7.0 || ^3.0.0
  vue-router@4.6.4:
    resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
    peerDependencies:
      vue: ^3.5.0
  vue@3.5.30:
    resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==}
    peerDependencies:
      typescript: '*'
    peerDependenciesMeta:
      typescript:
        optional: true
  vuex@4.1.0:
    resolution: {integrity: sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==}
    peerDependencies:
      vue: ^3.2.0
  watchpack@2.5.1:
    resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==}
    engines: {node: '>=10.13.0'}
  webidl-conversions@3.0.1:
    resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
  webpack-sources@3.3.4:
    resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==}
    engines: {node: '>=10.13.0'}
  webpack@5.105.4:
    resolution: {integrity: sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==}
    engines: {node: '>=10.13.0'}
    hasBin: true
    peerDependencies:
      webpack-cli: '*'
    peerDependenciesMeta:
      webpack-cli:
        optional: true
  whatwg-url@5.0.0:
    resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
  when@3.6.4:
    resolution: {integrity: sha512-d1VUP9F96w664lKINMGeElWdhhb5sC+thXM+ydZGU3ZnaE09Wv6FaS+mpM9570kcDs/xMfcXJBTLsMdHEFYY9Q==}
  which-module@2.0.1:
    resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
  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'}
  wrap-ansi@6.2.0:
    resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
    engines: {node: '>=8'}
  wrap-ansi@7.0.0:
    resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
    engines: {node: '>=10'}
  wrap-ansi@8.1.0:
    resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
    engines: {node: '>=12'}
  wrappy@1.0.2:
    resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
  ws@7.5.10:
    resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==}
    engines: {node: '>=8.3.0'}
    peerDependencies:
      bufferutil: ^4.0.1
      utf-8-validate: ^5.0.2
    peerDependenciesMeta:
      bufferutil:
        optional: true
      utf-8-validate:
        optional: true
  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==}
    engines: {node: '>=0.4'}
  y18n@4.0.3:
    resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
  yallist@3.1.1:
    resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
  yargs-parser@18.1.3:
    resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
    engines: {node: '>=6'}
  yargs@15.4.1:
    resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
    engines: {node: '>=8'}
  zrender@5.6.1:
    resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
snapshots:
  '@babel/code-frame@7.29.0':
    dependencies:
      '@babel/helper-validator-identifier': 7.28.5
      js-tokens: 4.0.0
      picocolors: 1.1.1
  '@babel/compat-data@7.29.0': {}
  '@babel/core@7.29.0':
    dependencies:
      '@babel/code-frame': 7.29.0
      '@babel/generator': 7.29.1
      '@babel/helper-compilation-targets': 7.28.6
      '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
      '@babel/helpers': 7.29.2
      '@babel/parser': 7.29.2
      '@babel/template': 7.28.6
      '@babel/traverse': 7.29.0
      '@babel/types': 7.29.0
      '@jridgewell/remapping': 2.3.5
      convert-source-map: 2.0.0
      debug: 4.4.3
      gensync: 1.0.0-beta.2
      json5: 2.2.3
      semver: 6.3.1
    transitivePeerDependencies:
      - supports-color
  '@babel/generator@7.29.1':
    dependencies:
      '@babel/parser': 7.29.2
      '@babel/types': 7.29.0
      '@jridgewell/gen-mapping': 0.3.13
      '@jridgewell/trace-mapping': 0.3.31
      jsesc: 3.1.0
  '@babel/helper-compilation-targets@7.28.6':
    dependencies:
      '@babel/compat-data': 7.29.0
      '@babel/helper-validator-option': 7.27.1
      browserslist: 4.28.1
      lru-cache: 5.1.1
      semver: 6.3.1
  '@babel/helper-globals@7.28.0': {}
  '@babel/helper-module-imports@7.28.6':
    dependencies:
      '@babel/traverse': 7.29.0
      '@babel/types': 7.29.0
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
    dependencies:
      '@babel/core': 7.29.0
      '@babel/helper-module-imports': 7.28.6
      '@babel/helper-validator-identifier': 7.28.5
      '@babel/traverse': 7.29.0
    transitivePeerDependencies:
      - supports-color
  '@babel/helper-plugin-utils@7.28.6': {}
  '@babel/helper-string-parser@7.27.1': {}
  '@babel/helper-validator-identifier@7.28.5': {}
  '@babel/helper-validator-option@7.27.1': {}
  '@babel/helpers@7.29.2':
    dependencies:
      '@babel/template': 7.28.6
      '@babel/types': 7.29.0
  '@babel/parser@7.29.2':
    dependencies:
      '@babel/types': 7.29.0
  '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.0)':
    dependencies:
      '@babel/core': 7.29.0
      '@babel/helper-plugin-utils': 7.28.6
  '@babel/template@7.28.6':
    dependencies:
      '@babel/code-frame': 7.29.0
      '@babel/parser': 7.29.2
      '@babel/types': 7.29.0
  '@babel/traverse@7.29.0':
    dependencies:
      '@babel/code-frame': 7.29.0
      '@babel/generator': 7.29.1
      '@babel/helper-globals': 7.28.0
      '@babel/parser': 7.29.2
      '@babel/template': 7.28.6
      '@babel/types': 7.29.0
      debug: 4.4.3
    transitivePeerDependencies:
      - supports-color
  '@babel/types@7.29.0':
    dependencies:
      '@babel/helper-string-parser': 7.27.1
      '@babel/helper-validator-identifier': 7.28.5
  '@ctrl/tinycolor@4.2.0': {}
  '@element-plus/icons-vue@2.3.2(vue@3.5.30)':
    dependencies:
      vue: 3.5.30
  '@esbuild/aix-ppc64@0.21.5':
    optional: true
  '@esbuild/android-arm64@0.21.5':
    optional: true
  '@esbuild/android-arm@0.21.5':
    optional: true
  '@esbuild/android-x64@0.21.5':
    optional: true
  '@esbuild/darwin-arm64@0.21.5':
    optional: true
  '@esbuild/darwin-x64@0.21.5':
    optional: true
  '@esbuild/freebsd-arm64@0.21.5':
    optional: true
  '@esbuild/freebsd-x64@0.21.5':
    optional: true
  '@esbuild/linux-arm64@0.21.5':
    optional: true
  '@esbuild/linux-arm@0.21.5':
    optional: true
  '@esbuild/linux-ia32@0.21.5':
    optional: true
  '@esbuild/linux-loong64@0.21.5':
    optional: true
  '@esbuild/linux-mips64el@0.21.5':
    optional: true
  '@esbuild/linux-ppc64@0.21.5':
    optional: true
  '@esbuild/linux-riscv64@0.21.5':
    optional: true
  '@esbuild/linux-s390x@0.21.5':
    optional: true
  '@esbuild/linux-x64@0.21.5':
    optional: true
  '@esbuild/netbsd-x64@0.21.5':
    optional: true
  '@esbuild/openbsd-x64@0.21.5':
    optional: true
  '@esbuild/sunos-x64@0.21.5':
    optional: true
  '@esbuild/win32-arm64@0.21.5':
    optional: true
  '@esbuild/win32-ia32@0.21.5':
    optional: true
  '@esbuild/win32-x64@0.21.5':
    optional: true
  '@floating-ui/core@1.7.5':
    dependencies:
      '@floating-ui/utils': 0.2.11
  '@floating-ui/dom@1.7.6':
    dependencies:
      '@floating-ui/core': 1.7.5
      '@floating-ui/utils': 0.2.11
  '@floating-ui/utils@0.2.11': {}
  '@isaacs/cliui@8.0.2':
    dependencies:
      string-width: 5.1.2
      string-width-cjs: string-width@4.2.3
      strip-ansi: 7.2.0
      strip-ansi-cjs: strip-ansi@6.0.1
      wrap-ansi: 8.1.0
      wrap-ansi-cjs: wrap-ansi@7.0.0
  '@jridgewell/gen-mapping@0.3.13':
    dependencies:
      '@jridgewell/sourcemap-codec': 1.5.5
      '@jridgewell/trace-mapping': 0.3.31
  '@jridgewell/remapping@2.3.5':
    dependencies:
      '@jridgewell/gen-mapping': 0.3.13
      '@jridgewell/trace-mapping': 0.3.31
  '@jridgewell/resolve-uri@3.1.2': {}
  '@jridgewell/source-map@0.3.11':
    dependencies:
      '@jridgewell/gen-mapping': 0.3.13
      '@jridgewell/trace-mapping': 0.3.31
  '@jridgewell/sourcemap-codec@1.5.5': {}
  '@jridgewell/trace-mapping@0.3.31':
    dependencies:
      '@jridgewell/resolve-uri': 3.1.2
      '@jridgewell/sourcemap-codec': 1.5.5
  '@microsoft/signalr@6.0.25':
    dependencies:
      abort-controller: 3.0.0
      eventsource: 1.1.2
      fetch-cookie: 0.11.0
      node-fetch: 2.7.0
      ws: 7.5.10
    transitivePeerDependencies:
      - bufferutil
      - encoding
      - utf-8-validate
  '@one-ini/wasm@0.1.1': {}
  '@parcel/watcher-android-arm64@2.5.6':
    optional: true
  '@parcel/watcher-darwin-arm64@2.5.6':
    optional: true
  '@parcel/watcher-darwin-x64@2.5.6':
    optional: true
  '@parcel/watcher-freebsd-x64@2.5.6':
    optional: true
  '@parcel/watcher-linux-arm-glibc@2.5.6':
    optional: true
  '@parcel/watcher-linux-arm-musl@2.5.6':
    optional: true
  '@parcel/watcher-linux-arm64-glibc@2.5.6':
    optional: true
  '@parcel/watcher-linux-arm64-musl@2.5.6':
    optional: true
  '@parcel/watcher-linux-x64-glibc@2.5.6':
    optional: true
  '@parcel/watcher-linux-x64-musl@2.5.6':
    optional: true
  '@parcel/watcher-win32-arm64@2.5.6':
    optional: true
  '@parcel/watcher-win32-ia32@2.5.6':
    optional: true
  '@parcel/watcher-win32-x64@2.5.6':
    optional: true
  '@parcel/watcher@2.5.6':
    dependencies:
      detect-libc: 2.1.2
      is-glob: 4.0.3
      node-addon-api: 7.1.1
      picomatch: 4.0.4
    optionalDependencies:
      '@parcel/watcher-android-arm64': 2.5.6
      '@parcel/watcher-darwin-arm64': 2.5.6
      '@parcel/watcher-darwin-x64': 2.5.6
      '@parcel/watcher-freebsd-x64': 2.5.6
      '@parcel/watcher-linux-arm-glibc': 2.5.6
      '@parcel/watcher-linux-arm-musl': 2.5.6
      '@parcel/watcher-linux-arm64-glibc': 2.5.6
      '@parcel/watcher-linux-arm64-musl': 2.5.6
      '@parcel/watcher-linux-x64-glibc': 2.5.6
      '@parcel/watcher-linux-x64-musl': 2.5.6
      '@parcel/watcher-win32-arm64': 2.5.6
      '@parcel/watcher-win32-ia32': 2.5.6
      '@parcel/watcher-win32-x64': 2.5.6
    optional: true
  '@pkgjs/parseargs@0.11.0':
    optional: true
  '@rollup/rollup-android-arm-eabi@4.60.0':
    optional: true
  '@rollup/rollup-android-arm64@4.60.0':
    optional: true
  '@rollup/rollup-darwin-arm64@4.60.0':
    optional: true
  '@rollup/rollup-darwin-x64@4.60.0':
    optional: true
  '@rollup/rollup-freebsd-arm64@4.60.0':
    optional: true
  '@rollup/rollup-freebsd-x64@4.60.0':
    optional: true
  '@rollup/rollup-linux-arm-gnueabihf@4.60.0':
    optional: true
  '@rollup/rollup-linux-arm-musleabihf@4.60.0':
    optional: true
  '@rollup/rollup-linux-arm64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-arm64-musl@4.60.0':
    optional: true
  '@rollup/rollup-linux-loong64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-loong64-musl@4.60.0':
    optional: true
  '@rollup/rollup-linux-ppc64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-ppc64-musl@4.60.0':
    optional: true
  '@rollup/rollup-linux-riscv64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-riscv64-musl@4.60.0':
    optional: true
  '@rollup/rollup-linux-s390x-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-x64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-linux-x64-musl@4.60.0':
    optional: true
  '@rollup/rollup-openbsd-x64@4.60.0':
    optional: true
  '@rollup/rollup-openharmony-arm64@4.60.0':
    optional: true
  '@rollup/rollup-win32-arm64-msvc@4.60.0':
    optional: true
  '@rollup/rollup-win32-ia32-msvc@4.60.0':
    optional: true
  '@rollup/rollup-win32-x64-gnu@4.60.0':
    optional: true
  '@rollup/rollup-win32-x64-msvc@4.60.0':
    optional: true
  '@sxzz/popperjs-es@2.11.8': {}
  '@types/eslint-scope@3.7.7':
    dependencies:
      '@types/eslint': 9.6.1
      '@types/estree': 1.0.8
  '@types/eslint@9.6.1':
    dependencies:
      '@types/estree': 1.0.8
      '@types/json-schema': 7.0.15
  '@types/estree@1.0.8': {}
  '@types/json-schema@7.0.15': {}
  '@types/lodash-es@4.17.12':
    dependencies:
      '@types/lodash': 4.17.24
  '@types/lodash@4.17.24': {}
  '@types/node@25.5.0':
    dependencies:
      undici-types: 7.18.2
  '@types/web-bluetooth@0.0.20': {}
  '@vitejs/plugin-vue@4.6.2(vite@5.4.21(@types/node@25.5.0)(less@4.6.4)(sass@1.98.0)(stylus@0.54.8)(terser@5.46.1))(vue@3.5.30)':
    dependencies:
      vite: 5.4.21(@types/node@25.5.0)(less@4.6.4)(sass@1.98.0)(stylus@0.54.8)(terser@5.46.1)
      vue: 3.5.30
  '@vue/compiler-core@3.5.30':
    dependencies:
      '@babel/parser': 7.29.2
      '@vue/shared': 3.5.30
      entities: 7.0.1
      estree-walker: 2.0.2
      source-map-js: 1.2.1
  '@vue/compiler-dom@3.5.30':
    dependencies:
      '@vue/compiler-core': 3.5.30
      '@vue/shared': 3.5.30
  '@vue/compiler-sfc@3.5.30':
    dependencies:
      '@babel/parser': 7.29.2
      '@vue/compiler-core': 3.5.30
      '@vue/compiler-dom': 3.5.30
      '@vue/compiler-ssr': 3.5.30
      '@vue/shared': 3.5.30
      estree-walker: 2.0.2
      magic-string: 0.30.21
      postcss: 8.5.8
      source-map-js: 1.2.1
  '@vue/compiler-ssr@3.5.30':
    dependencies:
      '@vue/compiler-dom': 3.5.30
      '@vue/shared': 3.5.30
  '@vue/devtools-api@6.6.4': {}
  '@vue/reactivity@3.5.30':
    dependencies:
      '@vue/shared': 3.5.30
  '@vue/runtime-core@3.5.30':
    dependencies:
      '@vue/reactivity': 3.5.30
      '@vue/shared': 3.5.30
  '@vue/runtime-dom@3.5.30':
    dependencies:
      '@vue/reactivity': 3.5.30
      '@vue/runtime-core': 3.5.30
      '@vue/shared': 3.5.30
      csstype: 3.2.3
  '@vue/server-renderer@3.5.30(vue@3.5.30)':
    dependencies:
      '@vue/compiler-ssr': 3.5.30
      '@vue/shared': 3.5.30
      vue: 3.5.30
  '@vue/shared@3.5.30': {}
  '@vue/test-utils@2.4.6':
    dependencies:
      js-beautify: 1.15.4
      vue-component-type-helpers: 2.2.12
  '@vueuse/core@12.0.0':
    dependencies:
      '@types/web-bluetooth': 0.0.20
      '@vueuse/metadata': 12.0.0
      '@vueuse/shared': 12.0.0
      vue: 3.5.30
    transitivePeerDependencies:
      - typescript
  '@vueuse/metadata@12.0.0': {}
  '@vueuse/shared@12.0.0':
    dependencies:
      vue: 3.5.30
    transitivePeerDependencies:
      - typescript
  '@webassemblyjs/ast@1.14.1':
    dependencies:
      '@webassemblyjs/helper-numbers': 1.13.2
      '@webassemblyjs/helper-wasm-bytecode': 1.13.2
  '@webassemblyjs/floating-point-hex-parser@1.13.2': {}
  '@webassemblyjs/helper-api-error@1.13.2': {}
  '@webassemblyjs/helper-buffer@1.14.1': {}
  '@webassemblyjs/helper-numbers@1.13.2':
    dependencies:
      '@webassemblyjs/floating-point-hex-parser': 1.13.2
      '@webassemblyjs/helper-api-error': 1.13.2
      '@xtuc/long': 4.2.2
  '@webassemblyjs/helper-wasm-bytecode@1.13.2': {}
  '@webassemblyjs/helper-wasm-section@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/helper-buffer': 1.14.1
      '@webassemblyjs/helper-wasm-bytecode': 1.13.2
      '@webassemblyjs/wasm-gen': 1.14.1
  '@webassemblyjs/ieee754@1.13.2':
    dependencies:
      '@xtuc/ieee754': 1.2.0
  '@webassemblyjs/leb128@1.13.2':
    dependencies:
      '@xtuc/long': 4.2.2
  '@webassemblyjs/utf8@1.13.2': {}
  '@webassemblyjs/wasm-edit@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/helper-buffer': 1.14.1
      '@webassemblyjs/helper-wasm-bytecode': 1.13.2
      '@webassemblyjs/helper-wasm-section': 1.14.1
      '@webassemblyjs/wasm-gen': 1.14.1
      '@webassemblyjs/wasm-opt': 1.14.1
      '@webassemblyjs/wasm-parser': 1.14.1
      '@webassemblyjs/wast-printer': 1.14.1
  '@webassemblyjs/wasm-gen@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/helper-wasm-bytecode': 1.13.2
      '@webassemblyjs/ieee754': 1.13.2
      '@webassemblyjs/leb128': 1.13.2
      '@webassemblyjs/utf8': 1.13.2
  '@webassemblyjs/wasm-opt@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/helper-buffer': 1.14.1
      '@webassemblyjs/wasm-gen': 1.14.1
      '@webassemblyjs/wasm-parser': 1.14.1
  '@webassemblyjs/wasm-parser@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/helper-api-error': 1.13.2
      '@webassemblyjs/helper-wasm-bytecode': 1.13.2
      '@webassemblyjs/ieee754': 1.13.2
      '@webassemblyjs/leb128': 1.13.2
      '@webassemblyjs/utf8': 1.13.2
  '@webassemblyjs/wast-printer@1.14.1':
    dependencies:
      '@webassemblyjs/ast': 1.14.1
      '@xtuc/long': 4.2.2
  '@xtuc/ieee754@1.2.0': {}
  '@xtuc/long@4.2.2': {}
  abbrev@2.0.0: {}
  abort-controller@3.0.0:
    dependencies:
      event-target-shim: 5.0.1
  acorn-import-phases@1.0.4(acorn@8.16.0):
    dependencies:
      acorn: 8.16.0
  acorn@8.16.0: {}
  address@1.2.2: {}
  agentkeepalive@3.5.3:
    dependencies:
      humanize-ms: 1.2.1
  ajv-formats@2.1.1(ajv@8.18.0):
    optionalDependencies:
      ajv: 8.18.0
  ajv-keywords@3.5.2(ajv@6.14.0):
    dependencies:
      ajv: 6.14.0
  ajv-keywords@5.1.0(ajv@8.18.0):
    dependencies:
      ajv: 8.18.0
      fast-deep-equal: 3.1.3
  ajv@6.14.0:
    dependencies:
      fast-deep-equal: 3.1.3
      fast-json-stable-stringify: 2.1.0
      json-schema-traverse: 0.4.1
      uri-js: 4.4.1
  ajv@8.18.0:
    dependencies:
      fast-deep-equal: 3.1.3
      fast-uri: 3.1.0
      json-schema-traverse: 1.0.0
      require-from-string: 2.0.2
  ali-oss@6.23.0:
    dependencies:
      address: 1.2.2
      agentkeepalive: 3.5.3
      bowser: 1.9.4
      copy-to: 2.0.1
      dateformat: 2.2.0
      debug: 4.4.3
      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.23
      merge-descriptors: 1.0.3
      mime: 2.6.0
      platform: 1.3.6
      pump: 3.0.4
      qs: 6.15.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
  ansi-regex@5.0.1: {}
  ansi-regex@6.2.2: {}
  ansi-styles@4.3.0:
    dependencies:
      color-convert: 2.0.1
  ansi-styles@6.2.3: {}
  any-promise@1.3.0: {}
  assertion-error@1.1.0: {}
  async-validator@4.2.5: {}
  atob@2.1.2: {}
  axios@0.21.4:
    dependencies:
      follow-redirects: 1.15.11
    transitivePeerDependencies:
      - debug
  balanced-match@1.0.2: {}
  baseline-browser-mapping@2.10.10: {}
  big.js@5.2.2: {}
  bowser@1.9.4: {}
  brace-expansion@1.1.12:
    dependencies:
      balanced-match: 1.0.2
      concat-map: 0.0.1
  brace-expansion@2.0.2:
    dependencies:
      balanced-match: 1.0.2
  browserslist@4.28.1:
    dependencies:
      baseline-browser-mapping: 2.10.10
      caniuse-lite: 1.0.30001781
      electron-to-chromium: 1.5.321
      node-releases: 2.0.36
      update-browserslist-db: 1.2.3(browserslist@4.28.1)
  buffer-from@1.1.2: {}
  builtin-status-codes@3.0.0: {}
  call-bind-apply-helpers@1.0.2:
    dependencies:
      es-errors: 1.3.0
      function-bind: 1.1.2
  call-bound@1.0.4:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      get-intrinsic: 1.3.0
  camelcase@5.3.1: {}
  caniuse-lite@1.0.30001781: {}
  chai@4.5.0:
    dependencies:
      assertion-error: 1.1.0
      check-error: 1.0.3
      deep-eql: 4.1.4
      get-func-name: 2.0.2
      loupe: 2.3.7
      pathval: 1.1.1
      type-detect: 4.1.0
  check-error@1.0.3:
    dependencies:
      get-func-name: 2.0.2
  chokidar@4.0.3:
    dependencies:
      readdirp: 4.1.2
  chrome-trace-event@1.0.4: {}
  cliui@6.0.0:
    dependencies:
      string-width: 4.2.3
      strip-ansi: 6.0.1
      wrap-ansi: 6.2.0
  color-convert@2.0.1:
    dependencies:
      color-name: 1.1.4
  color-name@1.1.4: {}
  commander@10.0.1: {}
  commander@2.20.3: {}
  concat-map@0.0.1: {}
  config-chain@1.1.13:
    dependencies:
      ini: 1.3.8
      proto-list: 1.2.4
  content-type@1.0.5: {}
  convert-source-map@2.0.0: {}
  copy-anything@3.0.5:
    dependencies:
      is-what: 4.1.16
  copy-to@2.0.1: {}
  core-js@3.49.0: {}
  core-util-is@1.0.3: {}
  cross-env@7.0.3:
    dependencies:
      cross-spawn: 7.0.6
  cross-spawn@7.0.6:
    dependencies:
      path-key: 3.1.1
      shebang-command: 2.0.0
      which: 2.0.2
  css-parse@2.0.0:
    dependencies:
      css: 2.2.4
  css@2.2.4:
    dependencies:
      inherits: 2.0.4
      source-map: 0.6.1
      source-map-resolve: 0.5.3
      urix: 0.1.0
  csstype@3.2.3: {}
  dateformat@2.2.0: {}
  dayjs@1.11.20: {}
  debug@3.1.0:
    dependencies:
      ms: 2.0.0
  debug@4.4.3:
    dependencies:
      ms: 2.1.3
  decamelize@1.2.0: {}
  decode-uri-component@0.2.2: {}
  deep-eql@4.1.4:
    dependencies:
      type-detect: 4.1.0
  default-user-agent@1.0.0:
    dependencies:
      os-name: 1.0.3
  destroy@1.2.0: {}
  detect-libc@2.1.2:
    optional: true
  digest-header@1.1.0: {}
  dijkstrajs@1.0.3: {}
  dunder-proto@1.0.1:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-errors: 1.3.0
      gopd: 1.2.0
  eastasianwidth@0.2.0: {}
  echarts@5.6.0:
    dependencies:
      tslib: 2.3.0
      zrender: 5.6.1
  editorconfig@1.0.7:
    dependencies:
      '@one-ini/wasm': 0.1.1
      commander: 10.0.1
      minimatch: 9.0.9
      semver: 7.7.4
  ee-first@1.1.1: {}
  electron-to-chromium@1.5.321: {}
  element-plus@2.13.6(vue@3.5.30):
    dependencies:
      '@ctrl/tinycolor': 4.2.0
      '@element-plus/icons-vue': 2.3.2(vue@3.5.30)
      '@floating-ui/dom': 1.7.6
      '@popperjs/core': '@sxzz/popperjs-es@2.11.8'
      '@types/lodash': 4.17.24
      '@types/lodash-es': 4.17.12
      '@vueuse/core': 12.0.0
      async-validator: 4.2.5
      dayjs: 1.11.20
      lodash: 4.17.23
      lodash-es: 4.17.23
      lodash-unified: 1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.23)(lodash@4.17.23)
      memoize-one: 6.0.0
      normalize-wheel-es: 1.2.0
      vue: 3.5.30
      vue-component-type-helpers: 3.2.6
    transitivePeerDependencies:
      - typescript
  emoji-regex@8.0.0: {}
  emoji-regex@9.2.2: {}
  emojis-list@3.0.0: {}
  end-of-stream@1.4.5:
    dependencies:
      once: 1.4.0
  end-or-error@1.0.1: {}
  enhanced-resolve@5.20.1:
    dependencies:
      graceful-fs: 4.2.11
      tapable: 2.3.2
  entities@7.0.1: {}
  errno@0.1.8:
    dependencies:
      prr: 1.0.1
    optional: true
  es-define-property@1.0.1: {}
  es-errors@1.3.0: {}
  es-module-lexer@2.0.0: {}
  es-object-atoms@1.1.1:
    dependencies:
      es-errors: 1.3.0
  esbuild@0.21.5:
    optionalDependencies:
      '@esbuild/aix-ppc64': 0.21.5
      '@esbuild/android-arm': 0.21.5
      '@esbuild/android-arm64': 0.21.5
      '@esbuild/android-x64': 0.21.5
      '@esbuild/darwin-arm64': 0.21.5
      '@esbuild/darwin-x64': 0.21.5
      '@esbuild/freebsd-arm64': 0.21.5
      '@esbuild/freebsd-x64': 0.21.5
      '@esbuild/linux-arm': 0.21.5
      '@esbuild/linux-arm64': 0.21.5
      '@esbuild/linux-ia32': 0.21.5
      '@esbuild/linux-loong64': 0.21.5
      '@esbuild/linux-mips64el': 0.21.5
      '@esbuild/linux-ppc64': 0.21.5
      '@esbuild/linux-riscv64': 0.21.5
      '@esbuild/linux-s390x': 0.21.5
      '@esbuild/linux-x64': 0.21.5
      '@esbuild/netbsd-x64': 0.21.5
      '@esbuild/openbsd-x64': 0.21.5
      '@esbuild/sunos-x64': 0.21.5
      '@esbuild/win32-arm64': 0.21.5
      '@esbuild/win32-ia32': 0.21.5
      '@esbuild/win32-x64': 0.21.5
  escalade@3.2.0: {}
  escape-html@1.0.3: {}
  eslint-scope@5.1.1:
    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: {}
  event-target-shim@5.0.1: {}
  events@3.3.0: {}
  eventsource@1.1.2: {}
  extend-shallow@2.0.1:
    dependencies:
      is-extendable: 0.1.1
  fast-deep-equal@3.1.3: {}
  fast-json-stable-stringify@2.1.0: {}
  fast-uri@3.1.0: {}
  fetch-cookie@0.11.0:
    dependencies:
      tough-cookie: 4.1.4
  find-up@4.1.0:
    dependencies:
      locate-path: 5.0.0
      path-exists: 4.0.0
  follow-redirects@1.15.11: {}
  foreground-child@3.3.1:
    dependencies:
      cross-spawn: 7.0.6
      signal-exit: 4.1.0
  formstream@1.5.2:
    dependencies:
      destroy: 1.2.0
      mime: 2.6.0
      node-hex: 1.0.1
      pause-stream: 0.0.11
  fs.realpath@1.0.0: {}
  fsevents@2.3.3:
    optional: true
  function-bind@1.1.2: {}
  gensync@1.0.0-beta.2: {}
  get-caller-file@2.0.5: {}
  get-func-name@2.0.2: {}
  get-intrinsic@1.3.0:
    dependencies:
      call-bind-apply-helpers: 1.0.2
      es-define-property: 1.0.1
      es-errors: 1.3.0
      es-object-atoms: 1.1.1
      function-bind: 1.1.2
      get-proto: 1.0.1
      gopd: 1.2.0
      has-symbols: 1.1.0
      hasown: 2.0.2
      math-intrinsics: 1.1.0
  get-proto@1.0.1:
    dependencies:
      dunder-proto: 1.0.1
      es-object-atoms: 1.1.1
  get-ready@1.0.0: {}
  glob-to-regexp@0.4.1: {}
  glob@10.5.0:
    dependencies:
      foreground-child: 3.3.1
      jackspeak: 3.4.3
      minimatch: 9.0.9
      minipass: 7.1.3
      package-json-from-dist: 1.0.1
      path-scurry: 1.11.1
  glob@7.2.3:
    dependencies:
      fs.realpath: 1.0.0
      inflight: 1.0.6
      inherits: 2.0.4
      minimatch: 3.1.5
      once: 1.4.0
      path-is-absolute: 1.0.1
  gopd@1.2.0: {}
  graceful-fs@4.2.11: {}
  has-flag@4.0.0: {}
  has-symbols@1.1.0: {}
  hasown@2.0.2:
    dependencies:
      function-bind: 1.1.2
  humanize-ms@1.2.1:
    dependencies:
      ms: 2.1.3
  iconv-lite@0.6.3:
    dependencies:
      safer-buffer: 2.1.2
  image-size@0.5.5:
    optional: true
  immutable@5.1.5: {}
  inflight@1.0.6:
    dependencies:
      once: 1.4.0
      wrappy: 1.0.2
  inherits@2.0.4: {}
  ini@1.3.8: {}
  is-class-hotfix@0.0.6: {}
  is-extendable@0.1.1: {}
  is-extglob@2.1.1:
    optional: true
  is-fullwidth-code-point@3.0.0: {}
  is-glob@4.0.3:
    dependencies:
      is-extglob: 2.1.1
    optional: true
  is-type-of@1.4.0:
    dependencies:
      core-util-is: 1.0.3
      is-class-hotfix: 0.0.6
      isstream: 0.1.2
  is-what@4.1.16: {}
  isarray@1.0.0: {}
  isexe@2.0.0: {}
  isstream@0.1.2: {}
  jackspeak@3.4.3:
    dependencies:
      '@isaacs/cliui': 8.0.2
    optionalDependencies:
      '@pkgjs/parseargs': 0.11.0
  jest-worker@27.5.1:
    dependencies:
      '@types/node': 25.5.0
      merge-stream: 2.0.0
      supports-color: 8.1.1
  js-base64@2.6.4: {}
  js-beautify@1.15.4:
    dependencies:
      config-chain: 1.1.13
      editorconfig: 1.0.7
      glob: 10.5.0
      js-cookie: 3.0.5
      nopt: 7.2.1
  js-cookie@3.0.5: {}
  js-tokens@4.0.0: {}
  jsbarcode@3.12.3: {}
  jsesc@3.1.0: {}
  json-parse-even-better-errors@2.3.1: {}
  json-schema-traverse@0.4.1: {}
  json-schema-traverse@1.0.0: {}
  json5@1.0.2:
    dependencies:
      minimist: 1.2.8
  json5@2.2.3: {}
  jstoxml@2.2.9: {}
  klona@2.0.6: {}
  less-loader@7.3.0(less@4.6.4)(webpack@5.105.4):
    dependencies:
      klona: 2.0.6
      less: 4.6.4
      loader-utils: 2.0.4
      schema-utils: 3.3.0
      webpack: 5.105.4
  less@4.6.4:
    dependencies:
      copy-anything: 3.0.5
      parse-node-version: 1.0.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.5.0
      source-map: 0.6.1
  loader-runner@4.3.1: {}
  loader-utils@1.4.2:
    dependencies:
      big.js: 5.2.2
      emojis-list: 3.0.0
      json5: 1.0.2
  loader-utils@2.0.4:
    dependencies:
      big.js: 5.2.2
      emojis-list: 3.0.0
      json5: 2.2.3
  locate-path@5.0.0:
    dependencies:
      p-locate: 4.1.0
  lodash-es@4.17.23: {}
  lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.23)(lodash@4.17.23):
    dependencies:
      '@types/lodash-es': 4.17.12
      lodash: 4.17.23
      lodash-es: 4.17.23
  lodash.clonedeep@4.5.0: {}
  lodash@4.17.23: {}
  loupe@2.3.7:
    dependencies:
      get-func-name: 2.0.2
  lru-cache@10.4.3: {}
  lru-cache@5.1.1:
    dependencies:
      yallist: 3.1.1
  magic-string@0.30.21:
    dependencies:
      '@jridgewell/sourcemap-codec': 1.5.5
  make-dir@2.1.0:
    dependencies:
      pify: 4.0.1
      semver: 5.7.2
    optional: true
  math-intrinsics@1.1.0: {}
  memoize-one@6.0.0: {}
  merge-descriptors@1.0.3: {}
  merge-stream@2.0.0: {}
  mime-db@1.52.0: {}
  mime-types@2.1.35:
    dependencies:
      mime-db: 1.52.0
  mime@1.6.0:
    optional: true
  mime@2.6.0: {}
  minimatch@3.1.5:
    dependencies:
      brace-expansion: 1.1.12
  minimatch@9.0.9:
    dependencies:
      brace-expansion: 2.0.2
  minimist@1.2.8: {}
  minipass@7.1.3: {}
  mkdirp@0.5.6:
    dependencies:
      minimist: 1.2.8
  mkdirp@1.0.4: {}
  ms@2.0.0: {}
  ms@2.1.3: {}
  mz@2.7.0:
    dependencies:
      any-promise: 1.3.0
      object-assign: 4.1.1
      thenify-all: 1.6.0
  nanoid@3.3.11: {}
  needle@3.5.0:
    dependencies:
      iconv-lite: 0.6.3
      sax: 1.6.0
    optional: true
  neo-async@2.6.2: {}
  node-addon-api@7.1.1:
    optional: true
  node-fetch@2.7.0:
    dependencies:
      whatwg-url: 5.0.0
  node-hex@1.0.1: {}
  node-releases@2.0.36: {}
  nopt@7.2.1:
    dependencies:
      abbrev: 2.0.0
  normalize-wheel-es@1.2.0: {}
  object-assign@4.1.1: {}
  object-inspect@1.13.4: {}
  once@1.4.0:
    dependencies:
      wrappy: 1.0.2
  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:
      p-try: 2.2.0
  p-locate@4.1.0:
    dependencies:
      p-limit: 2.3.0
  p-try@2.2.0: {}
  package-json-from-dist@1.0.1: {}
  parse-node-version@1.0.1: {}
  path-exists@4.0.0: {}
  path-is-absolute@1.0.1: {}
  path-key@3.1.1: {}
  path-scurry@1.11.1:
    dependencies:
      lru-cache: 10.4.3
      minipass: 7.1.3
  pathval@1.1.1: {}
  pause-stream@0.0.11:
    dependencies:
      through: 2.3.8
  picocolors@1.1.1: {}
  picomatch@4.0.4:
    optional: true
  pify@4.0.1:
    optional: true
  platform@1.3.6: {}
  pngjs@5.0.0: {}
  postcss@8.5.8:
    dependencies:
      nanoid: 3.3.11
      picocolors: 1.1.1
      source-map-js: 1.2.1
  process-nextick-args@2.0.1: {}
  proto-list@1.2.4: {}
  prr@1.0.1:
    optional: true
  psl@1.15.0:
    dependencies:
      punycode: 2.3.1
  pump@3.0.4:
    dependencies:
      end-of-stream: 1.4.5
      once: 1.4.0
  punycode@2.3.1: {}
  qrcode@1.5.4:
    dependencies:
      dijkstrajs: 1.0.3
      pngjs: 5.0.0
      yargs: 15.4.1
  qs@6.15.0:
    dependencies:
      side-channel: 1.1.0
  querystringify@2.2.0: {}
  readable-stream@2.3.8:
    dependencies:
      core-util-is: 1.0.3
      inherits: 2.0.4
      isarray: 1.0.0
      process-nextick-args: 2.0.1
      safe-buffer: 5.1.2
      string_decoder: 1.1.1
      util-deprecate: 1.0.2
  readdirp@4.1.2: {}
  require-directory@2.1.1: {}
  require-from-string@2.0.2: {}
  require-main-filename@2.0.0: {}
  requires-port@1.0.0: {}
  resolve-url@0.2.1: {}
  rollup@4.60.0:
    dependencies:
      '@types/estree': 1.0.8
    optionalDependencies:
      '@rollup/rollup-android-arm-eabi': 4.60.0
      '@rollup/rollup-android-arm64': 4.60.0
      '@rollup/rollup-darwin-arm64': 4.60.0
      '@rollup/rollup-darwin-x64': 4.60.0
      '@rollup/rollup-freebsd-arm64': 4.60.0
      '@rollup/rollup-freebsd-x64': 4.60.0
      '@rollup/rollup-linux-arm-gnueabihf': 4.60.0
      '@rollup/rollup-linux-arm-musleabihf': 4.60.0
      '@rollup/rollup-linux-arm64-gnu': 4.60.0
      '@rollup/rollup-linux-arm64-musl': 4.60.0
      '@rollup/rollup-linux-loong64-gnu': 4.60.0
      '@rollup/rollup-linux-loong64-musl': 4.60.0
      '@rollup/rollup-linux-ppc64-gnu': 4.60.0
      '@rollup/rollup-linux-ppc64-musl': 4.60.0
      '@rollup/rollup-linux-riscv64-gnu': 4.60.0
      '@rollup/rollup-linux-riscv64-musl': 4.60.0
      '@rollup/rollup-linux-s390x-gnu': 4.60.0
      '@rollup/rollup-linux-x64-gnu': 4.60.0
      '@rollup/rollup-linux-x64-musl': 4.60.0
      '@rollup/rollup-openbsd-x64': 4.60.0
      '@rollup/rollup-openharmony-arm64': 4.60.0
      '@rollup/rollup-win32-arm64-msvc': 4.60.0
      '@rollup/rollup-win32-ia32-msvc': 4.60.0
      '@rollup/rollup-win32-x64-gnu': 4.60.0
      '@rollup/rollup-win32-x64-msvc': 4.60.0
      fsevents: 2.3.3
  safe-buffer@5.1.2: {}
  safer-buffer@2.1.2: {}
  sass-loader@16.0.7(sass@1.98.0)(webpack@5.105.4):
    dependencies:
      neo-async: 2.6.2
    optionalDependencies:
      sass: 1.98.0
      webpack: 5.105.4
  sass@1.98.0:
    dependencies:
      chokidar: 4.0.3
      immutable: 5.1.5
      source-map-js: 1.2.1
    optionalDependencies:
      '@parcel/watcher': 2.5.6
  sax@1.2.4: {}
  sax@1.6.0: {}
  schema-utils@3.3.0:
    dependencies:
      '@types/json-schema': 7.0.15
      ajv: 6.14.0
      ajv-keywords: 3.5.2(ajv@6.14.0)
  schema-utils@4.3.3:
    dependencies:
      '@types/json-schema': 7.0.15
      ajv: 8.18.0
      ajv-formats: 2.1.1(ajv@8.18.0)
      ajv-keywords: 5.1.0(ajv@8.18.0)
  sdk-base@2.0.1:
    dependencies:
      get-ready: 1.0.0
  semver@5.7.2: {}
  semver@6.3.1: {}
  semver@7.7.4: {}
  set-blocking@2.0.0: {}
  shebang-command@2.0.0:
    dependencies:
      shebang-regex: 3.0.0
  shebang-regex@3.0.0: {}
  side-channel-list@1.0.0:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4
  side-channel-map@1.0.1:
    dependencies:
      call-bound: 1.0.4
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4
  side-channel-weakmap@1.0.2:
    dependencies:
      call-bound: 1.0.4
      es-errors: 1.3.0
      get-intrinsic: 1.3.0
      object-inspect: 1.13.4
      side-channel-map: 1.0.1
  side-channel@1.1.0:
    dependencies:
      es-errors: 1.3.0
      object-inspect: 1.13.4
      side-channel-list: 1.0.0
      side-channel-map: 1.0.1
      side-channel-weakmap: 1.0.2
  signal-exit@4.1.0: {}
  sortablejs@1.15.7: {}
  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.6.1: {}
  source-map@0.7.6: {}
  statuses@1.5.0: {}
  stream-http@2.8.2:
    dependencies:
      builtin-status-codes: 3.0.0
      inherits: 2.0.4
      readable-stream: 2.3.8
      to-arraybuffer: 1.0.1
      xtend: 4.0.2
  stream-wormhole@1.1.0: {}
  string-width@4.2.3:
    dependencies:
      emoji-regex: 8.0.0
      is-fullwidth-code-point: 3.0.0
      strip-ansi: 6.0.1
  string-width@5.1.2:
    dependencies:
      eastasianwidth: 0.2.0
      emoji-regex: 9.2.2
      strip-ansi: 7.2.0
  string_decoder@1.1.1:
    dependencies:
      safe-buffer: 5.1.2
  strip-ansi@6.0.1:
    dependencies:
      ansi-regex: 5.0.1
  strip-ansi@7.2.0:
    dependencies:
      ansi-regex: 6.2.2
  stylus-loader@3.0.2(stylus@0.54.8):
    dependencies:
      loader-utils: 1.4.2
      lodash.clonedeep: 4.5.0
      stylus: 0.54.8
      when: 3.6.4
  stylus@0.54.8:
    dependencies:
      css-parse: 2.0.0
      debug: 3.1.0
      glob: 7.2.3
      mkdirp: 1.0.4
      safer-buffer: 2.1.2
      sax: 1.2.4
      semver: 6.3.1
      source-map: 0.7.6
    transitivePeerDependencies:
      - supports-color
  supports-color@8.1.1:
    dependencies:
      has-flag: 4.0.0
  tapable@2.3.2: {}
  terser-webpack-plugin@5.4.0(webpack@5.105.4):
    dependencies:
      '@jridgewell/trace-mapping': 0.3.31
      jest-worker: 27.5.1
      schema-utils: 4.3.3
      terser: 5.46.1
      webpack: 5.105.4
  terser@5.46.1:
    dependencies:
      '@jridgewell/source-map': 0.3.11
      acorn: 8.16.0
      commander: 2.20.3
      source-map-support: 0.5.21
  thenify-all@1.6.0:
    dependencies:
      thenify: 3.3.1
  thenify@3.3.1:
    dependencies:
      any-promise: 1.3.0
  through@2.3.8: {}
  to-arraybuffer@1.0.1: {}
  tough-cookie@4.1.4:
    dependencies:
      psl: 1.15.0
      punycode: 2.3.1
      universalify: 0.2.0
      url-parse: 1.5.10
  tr46@0.0.3: {}
  tslib@2.3.0: {}
  tslib@2.8.1: {}
  type-detect@4.1.0: {}
  undici-types@7.18.2: {}
  unescape@1.0.1:
    dependencies:
      extend-shallow: 2.0.1
  universalify@0.2.0: {}
  update-browserslist-db@1.2.3(browserslist@4.28.1):
    dependencies:
      browserslist: 4.28.1
      escalade: 3.2.0
      picocolors: 1.1.1
  uri-js@4.4.1:
    dependencies:
      punycode: 2.3.1
  urix@0.1.0: {}
  url-parse@1.5.10:
    dependencies:
      querystringify: 2.2.0
      requires-port: 1.0.0
  urllib@2.44.0:
    dependencies:
      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.2
      humanize-ms: 1.2.1
      iconv-lite: 0.6.3
      pump: 3.0.4
      qs: 6.15.0
      statuses: 1.5.0
      utility: 1.18.0
  util-deprecate@1.0.2: {}
  utility@1.18.0:
    dependencies:
      copy-to: 2.0.1
      escape-html: 1.0.3
      mkdirp: 0.5.6
      mz: 2.7.0
      unescape: 1.0.1
  vite@5.4.21(@types/node@25.5.0)(less@4.6.4)(sass@1.98.0)(stylus@0.54.8)(terser@5.46.1):
    dependencies:
      esbuild: 0.21.5
      postcss: 8.5.8
      rollup: 4.60.0
    optionalDependencies:
      '@types/node': 25.5.0
      fsevents: 2.3.3
      less: 4.6.4
      sass: 1.98.0
      stylus: 0.54.8
      terser: 5.46.1
  vue-barcode@1.3.0:
    dependencies:
      jsbarcode: 3.12.3
  vue-component-type-helpers@2.2.12: {}
  vue-component-type-helpers@3.2.6: {}
  vue-draggable-next@2.3.0(sortablejs@1.15.7)(vue@3.5.30):
    dependencies:
      sortablejs: 1.15.7
      vue: 3.5.30
  vue-qrcode@2.2.2(qrcode@1.5.4)(vue@3.5.30):
    dependencies:
      qrcode: 1.5.4
      tslib: 2.8.1
      vue: 3.5.30
  vue-router@4.6.4(vue@3.5.30):
    dependencies:
      '@vue/devtools-api': 6.6.4
      vue: 3.5.30
  vue@3.5.30:
    dependencies:
      '@vue/compiler-dom': 3.5.30
      '@vue/compiler-sfc': 3.5.30
      '@vue/runtime-dom': 3.5.30
      '@vue/server-renderer': 3.5.30(vue@3.5.30)
      '@vue/shared': 3.5.30
  vuex@4.1.0(vue@3.5.30):
    dependencies:
      '@vue/devtools-api': 6.6.4
      vue: 3.5.30
  watchpack@2.5.1:
    dependencies:
      glob-to-regexp: 0.4.1
      graceful-fs: 4.2.11
  webidl-conversions@3.0.1: {}
  webpack-sources@3.3.4: {}
  webpack@5.105.4:
    dependencies:
      '@types/eslint-scope': 3.7.7
      '@types/estree': 1.0.8
      '@types/json-schema': 7.0.15
      '@webassemblyjs/ast': 1.14.1
      '@webassemblyjs/wasm-edit': 1.14.1
      '@webassemblyjs/wasm-parser': 1.14.1
      acorn: 8.16.0
      acorn-import-phases: 1.0.4(acorn@8.16.0)
      browserslist: 4.28.1
      chrome-trace-event: 1.0.4
      enhanced-resolve: 5.20.1
      es-module-lexer: 2.0.0
      eslint-scope: 5.1.1
      events: 3.3.0
      glob-to-regexp: 0.4.1
      graceful-fs: 4.2.11
      json-parse-even-better-errors: 2.3.1
      loader-runner: 4.3.1
      mime-types: 2.1.35
      neo-async: 2.6.2
      schema-utils: 4.3.3
      tapable: 2.3.2
      terser-webpack-plugin: 5.4.0(webpack@5.105.4)
      watchpack: 2.5.1
      webpack-sources: 3.3.4
    transitivePeerDependencies:
      - '@swc/core'
      - esbuild
      - uglify-js
  whatwg-url@5.0.0:
    dependencies:
      tr46: 0.0.3
      webidl-conversions: 3.0.1
  when@3.6.4: {}
  which-module@2.0.1: {}
  which@2.0.2:
    dependencies:
      isexe: 2.0.0
  win-release@1.1.1:
    dependencies:
      semver: 5.7.2
  wrap-ansi@6.2.0:
    dependencies:
      ansi-styles: 4.3.0
      string-width: 4.2.3
      strip-ansi: 6.0.1
  wrap-ansi@7.0.0:
    dependencies:
      ansi-styles: 4.3.0
      string-width: 4.2.3
      strip-ansi: 6.0.1
  wrap-ansi@8.1.0:
    dependencies:
      ansi-styles: 6.2.3
      string-width: 5.1.2
      strip-ansi: 7.2.0
  wrappy@1.0.2: {}
  ws@7.5.10: {}
  xml2js@0.6.2:
    dependencies:
      sax: 1.6.0
      xmlbuilder: 11.0.1
  xmlbuilder@11.0.1: {}
  xtend@4.0.2: {}
  y18n@4.0.3: {}
  yallist@3.1.1: {}
  yargs-parser@18.1.3:
    dependencies:
      camelcase: 5.3.1
      decamelize: 1.2.0
  yargs@15.4.1:
    dependencies:
      cliui: 6.0.0
      decamelize: 1.2.0
      find-up: 4.1.0
      get-caller-file: 2.0.5
      require-directory: 2.1.1
      require-main-filename: 2.0.0
      set-blocking: 2.0.0
      string-width: 4.2.3
      which-module: 2.0.1
      y18n: 4.0.3
      yargs-parser: 18.1.3
  zrender@5.6.1:
    dependencies:
      tslib: 2.3.0
Code/WMS/WIDESEA_WMSClient/public/webconfig.js
@@ -1,4 +1,4 @@
window.webConfig = {
    "webApiBaseUrl": "http://localhost:9293/",
    "webApiProduction":"http://localhost:9293/"
    "webApiBaseUrl": "http://localhost:9291/",
    "webApiProduction":"http://localhost:9291/"
}
Code/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue
@@ -244,7 +244,6 @@
              <el-button
                v-else
                :type="btn.type"
                size="small"
                :color="btn.color"
                :dark="false"
                :class="btn.class"
@@ -259,7 +258,6 @@
            <el-button
              type="default"
              style="padding: 0px 10px"
              size="small"
              :plain="true"
              v-if="showCustom"
              @click="showCustomModel"
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue
@@ -529,6 +529,7 @@
  onMounted,
  watch
} from 'vue';
import errorImgUrl from '@/assets/imgs/error-img.png'
export default defineComponent({
  components: {
    FormExpand,
@@ -830,7 +831,7 @@
  data() {
    return {
      // remoteCall: true,
      errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"'
      errorImg: `this.src='${errorImgUrl}'`
      // span: 1,
      // rangeFields: [],
    };
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue
@@ -489,6 +489,10 @@
import VolTableRender from "./VolTable/VolTableRender";
let _errMsg;
import { defineComponent, defineAsyncComponent } from "vue";
const tableErrorImg = new URL("../../assets/imgs/error.png", import.meta.url)
  .href;
export default defineComponent({
  //https://github.com/element-plus/element-plus/issues/1483
  //没有原先的selection属性了,看issue上使用select/selectall获取
@@ -660,7 +664,7 @@
      realMaxHeight: 0,
      enableEdit: false, // æ˜¯å¦å¯è¡¨æ ¼ç”¨ç¼–辑功能
      empty: this.allowEmpty ? "" : "--",
      defaultImg: 'this.src="' + require("@/assets/imgs/error.png") + '"',
      defaultImg: `this.src="${tableErrorImg}"`,
      loading: false,
      footer: {},
      total: 0,
Code/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue
@@ -83,7 +83,11 @@
  </div>
</template>
<script>
let OSS = require('ali-oss');
import OSS from 'ali-oss';
const uploadErrorImg = new URL('../../assets/imgs/error-img.png', import.meta.url)
  .href;
export default {
  components: {},
  props: {
@@ -213,7 +217,7 @@
  },
  data() {
    return {
      errorImg: 'this.src="' + require('@/assets/imgs/error-img.png') + '"',
      errorImg: `this.src="${uploadErrorImg}"`,
      changed: false, //手动上传成功后禁止重复上传,必须重新选择
      model: true,
      files: [],
Code/WMS/WIDESEA_WMSClient/src/extension/outbound/outStockLockInfo.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
// é¡µé¢æ‰©å±•配置:预留给业务二次扩展逻辑。
let extension = {
  components: {
    gridHeader: "",
    gridBody: "",
    gridFooter: "",
    modelHeader: "",
    modelBody: "",
    modelFooter: "",
  },
  tableAction: "",
  buttons: { view: [], box: [], detail: [] },
  methods: {
    onInit() {
      return true;
    },
    onInited() {
      return true;
    },
    searchBefore(param) {
      return true;
    },
    searchAfter(result) {
      return true;
    },
    addBefore(formData) {
      return true;
    },
    updateBefore(formData) {
      return true;
    },
    rowClick({ row, column, event }) {
      return true;
    },
    modelOpenAfter(row) {
      return true;
    },
  },
};
export default extension;
Code/WMS/WIDESEA_WMSClient/src/extension/stock/stock.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
// é¡µé¢æ‰©å±•配置:预留给库存页面二次开发。
let extension = {
  components: {
    gridHeader: "",
    gridBody: "",
    gridFooter: "",
    modelHeader: "",
    modelBody: "",
    modelFooter: "",
  },
  tableAction: "",
  buttons: { view: [], box: [], detail: [] },
  methods: {
    onInit() {
      return true;
    },
    onInited() {
      return true;
    },
    searchBefore(param) {
      return true;
    },
    searchAfter(result) {
      return true;
    },
    addBefore(formData) {
      return true;
    },
    updateBefore(formData) {
      return true;
    },
    rowClick({ row, column, event }) {
      return true;
    },
    modelOpenAfter(row) {
      return true;
    },
  },
};
export default extension;
Code/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Tenant.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
// é¡µé¢æ‰©å±•配置:预留给租户业务逻辑扩展。
let extension = {
  components: {
    gridHeader: "",
    gridBody: "",
    gridFooter: "",
    modelHeader: "",
    modelBody: "",
    modelFooter: "",
  },
  tableAction: "",
  buttons: { view: [], box: [], detail: [] },
  methods: {
    onInit() {
      return true;
    },
    onInited() {
      return true;
    },
    searchBefore(param) {
      return true;
    },
    searchAfter(result) {
      return true;
    },
    addBefore(formData) {
      return true;
    },
    updateBefore(formData) {
      return true;
    },
    rowClick({ row, column, event }) {
      return true;
    },
    modelOpenAfter(row) {
      return true;
    },
  },
};
export default extension;
Code/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -1,4 +1,4 @@

let viewgird = [
  {
    path: '/Sys_Log',
@@ -181,6 +181,26 @@
    name: 'mesOutboundOrder',
    component: () => import('@/views/outbound/mesOutboundOrder.vue')
  }
  , {
    path: '/OutStockLockInfo',
    name: 'OutStockLockInfo',
    component: () => import('@/views/outbound/outStockLockInfo.vue')
  }
  , {
    path: '/Sys_Tenant',
    name: 'Sys_Tenant',
    component: () => import('@/views/system/Sys_Tenant.vue')
  }
  , {
    path: '/Stock',
    name: 'Stock',
    component: () => import('@/views/stock/stock.vue')
  }
  , {
    path: '/PDA',
    name: 'PDA',
    component: () => import('@/views/system/PDA.vue')
  }
]
export default viewgird
Code/WMS/WIDESEA_WMSClient/src/views/Login.vue
@@ -117,9 +117,9 @@
    const loading = ref(false);
    const codeImgSrc = ref("");
    const userInfo = reactive({
      userName: "",
      password: "",
      verificationCode: "",
      userName: "admin",
      password: "123456",
      verificationCode: "1234",
      UUID: undefined,
    });
Code/WMS/WIDESEA_WMSClient/src/views/charts/bigdata.vue
@@ -105,7 +105,7 @@
  </div>
</template>
<script>
var echarts = require("echarts");
import * as echarts from "echarts";
let $chartLeft1,
  $chartLeft2,
  $chartLeft3,
Code/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/chart-options.js
@@ -1,4 +1,4 @@
var echarts = require("echarts");
import * as echarts from "echarts";
let chartLeft1 = {
  tooltip: {
    trigger: "axis",
Code/WMS/WIDESEA_WMSClient/src/views/charts/chart.vue
@@ -37,7 +37,7 @@
  </div>
</template>
<script>
let echarts = require("echarts");
import * as echarts from "echarts";
import options from "./chartOptions";
let $bar;
let $pie;
@@ -98,4 +98,4 @@
.m-charts ::v-deep(.el-tab-pane) {
  height: 100%;
}
</style>
</style>
Code/WMS/WIDESEA_WMSClient/src/views/charts/formChart.vue
@@ -55,7 +55,7 @@
<script>
import VolHeader from '@/components/basic/VolHeader.vue';
import VolForm from '@/components/basic/VolForm.vue';
let echarts = require('echarts');
import * as echarts from 'echarts';
import options from './chartOptions';
import {
  formFields1,
Code/WMS/WIDESEA_WMSClient/src/views/outbound/outStockLockInfo.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
<template>
  <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/outbound/outStockLockInfo.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    // é¡µé¢æ ¸å¿ƒé…ç½®ï¼šç»‘定后端 OutStockLockInfo æŽ§åˆ¶å™¨ã€‚
    const table = ref({
      key: "id",
      footer: "Foots",
      cnName: "出库锁定明细",
      name: "outStockLockInfo",
      url: "/OutStockLockInfo/",
      sortName: "id",
    });
    // æ–°å¢ž/编辑表单字段:与后端实体字段保持一致,避免字段丢失。
    const editFormFields = ref({
      orderNo: "",
      orderDetailId: "",
      orderType: "",
      batchNo: "",
      materielCode: "",
      materielName: "",
      stockId: "",
      orderQuantity: "",
      originalQuantity: "",
      assignQuantity: "",
      locationCode: "",
      palletCode: "",
      unit: "",
      taskNum: "",
      status: "",
      remark: "",
    });
    const editFormOptions = ref([
      [
        { field: "orderNo", title: "单据编号", type: "string", required: true },
        { field: "orderType", title: "单据类型", type: "select", dataKey: "outOrderType", data: [] },
        { field: "batchNo", title: "批次号", type: "string" },
        { field: "materielCode", title: "物料编号", type: "string" },
        { field: "materielName", title: "物料名称", type: "string" },
      ],
      [
        { field: "palletCode", title: "托盘编号", type: "string" },
        { field: "locationCode", title: "货位编号", type: "string" },
        { field: "assignQuantity", title: "分配出库量", type: "decimal" },
        { field: "status", title: "状态", type: "select", dataKey: "outStockStatus", data: [] },
        { field: "remark", title: "备注", type: "textarea" },
      ],
    ]);
    // æŸ¥è¯¢å­—段:提供业务定位常用条件。
    const searchFormFields = ref({
      orderNo: "",
      batchNo: "",
      materielCode: "",
      palletCode: "",
      locationCode: "",
      status: "",
    });
    const searchFormOptions = ref([
      [
        { title: "单据编号", field: "orderNo", type: "like" },
        { title: "批次号", field: "batchNo", type: "like" },
        { title: "物料编号", field: "materielCode", type: "like" },
      ],
      [
        { title: "托盘编号", field: "palletCode", type: "like" },
        { title: "货位编号", field: "locationCode", type: "like" },
        { title: "状态", field: "status", type: "select", dataKey: "outStockStatus", data: [] },
      ],
    ]);
    const columns = ref([
      { field: "id", title: "Id", type: "int", width: 90, hidden: true, readonly: true, require: true, align: "left" },
      { field: "orderNo", title: "单据编号", type: "string", width: 160, align: "left" },
      { field: "orderType", title: "单据类型", type: "int", width: 110, align: "left", bind: { key: "outOrderType", data: [] } },
      { field: "orderDetailId", title: "单据明细主键", type: "int", width: 120, align: "left", hidden: true },
      { field: "batchNo", title: "批次号", type: "string", width: 120, align: "left" },
      { field: "materielCode", title: "物料编号", type: "string", width: 130, align: "left" },
      { field: "materielName", title: "物料名称", type: "string", width: 180, align: "left" },
      { field: "stockId", title: "库存主键", type: "int", width: 110, align: "left", hidden: true },
      { field: "orderQuantity", title: "单据数量", type: "decimal", width: 110, align: "left" },
      { field: "originalQuantity", title: "原始库存量", type: "decimal", width: 110, align: "left" },
      { field: "assignQuantity", title: "分配出库量", type: "decimal", width: 120, align: "left" },
      { field: "locationCode", title: "货位编号", type: "string", width: 120, align: "left" },
      { field: "palletCode", title: "托盘编号", type: "string", width: 120, align: "left" },
      { field: "unit", title: "单位", type: "string", width: 90, align: "left" },
      { field: "taskNum", title: "任务号", type: "int", width: 100, align: "left" },
      { field: "status", title: "状态", type: "int", width: 100, align: "left", bind: { key: "outStockStatus", data: [] } },
      { field: "creater", title: "创建人", type: "string", width: 100, align: "left" },
      { field: "createDate", title: "创建时间", type: "datetime", width: 160, align: "left" },
      { field: "modifier", title: "修改人", type: "string", width: 100, align: "left", hidden: true },
      { field: "modifyDate", title: "修改时间", type: "datetime", width: 160, align: "left", hidden: true },
      { field: "remark", title: "备注", type: "string", width: 120, align: "left", hidden: true },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      table: "",
      columns: [],
      sortName: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code/WMS/WIDESEA_WMSClient/src/views/stock/stock.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,111 @@
<template>
  <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/stock/stock.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    // åº“存基础页:对接 Stock æŽ§åˆ¶å™¨ï¼Œæ”¯æŒåº“存主记录查询维护。
    const table = ref({
      key: "id",
      footer: "Foots",
      cnName: "库存",
      name: "stock",
      url: "/Stock/",
      sortName: "id",
    });
    const editFormFields = ref({
      palletCode: "",
      palletType: "",
      locationId: "",
      locationCode: "",
      warehouseId: "",
      stockStatus: "",
      outboundDate: "",
      remark: "",
    });
    const editFormOptions = ref([
      [
        { field: "palletCode", title: "托盘编号", type: "string", required: true },
        { field: "palletType", title: "托盘类型", type: "number" },
        { field: "locationCode", title: "货位编号", type: "string" },
      ],
      [
        { field: "warehouseId", title: "仓库", type: "select", dataKey: "warehouses", data: [] },
        { field: "stockStatus", title: "库存状态", type: "select", dataKey: "stockStatusEmun", data: [] },
        { field: "outboundDate", title: "出库日期", type: "datetime" },
      ],
      [{ field: "remark", title: "备注", type: "textarea" }],
    ]);
    const searchFormFields = ref({
      palletCode: "",
      locationCode: "",
      warehouseId: "",
      stockStatus: "",
      outboundDate: "",
    });
    const searchFormOptions = ref([
      [
        { title: "托盘编号", field: "palletCode", type: "like" },
        { title: "货位编号", field: "locationCode", type: "like" },
        { title: "仓库", field: "warehouseId", type: "select", dataKey: "warehouses", data: [] },
      ],
      [
        { title: "库存状态", field: "stockStatus", type: "select", dataKey: "stockStatusEmun", data: [] },
        { title: "出库日期", field: "outboundDate", type: "datetime" },
      ],
    ]);
    const columns = ref([
      { field: "id", title: "Id", type: "int", width: 90, hidden: true, readonly: true, require: true, align: "left" },
      { field: "palletCode", title: "托盘编号", type: "string", width: 130, align: "left" },
      { field: "palletType", title: "托盘类型", type: "int", width: 110, align: "left" },
      { field: "locationId", title: "货位ID", type: "int", width: 110, align: "left", hidden: true },
      { field: "locationCode", title: "货位编号", type: "string", width: 130, align: "left" },
      { field: "warehouseId", title: "仓库", type: "select", width: 110, align: "left", bind: { key: "warehouses", data: [] } },
      { field: "stockStatus", title: "库存状态", type: "int", width: 120, align: "left", bind: { key: "stockStatusEmun", data: [] } },
      { field: "outboundDate", title: "出库日期", type: "datetime", width: 160, align: "left" },
      { field: "creater", title: "创建人", type: "string", width: 100, align: "left" },
      { field: "createDate", title: "创建时间", type: "datetime", width: 160, align: "left" },
      { field: "modifier", title: "修改人", type: "string", width: 100, align: "left", hidden: true },
      { field: "modifyDate", title: "修改时间", type: "datetime", width: 160, align: "left", hidden: true },
      { field: "remark", title: "备注", type: "string", width: 140, align: "left" },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      table: "",
      columns: [],
      sortName: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code/WMS/WIDESEA_WMSClient/src/views/system/PDA.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
<template>
  <div class="pda-container">
    <el-card class="pda-card" shadow="hover">
      <template #header>
        <div class="card-header">PDA åº”用管理</div>
      </template>
      <el-form label-width="120px">
        <el-form-item label="当前版本号">
          <el-input v-model="clientVersion" placeholder="请输入当前PDA版本号" style="max-width: 280px" />
          <el-button type="primary" style="margin-left: 10px" @click="checkVersion">检查更新</el-button>
        </el-form-item>
        <el-form-item label="服务端版本结果">
          <span>{{ checkResult }}</span>
        </el-form-item>
        <el-form-item label="下载安装包">
          <el-button type="success" @click="downloadApp">下载最新 APK</el-button>
        </el-form-item>
        <el-form-item label="上传安装包">
          <el-upload
            :action="uploadUrl"
            :headers="uploadHeaders"
            name="fileInput"
            :show-file-list="true"
            :before-upload="beforeUpload"
            :on-success="onUploadSuccess"
            :on-error="onUploadError"
          >
            <el-button type="warning">上传新 APK</el-button>
          </el-upload>
        </el-form-item>
      </el-form>
    </el-card>
  </div>
</template>
<script>
import { defineComponent, ref, computed, getCurrentInstance } from "vue";
import store from "@/store/index";
import http from "@/api/http";
export default defineComponent({
  setup() {
    const clientVersion = ref("");
    const checkResult = ref("未检查");
    const { proxy } = getCurrentInstance();
    // ä¸Šä¼ åœ°å€ï¼šå¤ç”¨å…¨å±€ http åŸºç¡€åœ°å€ï¼Œä¿è¯ä¸Žå½“前环境一致。
    const uploadUrl = computed(() => `${http.ipAddress}api/PDA/UploadApp`);
    // ä¸Šä¼ é‰´æƒï¼šæ²¿ç”¨çŽ°æœ‰ token æœºåˆ¶ï¼Œé¿å…æŽ¥å£ 401。
    const uploadHeaders = computed(() => ({
      Authorization: store.getters.getToken(),
    }));
    const checkVersion = () => {
      if (!clientVersion.value) {
        proxy.$message.warning("请输入版本号");
        return;
      }
      http
        .get(`api/PDA/GetPDAVersion?version=${encodeURIComponent(clientVersion.value)}`, {}, true)
        .then((res) => {
          if (!res.status) {
            checkResult.value = res.message || "检查失败";
            return;
          }
          checkResult.value = res.data ? "需要更新" : "已是最新版本";
        });
    };
    const downloadApp = () => {
      window.open(`${http.ipAddress}api/PDA/DownLoadApp`, "_blank");
    };
    // ä¸Šä¼ å‰æ ¡éªŒï¼šé™åˆ¶ä¸Šä¼  apk,减少无效请求。
    const beforeUpload = (file) => {
      if (!file || !file.name || !file.name.toLowerCase().endsWith(".apk")) {
        proxy.$message.error("只允许上传 .apk æ–‡ä»¶");
        return false;
      }
      return true;
    };
    const onUploadSuccess = (response) => {
      proxy.$message[response && response.status ? "success" : "error"](
        (response && response.message) || "上传完成"
      );
    };
    const onUploadError = () => {
      proxy.$message.error("上传失败");
    };
    return {
      clientVersion,
      checkResult,
      uploadUrl,
      uploadHeaders,
      checkVersion,
      downloadApp,
      beforeUpload,
      onUploadSuccess,
      onUploadError,
    };
  },
});
</script>
<style lang="less" scoped>
.pda-container {
  height: 100%;
  padding: 12px;
}
.pda-card {
  max-width: 920px;
}
.card-header {
  font-size: 16px;
  font-weight: 600;
}
</style>
Code/WMS/WIDESEA_WMSClient/src/views/system/Sys_Tenant.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
<template>
  <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_Tenant.js";
import { ref, defineComponent } from "vue";
export default defineComponent({
  setup() {
    // ç§Ÿæˆ·ç®¡ç†ä¸»é…ç½®ï¼šå¯¹æŽ¥ api/tenant。
    const table = ref({
      key: "tenantId",
      footer: "Foots",
      cnName: "租户管理",
      name: "sys_Tenant",
      url: "/tenant/",
      sortName: "tenantId",
    });
    const editFormFields = ref({
      tenantName: "",
      tenantType: "",
      dbType: "",
      connectionString: "",
      status: "",
      remark: "",
    });
    const editFormOptions = ref([
      [
        { field: "tenantName", title: "租户名称", type: "string", required: true },
        { field: "tenantType", title: "租户类型", type: "number", required: true },
        { field: "dbType", title: "数据库类型", type: "number", required: true },
      ],
      [
        { field: "status", title: "状态", type: "select", dataKey: "enableStatusEnum", data: [] },
        { field: "connectionString", title: "连接字符串", type: "textarea" },
        { field: "remark", title: "备注", type: "textarea" },
      ],
    ]);
    const searchFormFields = ref({
      tenantName: "",
      tenantType: "",
      dbType: "",
      status: "",
    });
    const searchFormOptions = ref([
      [
        { title: "租户名称", field: "tenantName", type: "like" },
        { title: "租户类型", field: "tenantType", type: "number" },
        { title: "数据库类型", field: "dbType", type: "number" },
        { title: "状态", field: "status", type: "select", dataKey: "enableStatusEnum", data: [] },
      ],
    ]);
    const columns = ref([
      { field: "tenantId", title: "租户ID", type: "int", width: 90, align: "left" },
      { field: "tenantName", title: "租户名称", type: "string", width: 180, align: "left" },
      { field: "tenantType", title: "租户类型", type: "int", width: 110, align: "left" },
      { field: "dbType", title: "数据库类型", type: "int", width: 110, align: "left" },
      { field: "status", title: "状态", type: "int", width: 100, align: "left", bind: { key: "enableStatusEnum", data: [] } },
      { field: "connectionString", title: "连接字符串", type: "string", width: 280, align: "left" },
      { field: "creater", title: "创建人", type: "string", width: 100, align: "left" },
      { field: "createDate", title: "创建时间", type: "datetime", width: 160, align: "left" },
      { field: "modifier", title: "修改人", type: "string", width: 100, align: "left", hidden: true },
      { field: "modifyDate", title: "修改时间", type: "datetime", width: 160, align: "left", hidden: true },
      { field: "remark", title: "备注", type: "string", width: 180, align: "left" },
    ]);
    const detail = ref({
      cnName: "#detailCnName",
      table: "",
      columns: [],
      sortName: "",
    });
    return {
      table,
      extend,
      editFormFields,
      editFormOptions,
      searchFormFields,
      searchFormOptions,
      columns,
      detail,
    };
  },
});
</script>
Code/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue
@@ -55,6 +55,12 @@
<script>
import VolForm from "@/components/basic/VolForm.vue";
import VolBox from "@/components/basic/VolBox.vue";
const userInfoErrorImg = new URL(
  "../../assets/imgs/error-img.png",
  import.meta.url
).href;
export default {
  components: {
    VolForm,
@@ -119,7 +125,7 @@
  },
  data() {
    return {
      errorImg: 'this.src="' + require("@/assets/imgs/error-img.png") + '"',
      errorImg: `this.src="${userInfoErrorImg}"`,
      modifyOptions: {
        model: false,
        fields: { oldPwd: "", newPwd: "", newPwd1: "" },
Code/WMS/WIDESEA_WMSClient/vite.config.js
@@ -10,6 +10,7 @@
    }
  },
  server: {
    host: '0.0.0.0',
    port: 8080,
    open: false
  },
Code/WMS/WIDESEA_WMSClient/vue.config.js
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.backup.json
@@ -3,6 +3,18 @@
  "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
@@ -39,24 +51,12 @@
      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\taskenum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\basic\\locationinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -70,7 +70,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 17,
          "SelectedChildIndex": 8,
          "Children": [
            {
              "$type": "Bookmark",
@@ -86,7 +86,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 4,
              "Title": "WMSTaskDTO.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WMSTaskDTO.cs",
              "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WMSTaskDTO.cs",
@@ -94,12 +94,11 @@
              "RelativeToolTip": "WIDESEA_DTO\\Task\\WMSTaskDTO.cs",
              "ViewState": "AgIAABgAAAAAAAAAAAAIwCkAAAAdAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-17T07:42:09.48Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-17T07:42:09.48Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 9,
              "Title": "StockDTO.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockDTO.cs",
@@ -111,7 +110,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 10,
              "Title": "ITaskService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
@@ -123,7 +122,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 6,
              "Title": "TaskTypeEnum.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
@@ -135,7 +134,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 5,
              "Title": "TaskController.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
@@ -143,24 +142,24 @@
              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "ViewState": "AgIAAIoAAAAAAAAAAAAhwJsAAAAIAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-13T02:00:31.089Z",
              "EditorCaption": ""
              "WhenOpened": "2026-03-13T02:00:31.089Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "DocumentIndex": 0,
              "Title": "AutoOutboundTaskBackgroundService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "ViewState": "AgIAACEAAAAAAAAAAAAIwDsAAAAoAAAAAAAAAA==",
              "ViewState": "AgIAABQAAAAAAAAAAADwvykAAABdAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-12T10:18:13.91Z"
              "WhenOpened": "2026-03-12T10:18:13.91Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "DocumentIndex": 12,
              "Title": "appsettings.json",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
@@ -172,7 +171,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "DocumentIndex": 13,
              "Title": "Program.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
@@ -184,7 +183,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 7,
              "Title": "StockStatusEmun.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\StockEnum\\StockStatusEmun.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\StockEnum\\StockStatusEmun.cs",
@@ -196,7 +195,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 11,
              "Title": "TaskStatusEnum.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskStatusEnum.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskStatusEnum.cs",
@@ -208,7 +207,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 8,
              "Title": "LocationInfoService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
              "RelativeDocumentMoniker": "WIDESEA_BasicService\\LocationInfoService.cs",
@@ -233,37 +232,38 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "DocumentIndex": 2,
              "Title": "StockInfoService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockInfoService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
              "RelativeToolTip": "WIDESEA_StockService\\StockInfoService.cs",
              "ViewState": "AgIAADQAAAAAAAAAAAAQwDkAAAAuAAAAAAAAAA==",
              "ViewState": "AgIAADQAAAAAAAAAAAAIwDkAAAAuAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-11T09:16:37.34Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "DocumentIndex": 1,
              "Title": "StockSerivce.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockSerivce.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
              "RelativeToolTip": "WIDESEA_StockService\\StockSerivce.cs",
              "ViewState": "AgIAADYAAAAAAAAAAAAYwM8AAAAJAAAAAAAAAA==",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAWAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-17T02:09:23.282Z"
              "WhenOpened": "2026-03-17T02:09:23.282Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 3,
              "Title": "TaskService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAGkCAAAAAAAAAAAkwHgCAAAWAAAAAAAAAA==",
              "ViewState": "AgIAACkAAAAAAAAAAAAywBAAAAAcAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-02-06T06:34:59.734Z",
              "EditorCaption": ""
Code/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v18/DocumentLayout.json
@@ -3,6 +3,18 @@
  "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7D7534D4-51D9-46DC-A6B7-6430042F4E12}|WIDESEA_TaskInfoService\\WIDESEA_TaskInfoService.csproj|solutionrelative:widesea_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
@@ -39,24 +51,12 @@
      "RelativeMoniker": "D:0:0:{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}|WIDESEA_Common\\WIDESEA_Common.csproj|solutionrelative:widesea_common\\taskenum\\taskstatusenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockserivce.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\backgroundservices\\autooutboundtaskbackgroundservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{7DC26D42-D8EE-46F0-BA66-A13457086885}|WIDESEA_StockService\\WIDESEA_StockService.csproj|solutionrelative:widesea_stockservice\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|d:\\git\\shanmeixinnengyuan\\code\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\basic\\locationinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
@@ -70,7 +70,7 @@
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 17,
          "SelectedChildIndex": 8,
          "Children": [
            {
              "$type": "Bookmark",
@@ -86,7 +86,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "DocumentIndex": 4,
              "Title": "WMSTaskDTO.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Task\\WMSTaskDTO.cs",
              "RelativeDocumentMoniker": "WIDESEA_DTO\\Task\\WMSTaskDTO.cs",
@@ -98,7 +98,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 6,
              "DocumentIndex": 9,
              "Title": "StockDTO.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_DTO\\Stock\\StockDTO.cs",
              "RelativeDocumentMoniker": "WIDESEA_DTO\\Stock\\StockDTO.cs",
@@ -110,7 +110,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 7,
              "DocumentIndex": 10,
              "Title": "ITaskService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_ITaskInfoService\\ITaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_ITaskInfoService\\ITaskService.cs",
@@ -122,7 +122,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 3,
              "DocumentIndex": 6,
              "Title": "TaskTypeEnum.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskTypeEnum.cs",
@@ -134,7 +134,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "DocumentIndex": 5,
              "Title": "TaskController.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\TaskInfo\\TaskController.cs",
@@ -146,19 +146,20 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 12,
              "DocumentIndex": 0,
              "Title": "AutoOutboundTaskBackgroundService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "RelativeToolTip": "WIDESEA_WMSServer\\BackgroundServices\\AutoOutboundTaskBackgroundService.cs",
              "ViewState": "AgIAACEAAAAAAAAAAAAIwDsAAAAoAAAAAAAAAA==",
              "ViewState": "AgIAABQAAAAAAAAAAADwvykAAABdAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-12T10:18:13.91Z"
              "WhenOpened": "2026-03-12T10:18:13.91Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 10,
              "DocumentIndex": 12,
              "Title": "appsettings.json",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
@@ -170,7 +171,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 11,
              "DocumentIndex": 13,
              "Title": "Program.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
@@ -182,7 +183,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 4,
              "DocumentIndex": 7,
              "Title": "StockStatusEmun.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\StockEnum\\StockStatusEmun.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\StockEnum\\StockStatusEmun.cs",
@@ -194,7 +195,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 8,
              "DocumentIndex": 11,
              "Title": "TaskStatusEnum.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_Common\\TaskEnum\\TaskStatusEnum.cs",
              "RelativeDocumentMoniker": "WIDESEA_Common\\TaskEnum\\TaskStatusEnum.cs",
@@ -206,7 +207,7 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 5,
              "DocumentIndex": 8,
              "Title": "LocationInfoService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_BasicService\\LocationInfoService.cs",
              "RelativeDocumentMoniker": "WIDESEA_BasicService\\LocationInfoService.cs",
@@ -230,40 +231,39 @@
            },
            {
              "$type": "Document",
              "DocumentIndex": 13,
              "DocumentIndex": 2,
              "Title": "StockInfoService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockInfoService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockInfoService.cs",
              "RelativeToolTip": "WIDESEA_StockService\\StockInfoService.cs",
              "ViewState": "AgIAADQAAAAAAAAAAAAQwDkAAAAuAAAAAAAAAA==",
              "ViewState": "AgIAADQAAAAAAAAAAAAIwDkAAAAuAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-11T09:16:37.34Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 9,
              "DocumentIndex": 1,
              "Title": "StockSerivce.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
              "RelativeDocumentMoniker": "WIDESEA_StockService\\StockSerivce.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_StockService\\StockSerivce.cs",
              "RelativeToolTip": "WIDESEA_StockService\\StockSerivce.cs",
              "ViewState": "AgIAADYAAAAAAAAAAAAYwM8AAAAJAAAAAAAAAA==",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAABkAAAAWAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-17T02:09:23.282Z"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "DocumentIndex": 3,
              "Title": "TaskService.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeDocumentMoniker": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WMS\\WIDESEA_WMSServer\\WIDESEA_TaskInfoService\\TaskService.cs",
              "RelativeToolTip": "WIDESEA_TaskInfoService\\TaskService.cs",
              "ViewState": "AgIAAAAAAAAAAAAAAAAAAHgCAAAWAAAAAAAAAA==",
              "ViewState": "AgIAACkAAAAAAAAAAAAywBAAAAAcAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-02-06T06:34:59.734Z",
              "EditorCaption": ""
              "WhenOpened": "2026-02-06T06:34:59.734Z"
            }
          ]
        }
Code/WMS/WIDESEA_WMSServer/AGENTS.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/.gitignore
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/GUIDE.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/README.md
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/index.html
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/package-lock.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/package.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/App.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/basic/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/api/system/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/assets/styles/index.css
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/layouts/BasicLayout.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/main.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/guard.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/index.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/router/routes.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/stores/app.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/stores/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/api.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/common.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/types/user.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/auth.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/common.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/utils/request.ts
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/location/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/materiel/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/basic/warehouse/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/check/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/dashboard/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/error/404.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/inbound/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/login/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/outbound/order/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/stock/info/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/menu/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/role/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/system/user/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/src/views/task/info/index.vue
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/tsconfig.node.json
ÎļþÒÑɾ³ý
Code/WMS/WIDESEA_WMS_Frontend/vite.config.ts
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.dockerignore
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/957CD3507E75254DAB50B67D1CAD4ABB/57E558275472B567970CA987458436D5
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/957CD3507E75254DAB50B67D1CAD4ABB/89EE95323C118AB5E5FA0B5FC9E372D8
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/BE43EC63E499EE468C0161FA83175A2D/340C5AFE3B0C2AB455087AFF43725D6E
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/BE43EC63E499EE468C0161FA83175A2D/57E558275472B567970CA987458436D5
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/C569B8B80C5D3640BC534EFC4D2E9EFE/57E558275472B567970CA987458436D5
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/C569B8B80C5D3640BC534EFC4D2E9EFE/EEF5B4E6C1E13E5E42E047DE7B74D577
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/E6DFDF72DCCF3C46ABA29988BCD5456A/57E558275472B567970CA987458436D5
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/E6DFDF72DCCF3C46ABA29988BCD5456A/F977376DB3B74CAF672118CAACA4BA95
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/CopilotSnapshots/BD12C3365E39344589EDC65CA163A4E7/state.mpack
Binary files differ
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/RobotClient.slnx/copilot-chat/bef6627e/sessions/36c312bd-395e-4534-89ed-c65ca163a4e7
Binary files differ
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/RobotClient.slnx/v18/DocumentLayout.backup.json
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/.vs/RobotClient.slnx/v18/DocumentLayout.json
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/CLAUDE.md
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/Dockerfile
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/Program.cs
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/Properties/launchSettings.json
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/RobotClient.csproj
ÎļþÒÑɾ³ý
Code/»úеÊÖ¿Í»§¶Ë/RobotClient/RobotClient.slnx
ÎļþÒÑɾ³ý
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/config/applicationhost.config
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.backup.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
{
  "Version": 1,
  "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\",
  "Documents": [],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": -1,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
            }
          ]
        }
      ]
    }
  ]
}
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/.vs/WIDESEAWCS_S7Simulator.slnx/v18/DocumentLayout.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
{
  "Version": 1,
  "WorkspaceRootPath": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\",
  "Documents": [
    {
      "AbsoluteMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_s7simulator\\wideseawcs_s7simulator.application\\protocol\\devices\\wcslineprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|solutionrelative:wideseawcs_s7simulator.application\\protocol\\devices\\wcslineprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_s7simulator\\wideseawcs_s7simulator.application\\protocol\\devices\\stackerinteractionprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|solutionrelative:wideseawcs_s7simulator.application\\protocol\\devices\\stackerinteractionprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    },
    {
      "AbsoluteMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|d:\\git\\shanmeixinnengyuan\\code\\wcs\\wideseawcs_s7simulator\\wideseawcs_s7simulator.application\\protocol\\devices\\plclinkstackerprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
      "RelativeMoniker": "D:0:0:{BB7733B7-3415-1894-F731-8A139A54C2DA}|WIDESEAWCS_S7Simulator.Application\\WIDESEAWCS_S7Simulator.Application.csproj|solutionrelative:wideseawcs_s7simulator.application\\protocol\\devices\\plclinkstackerprotocolhandler.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
    }
  ],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": 3,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{40ea2e6b-2121-4bb8-a43e-c83c04b51041}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{aa2115a1-9712-457b-9047-dbb71ca2cdd2}"
            },
            {
              "$type": "Document",
              "DocumentIndex": 0,
              "Title": "WcsLineProtocolHandler.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\WcsLineProtocolHandler.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\WcsLineProtocolHandler.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\WcsLineProtocolHandler.cs",
              "RelativeToolTip": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\WcsLineProtocolHandler.cs",
              "ViewState": "AgIAAB0AAAAAAAAAAAAAwAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T09:23:48.936Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 1,
              "Title": "StackerInteractionProtocolHandler.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\StackerInteractionProtocolHandler.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\StackerInteractionProtocolHandler.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\StackerInteractionProtocolHandler.cs",
              "RelativeToolTip": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\StackerInteractionProtocolHandler.cs",
              "ViewState": "AgIAAFEAAAAAAAAAAAAkwAAAAAAAAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T09:23:43.818Z",
              "EditorCaption": ""
            },
            {
              "$type": "Document",
              "DocumentIndex": 2,
              "Title": "PlcLinkStackerProtocolHandler.cs",
              "DocumentMoniker": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\PlcLinkStackerProtocolHandler.cs",
              "RelativeDocumentMoniker": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\PlcLinkStackerProtocolHandler.cs",
              "ToolTip": "D:\\Git\\ShanMeiXinNengYuan\\Code\\WCS\\WIDESEAWCS_S7Simulator\\WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\PlcLinkStackerProtocolHandler.cs",
              "RelativeToolTip": "WIDESEAWCS_S7Simulator.Application\\Protocol\\Devices\\PlcLinkStackerProtocolHandler.cs",
              "ViewState": "AgIAADoAAAAAAAAAAAAqwF8AAAALAAAAAAAAAA==",
              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
              "WhenOpened": "2026-03-19T09:22:51.623Z",
              "EditorCaption": ""
            }
          ]
        }
      ]
    }
  ]
}
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/AGENTS.md
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/CLAUDE.md
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Class1.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/PlcLinkStackerProtocolHandler.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/StackerInteractionProtocolHandler.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/Devices/WcsLineProtocolHandler.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/IDeviceProtocolHandler.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/IProtocolTemplateService.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/MirrorAckProtocolHandler.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/ProtocolMonitoringHostedService.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/Protocol/ProtocolMonitoringOptions.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Application/WIDESEAWCS_S7Simulator.Application.csproj
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/InstanceConfig.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/InstanceState.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/MemoryRegionConfig.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Entities/S7ClientConnection.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Enums/InstanceStatus.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Enums/SiemensPLCType.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IMemoryRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IMemoryStore.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IPersistenceService.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/IS7ServerInstance.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Interfaces/ISimulatorInstanceManager.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Manager/SimulatorInstanceManager.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/CRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/DBRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/IRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MemoryRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/MemoryStore.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/QRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Memory/TRegion.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Persistence/FilePersistenceService.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Persistence/Models/InstanceDataModel.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolDataType.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolFieldDirection.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolFieldMapping.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolRuntimeState.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Protocol/ProtocolTemplate.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/Server/S7ServerInstance.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Core/WIDESEAWCS_S7Simulator.Core.csproj
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/ClientsController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/MemoryController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/ProtocolTemplatesController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/RobotClientsController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/SimulatorInstancesController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Controllers/WeatherForecastController.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-CWSC1/config.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-CWSC1/memory.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/config.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/memory.json
copy from Code/WCS/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-CWSC1/memory.json copy to "Code/\346\265\213\350\257\225\345\267\245\345\205\267/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-GWSC1/memory.json"
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-HCSC1/config.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-HCSC1/memory.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line1/config.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line1/memory.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/instance-Line2/config.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/protocol-templates.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Data/protocol-templates.×Ö¶Î˵Ã÷.md
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Program.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Properties/launchSettings.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Services/FileProtocolTemplateService.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/Services/RobotClientManager.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/WIDESEAWCS_S7Simulator.Server.csproj
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/WeatherForecast.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/appsettings.Development.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/appsettings.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Server/launchSettings.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Memory/DBRegionTests.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Memory/MRegionTests.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Protocol/MirrorAckProtocolHandlerTests.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Protocol/StackerInteractionProtocolHandlerTests.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/UnitTest1.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/Usings.cs
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.UnitTests/WIDESEAWCS_S7Simulator.UnitTests.csproj
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/.gitignore
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/index.html
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/package-lock.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/package.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/pnpm-lock.yaml
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/App.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/api/index.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/main.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/router/index.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/stores/instances.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/style.css
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/types/index.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/CreateView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/DetailsView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/EditView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/HomeView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/ProtocolTemplatesView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/views/RobotClientsView.vue
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/src/vite-env.d.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/tsconfig.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/tsconfig.node.json
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.Web/vite.config.ts
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/WIDESEAWCS_S7Simulator.slnx
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/docs/superpowers/plans/2026-03-16-protocol-template-db-monitoring.md
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/tmp_protocol_document.xml
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/É豸ЭÒé/PlcLink_¶Ñ¶â»úÏîÄ¿.xlsx
Binary files differ
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/É豸ЭÒé/WCS-ÊäËÍÏß¶Ô½ÓЭÒé˵Ã÷-V260202.docx
Binary files differ
Code/²âÊÔ¹¤¾ß/WIDESEAWCS_S7Simulator/É豸ЭÒé/¶Ñ¶â»úÓëÉÏλ»ú½»»¥ÐÅÏ¢.xlsx
Binary files differ
ÏîÄ¿×ÊÁÏ/É豸ЭÒé/»úеÊÖЭÒé/~$½»»¥Á÷³Ì±í(1).xlsx
Binary files differ