From 8cf9d378ad17a59b1b18067bd18280dd6b02719f Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 02 四月 2026 13:24:00 +0800
Subject: [PATCH] 代码提交

---
 Code Management/WCS/WIDESEA_WCSClient/src/views/basicinfo/router.vue                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/Home.vue                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile1.pubxml     |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/deepClone.js                                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/IpLimitMiddleware.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Program.cs                                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo_Hty.js                                              |   75 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryService.cs                              |    0 
 Code Management/PDA-FG/uni_modules/uni-list/package.json                                                                |    0 
 Code Management/PDA-FG/unpackage/res/icons/180x180.png                                                                  |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.css                                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-verification-code/u-verification-code.vue                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj                                              |   23 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs                                            |   27 
 Code Management/PDA-FG/static/fail.mp3                                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolUpload.vue                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/public/index.html                                                                 |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/routerview.vue                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_MaterielInfoService.cs                                |   18 
 Code Management/PDA-FG/uview-ui/components/u-dropdown/u-dropdown.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/GlobalUsing.cs                                      |    3 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index-selected.png                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs                                       |   30 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_UserRepository.cs                                          |   26 
 Code Management/PDA-FG/uview-ui/components/u-picker/u-picker.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_UserService.cs                                               |  217 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleAuthService.cs                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-card/components/uni-card/uni-card.vue                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/ISchedulerCenter.cs                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/.editorconfig                                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/launchSettings.json                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_InventoryRecordRepository.cs          |   28 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StationManager/StationManager.cs                                   |   62 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-top-tips/u-top-tips.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs                                          |  143 
 Code Management/WCS/WIDESEA_WCSClient/src/views/builder/builderData.js                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/ApplicationSetup.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less                                              |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/package.json                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/FileHelper.cs                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/Logger.cs                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskExecuteDetailRepository.cs                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue                                                  |  217 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusGroup.cs                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_ConfigService.cs                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-circle-progress/u-circle-progress.vue                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs                                              |   60 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs                                                  |   14 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs                                               |  106 
 Code Management/PDA-FG/tuniao-ui/components/tn-radio/tn-radio.vue                                                       |    0 
 Code Management/PDA-FG/vue.config.js                                                                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-alert-tips/u-alert-tips.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs                                                               |  208 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_MenuRepository.cs                                        |   27 
 Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue                                               |    0 
 Code Management/PDA-FG/package-lock.json                                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_AreaInfoRepository.cs                           |   14 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_StationManagerRepository.cs           |   28 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj                    |   28 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Role.tsv                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolService.cs                            |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TestService.cs                                             |   16 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/detailMethods.js                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-search-bar/changelog.md                                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/RepositorySetting.cs                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj                                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-image/u-image.vue                                                          |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleAuthService.cs                                |    0 
 Code Management/PDA-FG/unpackage/res/icons/1024x1024.png                                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/home/home-chart-options.js                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/README.md                                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/LogLibrary/Log/LogFactory.cs                                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs                                            |   85 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_TaskExecuteDetail.tsv      |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal           |    0 
 Code Management/PDA-FG/template.h5.html                                                                                 |    0 
 Code Management/PDA-FG/uview-ui/components/u-message-input/u-message-input.vue                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/IShuttleCar.cs                                    |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-count-to/tn-count-to.vue                                                 |    0 
 Code Management/PDA-FG/manifest.json                                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/HostedService/WebSocketSetup.cs                                 |    0 
 Code Management/PDA-FG/uview-ui/components/u-rate/u-rate.vue                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs                                          |   57 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs                          |  128 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/WebResponseContent.cs                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index-h5.wxs                                                |    0 
 Code Management/PDA-FG/.hbuilderx/launch.json                                                                           |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.js                                        |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/libs/trees.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/router/charts.js                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Properties/PublishProfiles/FolderProfile.pubxml        |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config.js                                                 |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task_Hty.vue                                                   |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/flex.vue                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/JobBase.cs                                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue                                                      |  157 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/Task_HtyController.cs                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/Enum/ConveyorLineStatus.cs                      |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs                                           |   23 
 Code Management/PDA-FG/tuniao-ui/components/tn-list-view/tn-list-view.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/Permissions.cs                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formOptions.js                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Actions.cs                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/Index.vue                                                               |  753 
 Code Management/PDA-FG/uview-ui/libs/function/random.js                                                                 |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryListRepository.cs                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationStatusChangeRecordService.cs       |    5 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_DictionaryList.tsv        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/Properties/PublishProfiles/FolderProfile.pubxml            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/MES/MESTaskDTO.cs                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_TaskExecuteDetailService.cs                           |   18 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/assets/uniicons.b6d3756e.ttf                              |    0 
 Code Management/PDA-FG/tuniao-ui/libs/mixin/touch.js                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.json                                                |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.umd.min.js                                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/public/webconfig.js                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/BaseCommunicator.cs                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/script/extend.js                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextExtension.cs                                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-slider/tn-slider.vue                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/StaticVariable.cs                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs                                      |   24 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs                                           |   89 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/VierificationCode.cs                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_StationManagerRepository.cs         |   31 
 Code Management/PDA-FG/uni.scss                                                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vscode/launch.json                                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs                                                     |    7 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj            |   13 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/layout.less                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs                                       |   48 
 Code Management/WMS/WIDESEA_WMSServer/.editorconfig                                                                     |    4 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile3.pubxml                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tree-node/tn-tree-node.vue                                               |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/changelog.md                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomAuthorizeFilter.cs                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj                |   13 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappsuccess.png                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_MenuService.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_User.cs                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/StackerCraneTaskCompletedEventArgs.cs           |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappscan.js                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-segmented-control/changelog.md                                                   |    0 
 Code Management/PDA-FG/tuniao-ui/libs/config/zIndex.js                                                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-search-bar/readme.md                                                             |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tabbar/tn-tabbar.vue                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobAutofacModuleRegister.cs           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_MenuService.cs                                      |    0 
 Code Management/PDA-FG/tuniao-ui/libs/mixin/mixin.js                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_RoleService.cs                                             |   23 
 Code Management/PDA-FG/tuniao-ui/components/tn-td/tn-td.vue                                                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/flex.vue                                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/home/home-chart-options.js                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/PrintStatusContainer.cs                               |   46 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue                                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-data-select/package.json                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolRepository.cs                       |    0 
 Code Management/PDA-FG/uview-ui/components/u-col/u-col.vue                                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs                                             |   21 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogLock.cs                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo_Hty.cs                               |   56 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_DictionaryRepository.cs                                    |   76 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolDetailRepository.cs                 |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-load-more/tn-load-more.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MiniProfilerSetup.cs                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ConsoleHelper.cs                                           |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/index/Message.vue                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/EntityProperties.cs                                     |    0 
 Code Management/PDA-FG/components/uni-section/config.json                                                               |    0 
 Code Management/PDA-FG/uview-ui/index.scss                                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Log.cs                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/index/index.less                                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/yarn.lock                                                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error-img.png                                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf                                   |    0 
 Code Management/PDA-FG/uview-ui/libs/css/common.scss                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Config.cs                                      |    0 
 Code Management/PDA-FG/uview-ui/components/u-grid-item/u-grid-item.vue                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/Task_HtyRepository.cs                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task_Hty.js                                                |    0 
 Code Management/PDA-FG/uview-ui/components/u-index-list/u-index-list.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/public/wcslogo.png                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheService.cs                                       |  219 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj                |   14 
 Code Management/PDA-FG/tuniao-ui/components/tn-waterfall/tn-waterfall.vue                                               |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquillimageresize.js                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/index/index.less                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoHtyRepository.cs                  |    9 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center.png                                             |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/theme.scss                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AutofacModuleRegister.cs                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/api/useTest.js                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerAuthMiddleware.cs                              |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/index.js                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj                                          |   24 
 Code Management/PDA-FG/uni_modules/uni-data-checkbox/package.json                                                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/public/webconfig.js                                                               |    4 
 Code Management/PDA-FG/uview-ui/libs/function/deepMerge.js                                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Properties/PublishProfiles/FolderProfile.pubxml       |    0 
 Code Management/PDA-FG/uview-ui/components/u-swiper/u-swiper.vue                                                        |    0 
 Code Management/PDA-FG/uview-ui/libs/function/getParent.js                                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo_Hty.cs                                |   68 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_InventoryRecordService.cs               |   16 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue                                          |    0 
 Code Management/PDA-FG/tuniao-ui/libs/utils/city.js                                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_TaskRepository.cs                           |   73 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_MaterielInfoService.cs                              |   14 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Provider/UserIdProvider.cs                                     |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/manifest.json                                                 |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappscan.js                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/DetailMessage/TaskDescription.cs                                   |   31 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoRepository.cs                       |    9 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolDetailService.cs                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json                                     |  292 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js                                                    |   94 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoDetailService.cs                      |   45 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs                     |   11 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/SimpleHub.cs                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj                                   |    0 
 Code Management/PDA-FG/package.json                                                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/.config/dotnet-tools.json                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs                            |   17 
 Code Management/PDA-FG/unpackage/cache/certdata                                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs                                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-form/tn-form.vue                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-number-box/u-number-box.vue                                                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-skeleton/tn-skeleton.vue                                                 |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue                                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable.vue                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail_Hty.vue                                           |   72 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj                                  |    0 
 Code Management/PDA-FG/components/uni-section/uni-section.vue                                                           |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue                                                   |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/readme.md                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/ConfigurableOptions.cs                                       |    0 
 Code Management/PDA-FG/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue                 |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-swiper/tn-swiper.vue                                                     |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni.ttf                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_AreaInfoController.cs                      |   20 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs                                        |    0 
 Code Management/PDA-FG/uview-ui/components/u-time-line-item/u-time-line-item.vue                                        |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_space.scss                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs                                         |  114 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/IOtherDevice.cs                                 |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/array.js                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js                                                  |   87 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/DbSetup.cs                                             |    0 
 Code Management/PDA-FG/uview-ui/components/u-steps/u-steps.vue                                                          |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task.js                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerSetup.cs                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_LogRepository.cs                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs                  |  631 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs                       |    0 
 Code Management/PDA-FG/uview-ui/components/u-loading-page/u-loading-page.vue                                            |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center-selected.png                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_Task_HtyService.cs                           |   11 
 Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk                                            |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue                               |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-cropper/index.wxs                                                        |    0 
 Code Management/PDA-FG/uview-ui/components/u-button/u-button.vue                                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm.vue                                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs                                  |   67 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/favicon.ico                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.js                                                  |   49 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocol.js                                         |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/head_bg.png                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_ConfigService.cs                                           |   37 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs                                        |   74 
 Code Management/PDA-FG/tuniao-ui/libs/mixin/mpShare.js                                                                  |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/uitils/common.js                                                              |    0 
 Code Management/PDA-FG/pages/Point/Point.vue                                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue                                   |  207 
 Code Management/PDA-FG/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-nav-bar/changelog.md                                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/MethodInfoExtensions.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/CommonOtherDevicesJob.cs                          |    0 
 Code Management/PDA-FG/uview-ui/libs/function/trim.js                                                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/package.json                                                                      |   59 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-service.js                                                |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/uni-forms.vue                                         |    0 
 Code Management/PDA-FG/uview-ui/libs/store/index.js                                                                     |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleService.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchInfoDTO.cs                                       |    0 
 Code Management/PDA-FG/uview-ui/components/u-cell-group/u-cell-group.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Properties/PublishProfiles/FolderProfile.pubxml                  |    0 
 Code Management/PDA-FG/pages/task/CompletedTask.vue                                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs                                        |  104 
 Code Management/PDA-FG/tuniao-ui/components/tn-toast/tn-toast.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProDTO.cs                                          |    0 
 Code Management/PDA-FG/uni_modules/uni-data-checkbox/readme.md                                                          |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role1.js                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_UserService.cs                                             |   24 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Role.cs                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs                                     |   95 
 Code Management/PDA-FG/uni_modules/uni-badge/readme.md                                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs                                                            |   89 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/uni-popup.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs                              |  128 
 Code Management/PDA-FG/tuniao-ui/iconfont.css                                                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocol.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationChangeRecordDto.cs                                   |   35 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnumHelper.cs                                              |  123 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs                                                |  970 +
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_UserRepository.cs                                        |   16 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocolDetail.cs                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs                 |    0 
 Code Management/PDA-FG/uview-ui/components/u-tr/u-tr.vue                                                                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tag/tn-tag.vue                                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-transition/package.json                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs                                                   |  121 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_GW.cs                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TenantService.cs                                           |   16 
 Code Management/WCS/WIDESEA_WCSClient/src/api/http.js                                                                   |    0 
 Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/createAnimation.js                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleRepository.cs                               |    0 
 Code Management/PDA-FG/uview-ui/components/u-gap/u-gap.vue                                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/public/wms_d.png                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/vite.config.js                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs                                          |  769 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/ErrorMsgConst.cs                                            |    0 
 Code Management/PDA-FG/uview-ui/libs/css/style.components.scss                                                          |    0 
 Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/common.js                                     |    0 
 Code Management/PDA-FG/pages/Outbound/Outbound.vue                                                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationSetup.cs                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeGroup.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs                                        |  320 
 Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/uni-transition.vue                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs                                          |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/main.js                                                                       |    0 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.wxs                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/router/charts.js                                                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-badge/u-badge.vue                                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolController.cs               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs                                 |   79 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_text.scss                                                   |    0 
 Code Management/PDA-FG/pages/index/index.vue                                                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js                                            |   58 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICaching.cs                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceCommand.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail.cs                             |  111 
 Code Management/PDA-FG/tuniao-ui/libs/function/messageUtils.js                                                          |    0 
 Code Management/PDA-FG/uview-ui/components/u-form/u-form.vue                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.js                                          |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/uuid.js                                                                  |    0 
 Code Management/PDA-FG/uview-ui/libs/mixin/mpShare.js                                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html                                                      |  124 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js                                                  |   59 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue                                               |  316 
 Code Management/PDA-FG/uni_modules/uni-scss/index.scss                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj                                          |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/401.vue                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs                       |  215 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Router.tsv                 |    0 
 Code Management/PDA-FG/index.html                                                                                       |    0 
 Code Management/PDA-FG/static/login_bottom_bg.jpg                                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj                 |   13 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs                                                  |  739 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryListRepository.cs                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/GlobalUsing.cs                                       |   15 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs                    |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/validate.js                                           |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs                                       |   22 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chartOptions.js                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail_Hty.cs                          |   11 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappview.html                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-upload/u-upload.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs                   |    0 
 Code Management/PDA-FG/uni_modules/uni-nav-bar/readme.md                                                                |    0 
 Code Management/PDA-FG/uview-ui/components/u-dropdown-item/u-dropdown-item.vue                                          |    0 
 Code Management/PDA-FG/uview-ui/libs/function/test.js                                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Const/CacheConst.cs                                                 |   52 
 Code Management/PDA-FG/uview-ui/README.md                                                                               |    0 
 Code Management/PDA-FG/uview-ui/package.json                                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs                               |   97 
 Code Management/PDA-FG/uview-ui/libs/config/config.js                                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerStationCrane.cs             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs                                              |   21 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/SaveModel.cs                                           |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_WareAreaInfoRepository.cs                       |   14 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Config.cs                                         |   53 
 Code Management/PDA-FG/uview-ui/components/u-column-notice/u-column-notice.vue                                          |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js                                               |  103 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocolDetail.tsv   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-collapse/u-collapse.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoHtyRepository.cs                    |    9 
 Code Management/PDA-FG/tuniao-ui/theme.scss                                                                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationStatusChangeRecordController.cs       |   10 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs                               |   46 
 Code Management/WCS/WIDESEA_WCSClient/src/App.vue                                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleAuthController.cs                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/css/common.less                                                        |    0 
 Code Management/PDA-FG/pages/task/CancelTask.vue                                                                        |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/store/index.js                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskExecuteDetail.cs                          |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/assets/uniicons.b6d3756e.ttf                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_variables.scss                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/Message.vue                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html                                          |  130 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs                                         |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/logo.png                                                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/router/redirect.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Properties/PublishProfiles/FolderProfile.pubxml                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config                               | 1021 +
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs                                       |   28 
 Code Management/PDA-FG/uni_modules/uni-group/components/uni-group/uni-group.vue                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-modal/u-modal.vue                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs                                                 |  114 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/INoticeService.cs                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/OtherDeviceDBName.cs                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextSetup.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/IService.cs                                          |    0 
 Code Management/PDA-FG/static/login_top2.jpg                                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DelLogService.cs                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-count-down/tn-count-down.vue                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TenantRepository.cs                                        |   18 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs                                               |   29 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs                                             |   58 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquill.js                                              |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/api/http.js                                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile4.pubxml                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj                                                    |   13 
 Code Management/PDA-FG/uni_modules/uni-load-more/changelog.md                                                           |    0 
 Code Management/WCS/WIDESEA_WCSClient/public/static/login_bg.png                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/LinqExpressionType.cs                                       |    0 
 Code Management/PDA-FG/uview-ui/components/u-input/u-input.vue                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_MenuService.cs                                             |   29 
 Code Management/WMS/WIDESEA_WMSClient/config/buttons.js                                                                 |  113 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoRepository.cs                     |    9 
 Code Management/PDA-FG/pages/Quality/Quality.vue                                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TestService.cs                                               |   36 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role.vue                                                     |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/AppSettings.cs                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_AreaInfoRepository.cs                             |   16 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs                                         |  130 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue                              |   68 
 Code Management/PDA-FG/uview-ui/libs/function/debounce.js                                                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/App.vue                                                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/uitils/signalr.js                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs                                         |   12 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/script/common.js                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/swg-login.html                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/JwtHelper.cs                                        |    0 
 Code Management/PDA-FG/uview-ui/components/u-toast/u-toast.vue                                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolDetailService.cs                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoHtyService.cs                      |    9 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_WareAreaInfoService.cs                              |   13 
 Code Management/PDA-FG/uview-ui/components/u-mask/u-mask.vue                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevatorNew.cs                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue                                    |  218 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Options/CacheSettingsOptions.cs                                     |   46 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs                                     |   95 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs                                             |  130 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/Dt_StationManagerService.cs                           |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/api/permission.js                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TestController.cs                        |   19 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ExportHelper.cs                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.js                                            |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-avatar/tn-avatar.vue                                                     |    0 
 Code Management/PDA-FG/uni_modules/uni-card/readme.md                                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json                                                |   30 
 Code Management/PDA-FG/uview-ui/libs/mixin/mixin.js                                                                     |    0 
 Code Management/PDA-FG/uni_modules/uni-group/readme.md                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_d.png                                                         |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config-service.js                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/config/applicationhost.config                               |    0 
 Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_TenantRepository.cs                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DelLog.cs                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/tests/unit/example.spec.js                                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/router/index.js                                                               |   82 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxxhdpi.png                            |    0 
 Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue                                |    0 
 Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs                                              |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappchooselocation.js                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs                                                        |   39 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/extend/taskExecuteDetail.vue                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs                                      |  133 
 Code Management/PDA-FG/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue                   |    0 
 Code Management/PDA-FG/uview-ui/components/u-number-keyboard/u-number-keyboard.vue                                      |    0 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-list.vue                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/Dt_StationManagerRepository.cs                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProtocolDetailDTO.cs                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/CommonRGV.cs                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageDataOptions.cs                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationStatusChangeRecordService.cs        |    8 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs                           |   14 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js                                                |   58 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_x.png                                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs                                                 |   13 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/IConfigurableOptions.cs                                      |    0 
 Code Management/PDA-FG/static/center-selected.png                                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_UserRepository.cs                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/JwtTokenAuthMiddleware.cs                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj                      |    0 
 Code Management/PDA-FG/uview-ui/libs/util/emitter.js                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Task.tsv                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-drag/index.wxs                                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-id/changelog.md                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/config/buttons.js                                                                 |    0 
 Code Management/PDA-FG/pages/home/home.vue                                                                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/weCropper.js                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task.vue                                                       |  244 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_TenantRepository.cs                               |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappview.html                                             |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/repeat.mp3                                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/router/viewGird.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/index.html                                                                        |  136 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs                                     | 1012 +
 Code Management/PDA-FG/tuniao-ui/libs/function/updateCustomBarInfo.js                                                   |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocolDetail.vue                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TenantRepository.cs                                      |   14 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskController.cs                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/SecurityEncDecryptHelper.cs                                |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapppicker.js                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-checkbox/u-checkbox.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/WIDESEA_OrderRepository.csproj                            |   13 
 Code Management/PDA-FG/tuniao-ui/components/tn-cropper/tn-cropper.vue                                                   |    0 
 Code Management/PDA-FG/uview-ui/libs/config/zIndex.js                                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ApiAuthorizeFilter.cs                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs                                           |   26 
 Code Management/PDA-FG/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue                                   |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-service.js                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_ConfigRepository.cs                                      |   15 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_UserRepository.cs                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/package-lock.json                                                                 | 3651 ++++
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ExporterHeaderFilter.cs                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/.gitignore                                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_WareAreaInfo.cs                                     |   47 
 Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/utils.js                                              |    0 
 Code Management/WMS/WIDESEA_WMSClient/jsconfig.json                                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Enum/StackerCraneStatus.cs                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs                                                |   14 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json                              |  156 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs                                                       |   12 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManager.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs                                                       |  320 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm           |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-drag/tn-drag.vue                                                         |    0 
 Code Management/PDA-FG/uview-ui/libs/function/throttle.js                                                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Department.cs                                     |   57 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WMSResponse.cs                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_WareAreaInfoRepository.cs                         |   13 
 Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue                                               |  200 
 Code Management/PDA-FG/uni_modules/uni-easyinput/changelog.md                                                           |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-fab/tn-fab.vue                                                           |    0 
 Code Management/PDA-FG/tuniao-ui/libs/utils/calendar.js                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js                                                  |   77 
 Code Management/PDA-FG/uview-ui/libs/css/style.nvue.scss                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_TenantService.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/test.vue                                                         |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue                                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-tabbar/u-tabbar.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue                                                     |  154 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs                                       |  123 
 Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue                                                       |  230 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/PermissionPDA.vue                                                |  369 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs                                            |    0 
 Code Management/PDA-FG/uview-ui/libs/css/style.h5.scss                                                                  |    0 
 Code Management/PDA-FG/static/index.png                                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/UserInfo.vue                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleNodes.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/GroupPlate.cs                                                   |   23 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationCache.cs                                             |   15 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-view.js                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs                                      |   37 
 Code Management/PDA-FG/uview-ui/components/u-icon/u-icon.vue                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs                                      |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappes6.js                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_AreaInfoService.cs                                    |   18 
 Code Management/WMS/WIDESEA_WMSClient/package-lock.json                                                                 | 3646 ++++
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs                                                   |   29 
 Code Management/PDA-FG/pages.json                                                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs                        |   50 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj                                                      |   47 
 Code Management/PDA-FG/static/index-selected.png                                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MemoryCacheSetup.cs                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue                                                     |  361 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj                                        |   13 
 Code Management/PDA-FG/uview-ui/libs/util/async-validator.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleAuthRepository.cs                                      |   18 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs                                          |   36 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/GlobalUsing.cs                                     |    2 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/StockDataDTO.cs                                                 |   17 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/record/stockQuantityChangeRecord.js                                 |   58 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/HttpRequestMiddleware.cs                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs                                                         |   57 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Tenant.cs                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/vite.config.js                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue                                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-collapse/tn-collapse.vue                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs                         |   28 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleRepository.cs                                        |   14 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineDBName.cs                            |    0 
 Code Management/PDA-FG/uview-ui/components/u-index-anchor/u-index-anchor.vue                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomProfile.cs                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-combox/changelog.md                                                              |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chartOptions.js                                                  |    0 
 Code Management/PDA-FG/unpackage/res/icons/87x87.png                                                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-group/changelog.md                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/index.html                                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs                                      |   38 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json                              |  292 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_MaterielInfoRepository.cs                       |   14 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs                                     |   59 
 Code Management/WMS/WIDESEA_WMSClient/src/views/index/MessageConfig.js                                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-transition/readme.md                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs                                     |   55 
 Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs                                              |   21 
 Code Management/PDA-FG/static/login_top3.png                                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs                                          |  195 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Properties/PublishProfiles/FolderProfile.pubxml             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/public/wms_d.png                                                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js                                   |    0 
 Code Management/PDA-FG/uview-ui/components/u-count-down/u-count-down.vue                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml                 |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xhdpi.png                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/libs/handler.wxs                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/QuartzLogger.cs                                         |    0 
 Code Management/PDA-FG/uview-ui/components/u-row-notice/u-row-notice.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-shm            |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/MainDb.cs                                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj                                                |   24 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_ConfigRepository.cs                                        |   21 
 Code Management/PDA-FG/uni_modules/uni-popup/changelog.md                                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs                                  |  111 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_LogController.cs                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs                                          |   66 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.css                                                      |    0 
 Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue                                        |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/success.mp3                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocol.vue                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json                                       |   12 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/IStackerCrane.cs                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue                                                     |  392 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleAuthRepository.cs                                    |   14 
 Code Management/PDA-FG/static/success.mp3                                                                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue                                           |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/formTemplate.js                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs                                             |   43 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolBox.vue                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_User.tsv                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-cell-item/u-cell-item.vue                                                  |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/main.js                                                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/index/MessageConfig.js                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HostedService/SeedDataHostedService.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoDetailRepository.cs               |    9 
 Code Management/PDA-FG/unpackage/res/icons/60x60.png                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/index.html                                                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoService.cs                         |   11 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolRepository.cs                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs                                             |   32 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/script/extend.js                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoHtyService.cs                         |   76 
 Code Management/PDA-FG/uni_modules/uni-segmented-control/readme.md                                                      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/uitils/websocket.js                                                           |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-table/tn-table.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs                                      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata.vue                                                      |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top2.jpg                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Empty.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_TaskRepository.cs                         |   32 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs                                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue                                                |    0 
 Code Management/PDA-FG/uni_modules/uni-data-select/changelog.md                                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/.gitignore                                                                        |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Audit.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv                     |   26 
 Code Management/PDA-FG/tuniao-ui/libs/function/string.js                                                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue                                                   |  230 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SqlSugarHelper.cs                                             |   40 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleRepository.cs                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs                                                      |  140 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs                                      |   56 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs                                      |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-modal/tn-modal.vue                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs                                                   |   59 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs                                                  |   94 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_TaskExecuteDetailService.cs                         |   14 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index.png                                          |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/Index.vue                                                               |  720 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj                                      |   17 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable/VolTableRender.js                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_LogService.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.js                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs                                           |  118 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs                          |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappsuccess.png                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceBase.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs                         |   35 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoDetailRepository.cs                 |    9 
 Code Management/PDA-FG/uview-ui/libs/function/timeFormat.js                                                             |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/router/index.js                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Attributes/ModelValidateAttribute.cs                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs                                 |   80 
 Code Management/PDA-FG/tuniao-ui/libs/utils/async-validator.js                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/ObjectExtension.cs                                        |   45 
 Code Management/PDA-FG/unpackage/res/icons/167x167.png                                                                  |    0 
 Code Management/PDA-FG/uview-ui/libs/function/deepClone.js                                                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-th/u-th.vue                                                                |    0 
 Code Management/PDA-FG/unpackage/res/icons/96x96.png                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs                                   |   89 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/templateCode.js                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/Login.vue                                                               |  387 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpContextHelper.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs                                      |   32 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappes6.js                                            |    0 
 Code Management/PDA-FG/uview-ui/components/u-notice-bar/u-notice-bar.vue                                                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-button/tn-button.vue                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile6.pubxml                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-steps/tn-steps.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Dictionary.tsv            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task_Hty.cs                                         |   31 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Menu.vue                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutofacPropertityModuleReg.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs                                 |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index-selected.png                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj                                                  |   42 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_TaskExecuteDetailRepository.cs                  |   14 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Seed/QuartzJobCreateDataTabel.cs                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wcs_x.png                                                         |    0 
 Code Management/PDA-FG/uview-ui/libs/function/randomArray.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue                                                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-read-more/tn-read-more.vue                                               |    0 
 Code Management/PDA-FG/uview-ui/components/u-popup/u-popup.vue                                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js                                        |    0 
 Code Management/PDA-FG/uview-ui/libs/function/guid.js                                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/DeleteLog/CommonDeleteLogJob.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantStatus.cs                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StationManagerController.cs            |   22 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail_Hty.cs                         |   12 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs                                                  |  142 
 Code Management/PDA-FG/uni_modules/uni-combox/readme.md                                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/CacheConst.cs                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/IUser.cs                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_UserService.cs                                      |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/libs/config.js                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj                          |   20 
 Code Management/PDA-FG/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerContextExtension.cs                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_UserController.cs                        |    0 
 Code Management/PDA-FG/tuniao-ui/libs/utils/province.js                                                                 |    0 
 Code Management/PDA-FG/static/repeat.mp3                                                                                |    0 
 Code Management/PDA-FG/uni_modules/uni-load-more/package.json                                                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs                                 |   43 
 Code Management/PDA-FG/tuniao-ui/components/tn-list-cell/tn-list-cell.vue                                               |    0 
 Code Management/PDA-FG/uni_modules/uni-nav-bar/package.json                                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AllOptionRegister.cs                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/ModelValidate.cs                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/BaseEntity.cs                                           |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo_Hty.vue                                                 |   67 
 Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni-icons.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TestRepository.cs                                        |   14 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobDataTableHostedService.cs          |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/GlobalUsing.cs                                    |    2 
 Code Management/PDA-FG/main.js                                                                                          |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_styles.scss                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_WareAreaInfoService.cs                                |   18 
 Code Management/PDA-FG/tuniao-ui/components/tn-input/tn-input.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/LambdaExtensions.cs                                     |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-section/u-section.vue                                                      |    0 
 Code Management/PDA-FG/tuniao-ui/libs/config/color.js                                                                   |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/builder/coder.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskExecuteDetailController.cs                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formChart.vue                                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs                                       |   23 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs                                          |   15 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoDetailController.cs                  |   12 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/PalletCodeInfo.cs                                               |   16 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_MenuService.cs                                               |  212 
 Code Management/PDA-FG/tuniao-ui/components/tn-grid-item/tn-grid-item.vue                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj              |   13 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js                                            |    0 
 Code Management/DB/2026-4-1WCS.sql                                                                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICacheService.cs                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/CustomException/QuartzJobException.cs                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/dispatchInfo.vue                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs                                                |  127 
 Code Management/PDA-FG/uview-ui/components/u-keyboard/u-keyboard.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue                                              |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tree-view/tn-tree-view.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/Home.vue                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj                                          |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue                                                     |  317 
 Code Management/WCS/WIDESEA_WCSClient/src/api/useTest.js                                                                |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/LinqExtension.cs                                          |   19 
 Code Management/PDA-FG/uview-ui/components/u-radio-group/u-radio-group.vue                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoHtyRepository.cs                |    6 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/addrouters.vue                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskExecuteDetailController.cs                 |   20 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs                                   |    0 
 Code Management/PDA-FG/unpackage/res/icons/152x152.png                                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoDetailRepository.cs             |    6 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/SqlDbTypeName.cs                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Icons.vue                                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-loadmore/u-loadmore.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-wal            |    0 
 Code Management/PDA-FG/uni_modules/uni-badge/package.json                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DispatchInfo.tsv           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocol.tsv         |    0 
 Code Management/PDA-FG/uni_modules/uni-card/package.json                                                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/props.js                                            |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-empty/tn-empty.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_LogRepository.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue                                                     |  182 
 Code Management/PDA-FG/uview-ui/libs/function/md5.js                                                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json                                  |   31 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs                                         |   14 
 Code Management/PDA-FG/uni_modules/uni-scss/changelog.md                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_InventoryRecordRepository.cs        |   31 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/script/testFormExtend.js                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj                  |   14 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js                                        |    0 
 Code Management/PDA-FG/uview-ui/libs/request/index.js                                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj              |    0 
 Code Management/PDA-FG/unpackage/cache/apk/apkurl                                                                       |    0 
 Code Management/PDA-FG/uview-ui/libs/css/style.vue.scss                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/WIDESEA_OrderServices.csproj                                |   19 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/App.cs                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue                                                 |    0 
 Code Management/PDA-FG/uni_modules/uni-transition/changelog.md                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs                                                      |   11 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskExecuteDetailRepository.cs                    |    0 
 Code Management/PDA-FG/uview-ui/libs/function/$parent.js                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs                                             |  121 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs                                            |   51 
 Code Management/PDA-FG/uview-ui/components/u-waterfall/u-waterfall.vue                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/ITaskExecuteDetailService.cs                     |    6 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceInfo.tsv             |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxhdpi.png                             |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-subsection/tn-subsection.vue                                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/script/testFormExtend.js                                               |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapppicker.js                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Log.cs                                                             |  755 
 Code Management/PDA-FG/uview-ui/components/u-tag/u-tag.vue                                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/icon.css                                                  |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/DownloadForm.js                             |    0 
 Code Management/PDA-FG/common/config.js                                                                                 |    0 
 Code Management/PDA-FG/pages/Empty/Empty.vue                                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml                |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_color.scss                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_LogRepository.cs                                         |   14 
 Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj                                        |   44 
 Code Management/PDA-FG/tuniao-ui/libs/css/main.scss                                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Tenant.tsv                   |    3 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js                                                  |  134 
 Code Management/PDA-FG/uview-ui/components/u-field/u-field.vue                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheHashService.cs                                    |   45 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top3.png                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server.sln                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoDetailService.cs                   |    5 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_Task_HtyRepository.cs                       |   13 
 Code Management/PDA-FG/uview-ui/components/u-empty/u-empty.vue                                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDispatchInfoRepository.cs                        |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/readme.md                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs                                       |   16 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png                                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/package.json                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs                                   |    0 
 Code Management/PDA-FG/uni_modules/uni-badge/components/uni-badge/uni-badge.vue                                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-popup/tn-popup.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolDetailController.cs         |    0 
 Code Management/PDA-FG/uview-ui/components/u-slider/u-slider.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs                                                         |   30 
 Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json                             |    0 
 Code Management/PDA-FG/uview-ui/libs/util/province.js                                                                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-column-notice/tn-column-notice.vue                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs                                      |   18 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs                                               |   15 
 Code Management/PDA-FG/uview-ui/components/u-time-line/u-time-line.vue                                                  |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_x.png                                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Log.vue                                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/record/locationStatusChangeRecord.js                                |   61 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_RoleAuth.tsv              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs                                                 |  121 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs                        |   26 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/WIDESEA_Cache.csproj                                                |   17 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolHeader.vue                                                |    0 
 Code Management/PDA-FG/unpackage/res/icons/144x144.png                                                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/index.wxs                                             |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-index-list/tn-index-list.vue                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/SqlSugarAop.cs                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs                                     |   41 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs                                          |   21 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheService.cs                                    |  180 
 Code Management/PDA-FG/tuniao-ui/components/tn-landscape/tn-landscape.vue                                               |    0 
 Code Management/PDA-FG/uview-ui/components/u-switch/u-switch.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue                                                |    0 
 Code Management/PDA-FG/common/http.interceptor.js                                                                       |  133 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/JobSetup.cs                                               |   23 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs                                        |  201 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs                                     |   43 
 Code Management/PDA-FG/uview-ui/components/u-checkbox-group/u-checkbox-group.vue                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/404.vue                                                   |    0 
 Code Management/PDA-FG/uview-ui/libs/util/city.js                                                                       |    0 
 Code Management/PDA-FG/uview-ui/components/u-swipe-action/u-swipe-action.vue                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs                                        |   15 
 Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchStatusDTO.cs                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs                           |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/repeat.mp3                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceInfoDTO.cs                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ExceptionHandlerMiddleware.cs                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/LoginInfo.cs                                                     |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_BZ.cs                        |    0 
 Code Management/PDA-FG/unpackage/res/icons/58x58.png                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITask_HtyRepository.cs                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv                     |  146 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue                                           |    0 
 Code Management/PDA-FG/uview-ui/libs/function/timeFrom.js                                                               |    0 
 Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js                                |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/manifest.json                                             |    0 
 Code Management/PDA-FG/LICENSE                                                                                          |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.ttf                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/AGVSignal.cs                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs                             |    0 
 Code Management/PDA-FG/uview-ui/libs/function/colorGradient.js                                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_LogRepository.cs                                           |   18 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_bottom_bg.jpg                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/SignalrNoticeService.cs                                |    0 
 Code Management/PDA-FG/uview-ui/components/u-table/u-table.vue                                                          |    0 
 Code Management/PDA-FG/uview-ui/components/u-tabs/u-tabs.vue                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue                                                     |  672 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/options.js                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-wal       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-full-screen/u-full-screen.vue                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryListService.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs                                                  |  165 
 Code Management/PDA-FG/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/CateGoryConst.cs                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/AppSecret.cs                                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue                                                  |  226 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs                        |   64 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs                               |   72 
 Code Management/PDA-FG/tuniao-ui/components/tn-verification-code/tn-verification-code.vue                               |    0 
 Code Management/PDA-FG/uni_modules/uni-load-more/readme.md                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/AreaInfo.cs                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DataLengthAttribute.cs                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationStatusChangeRecordRepository.cs |   20 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs                                    |   79 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs                                                 |  428 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogAPI.cs                                               |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.css                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs                                         |   31 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top2.jpg                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs                            |   59 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceFunFilter.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs                |   16 
 Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue                                                   |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/fail.mp3                                               |    0 
 Code Management/PDA-FG/uview-ui/components/u-link/u-link.vue                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/RouterInOutType.cs                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_InventoryRecordService.cs              |   27 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/TaskExecuteDetailService.cs                      |   13 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_MaterielInfoController.cs                  |   19 
 Code Management/PDA-FG/components/uni-section/readme.md                                                                 |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappchooselocation.js                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoHtyService.cs                       |   17 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoController.cs                       |   32 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/index.scss                                                           |    0 
 Code Management/PDA-FG/common/uni-ui.scss                                                                               |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission.vue                                                   |    0 
 Code Management/PDA-FG/pages/Inbound/Inbound.vue                                                                        |    0 
 Code Management/PDA-FG/uni_modules/uni-data-select/readme.md                                                            |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/libs/MpHtmlParser.js                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs                                                |   19 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User.js                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ObjectExtension.cs                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/public/wcslogo.png                                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/Login.vue                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/Dt_StationManagerController.cs            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs                           |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/script/common.js                                                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg                                            |    0 
 Code Management/PDA-FG/uview-ui/libs/css/color.scss                                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj                        |   13 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/LoginInfo.cs                                          |   15 
 Code Management/PDA-FG/uni.promisify.adaptor.js                                                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/readme.md                                                                   |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/tools/functions.scss                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs                                | 1020 +
 Code Management/PDA-FG/unpackage/res/icons/40x40.png                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_UserService.cs                                    |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-row-notice/tn-row-notice.vue                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs                                             |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chart.vue                                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/dispatchInfo.js                                           |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue                                         |    0 
 Code Management/PDA-FG/tuniao-ui/libs/mixin/components_color.js                                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-shm       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/GroupedStockInfo.cs                                               |   18 
 Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/GlobalUsing.cs                                     |    3 
 Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationInfoRepository.cs               |    5 
 Code Management/PDA-FG/uview-ui/LICENSE                                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs                                         |   96 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/logo.png                                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs                                                     |   14 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs                                           |   85 
 Code Management/PDA-FG/tuniao-ui/index.js                                                                               |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue                                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs                                  |   81 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerMiddleware.cs                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/extend/importDevicePro.vue                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml                 |   19 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs                                                     |   67 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoRepository.cs                   |    6 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs                               |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/$parent.js                                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/WIDESEA_IOrderServices.csproj                              |   13 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chart.vue                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DelLogService.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/package.json                                                                      |    0 
 Code Management/PDA-FG/tuniao-ui/README.md                                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCS/Dt_DeviceInfo.cs                                                  |  104 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue                                  |  292 
 Code Management/PDA-FG/uview-ui/components/u-radio/u-radio.vue                                                          |    0 
 Code Management/PDA-FG/uview-ui/components/u-back-top/u-back-top.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_MaterielInfoRepository.cs                         |   13 
 Code Management/PDA-FG/uview-ui/libs/css/style.mp.scss                                                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationStatusChangeRecordRepository.cs   |  112 
 Code Management/PDA-FG/static/favicon.ico                                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolDetailRepository.cs                |    0 
 Code Management/PDA-FG/tuniao-ui/libs/css/color.scss                                                                    |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappopenlocation.js                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs                                         |   26 
 Code Management/PDA-FG/uni_modules/uni-segmented-control/package.json                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/UserPermissions.cs                                 |    0 
 Code Management/PDA-FG/unpackage/res/icons/192x192.png                                                                  |    0 
 Code Management/PDA-FG/uni_modules/uni-list/changelog.md                                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/router.js                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs                                              |   57 
 Code Management/PDA-FG/tuniao-ui/components/tn-badge/tn-badge.vue                                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml                |    0 
 Code Management/PDA-FG/static/logo.png                                                                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-line-progress/u-line-progress.vue                                          |    0 
 Code Management/PDA-FG/pages/basic/cachePoint.vue                                                                       |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/colorUtils.js                                                            |    0 
 Code Management/PDA-FG/uni_modules/uni-forms/package.json                                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj              |   13 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_radius.scss                                                 |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-radio-group/tn-radio-group.vue                                           |    0 
 Code Management/PDA-FG/uview-ui/components/u-grid/u-grid.vue                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs                  |  499 
 Code Management/PDA-FG/uview-ui/libs/function/color.js                                                                  |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config-service.js                                         |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-hdpi.png                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/ICommonElevator.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/RuntimeExtension.cs                                        |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tips/tn-tips.vue                                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceStatus.cs                                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tabs/tn-tabs.vue                                                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-select/tn-select.vue                                                     |    0 
 Code Management/PDA-FG/uview-ui/components/u-car-keyboard/u-car-keyboard.vue                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/icon.css                                                  |    0 
 Code Management/PDA-FG/pages/index/settings.vue                                                                         |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top3.png                                     |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/u-parse.vue                                                          |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index.wxs                                                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-line-progress/tn-line-progress.vue                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs                                                    |  582 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-id/readme.md                                                                     |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center-selected.png                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/package.json                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Task_HtyService.cs                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js                                              |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/index/Message.vue                                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StatusChangeType/StatusChangeTypeEnum.cs                           |   31 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceInfo.cs                                      |    0 
 Code Management/PDA-FG/unpackage/res/icons/80x80.png                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs                                             |   36 
 Code Management/PDA-FG/uview-ui/components/u-form-item/u-form-item.vue                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs                              |    0 
 Code Management/PDA-FG/uview-ui/iconfont.css                                                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceInfoRepository.cs                          |    0 
 Code Management/PDA-FG/uview-ui/components/u-subsection/u-subsection.vue                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs                                     |  234 
 Code Management/PDA-FG/tuniao-ui/components/tn-calendar/tn-calendar.vue                                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs                      |  287 
 Code Management/PDA-FG/tuniao-ui/libs/utils/emitter.js                                                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-sticky/tn-sticky.vue                                                     |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-badge/changelog.md                                                               |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_MenuRepository.cs                                          |  223 
 Code Management/PDA-FG/uview-ui/index.js                                                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role.js                                                  |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapperror.png                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml                |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-form-item/tn-form-item.vue                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoHtyvice.cs                           |    5 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs                                         |   57 
 Code Management/PDA-FG/uni_modules/uni-card/changelog.md                                                                |    0 
 Code Management/PDA-FG/uview-ui/libs/function/addUnit.js                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IRouterService.cs                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBContext.cs                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceInfoRepository.cs                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleRepository.cs                                          |   18 
 Code Management/PDA-FG/uview-ui/components/u-no-network/u-no-network.vue                                                |    0 
 Code Management/PDA-FG/uview-ui/components/u-action-sheet/u-action-sheet.vue                                            |    0 
 Code Management/PDA-FG/uview-ui/components/u-card/u-card.vue                                                            |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoDetailService.cs                     |    5 
 Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoDetailService.cs                    |    8 
 Code Management/PDA-FG/tuniao-ui/components/tn-loading/tn-loading.vue                                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DispatchInfoRepository.cs                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/GlobalUsing.cs                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/ITenantEntity.cs                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/api/permission.js                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationInfoRepository.cs                 |    9 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs                                   |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/favicon.ico                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryListService.cs                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheHashService.cs                                   |   88 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheHashService.cs                                |   60 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperConfig.cs                                      |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/css/common.less                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITask_HtyService.cs                                   |    0 
 Code Management/PDA-FG/uview-ui/components/u-avatar/u-avatar.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs                                           |  151 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/IviewCircle.vue                                          |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue                                   |    0 
 Code Management/PDA-FG/unpackage/res/icons/76x76.png                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs                                        |  183 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js                             |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-checkbox/tn-checkbox.vue                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail_Hty.js                                        |   75 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj                                                |    9 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/TenantUtil.cs                                             |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappopenlocation.js                                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue                        |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_bottom_bg.jpg                                |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/chart-options.js                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Class1.cs                                         |   33 
 Code Management/PDA-FG/uview-ui/components/u-loading/u-loading.vue                                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleController.cs                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Menu.tsv                  |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config.js                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/IAGVSignal.cs                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml                |   17 
 Code Management/PDA-FG/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Menu.cs                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/serviceFilter.js                                    |    0 
 Code Management/PDA-FG/uview-ui/libs/function/route.js                                                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-grid/tn-grid.vue                                                         |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role1.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs                                           |  134 
 Code Management/DB/2026-4-2WMS.sql                                                                                      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Spec/SpeStackerCrane.cs                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-image-upload/tn-image-upload.vue                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_AreaInfoService.cs                                  |   14 
 Code Management/PDA-FG/uview-ui/components/u-collapse-item/u-collapse-item.vue                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/ITaskExecuteDetailRepository.cs               |   13 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs                                 |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapperror.png                                             |    0 
 Code Management/PDA-FG/unpackage/res/icons/72x72.png                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-search-bar/package.json                                                          |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/router/redirect.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_TaskExecuteDetailRepository.cs                    |   13 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs                                     |   93 
 Code Management/PDA-FG/uni_modules/uni-icons/readme.md                                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs                                         |   80 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs                                            |   19 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationStatusChangeRecord.cs                   |   74 
 Code Management/PDA-FG/uni_modules/uni-data-checkbox/changelog.md                                                       |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/fail.mp3                                           |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js                                     |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js                                    |    0 
 Code Management/PDA-FG/tuniao-ui/libs/utils/area.js                                                                     |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center.png                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml                |    0 
 Code Management/PDA-FG/uview-ui/libs/function/type2icon.js                                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Level.cs                                                           |   16 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs                                 |   92 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationResponse.cs                            |    0 
 Code Management/PDA-FG/unpackage/cache/cloudcertificate/certini                                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs                             |   55 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_TenantController.cs                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs                                   |   55 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_LogService.cs                                              |  233 
 Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js                                                            |   84 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png                                                         |    0 
 Code Management/PDA-FG/uni_modules/uni-easyinput/package.json                                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json                       |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json                                     |  156 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue                                                  | 1234 +
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/UtilConvert.cs                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryRepository.cs                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/Task_HtyController.cs                          |   25 
 Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceInfo.vue                                                |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/popup.js                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_d.png                                                         |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/logo.png                                           |    0 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json                                     |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-picker/tn-picker.vue                                                     |    0 
 Code Management/PDA-FG/App.vue                                                                                          |    0 
 Code Management/PDA-FG/uview-ui/components/u-count-to/u-count-to.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/public/index.html                                                                 |  136 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleAuthor.cs                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/HtmlElementType.cs                                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/FrameSeed.cs                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/MenuDTO.cs                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/TaskExecuteDetailRepository.cs                 |   29 
 Code Management/WCS/WIDESEA_WCSClient/src/store/index.js                                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/ShuttleCar.cs                                     |    0 
 Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs                            |  202 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquill.js                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs                                       |   28 
 Code Management/PDA-FG/uview-ui/components/u-sticky/u-sticky.vue                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm           |    0 
 Code Management/PDA-FG/uview-ui/libs/function/toast.js                                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_WareAreaInfoController.cs                  |   20 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs                                                    |  217 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj                   |   13 
 Code Management/WCS/WIDESEA_WCSClient/src/uitils/common.js                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Dt_InventoryRecord.cs                             |   54 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Department.cs                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/CorsSetup.cs                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/GlobalExceptionsFilter.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs                                               |  217 
 Code Management/WCS/WIDESEA_WCSClient/jsconfig.json                                                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PrintSetting.cs                                     |   52 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/InternalApp.cs                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/IpPolicyRateLimitSetup.cs                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceEnum/DeviceStatus.cs                                   |    0 
 Code Management/PDA-FG/unpackage/res/icons/20x20.png                                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/Caching.cs                                                 |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/index.wxs                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperSetup.cs                                       |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_StationManagerService.cs               |   27 
 Code Management/PDA-FG/uni_modules/uni-easyinput/readme.md                                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs                      |   19 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Log.js                                                   |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-cascade-selection/tn-cascade-selection.vue                               |    0 
 Code Management/PDA-FG/uview-ui/components/u-row/u-row.vue                                                              |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/index.js                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile.pubxml      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/coding.vue                                                |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error.png                                                         |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index.png                                              |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquillimageresize.js                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_TaskExecuteDetail.cs                                |   57 
 Code Management/PDA-FG/tuniao-ui/components/tn-number-box/tn-number-box.vue                                             |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/number.js                                                                |    0 
 Code Management/PDA-FG/uview-ui/components/u-calendar/u-calendar.vue                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleAuthRepository.cs                           |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/icons.js                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/InitializationHostServiceSetup.cs                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_RoleAuth.cs                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-list/readme.md                                                                   |    0 
 Code Management/PDA-FG/uview-ui/components/u-select/u-select.vue                                                        |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_Task_HtyRepository.cs                     |    6 
 Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json                            |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoHtyRepository.cs                  |    6 
 Code Management/PDA-FG/unpackage/res/icons/120x120.png                                                                  |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/color.js                                                                 |    0 
 Code Management/WMS/WIDESEA_WMSClient/public/static/login_bg.png                                                        |    0 
 Code Management/PDA-FG/.eslintignore                                                                                    |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-tr/tn-tr.vue                                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs                      |   26 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/EnumHelper.cs                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseController/ApiBaseController.cs                               |    0 
 Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue                          |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj                                            |    0 
 Code Management/PDA-FG/uview-ui/components/u-lazy-load/u-lazy-load.vue                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_TenantService.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js                                         |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-read-more/u-read-more.vue                                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Test.cs                                           |   31 
 Code Management/PDA-FG/unpackage/cache/apk/cmManifestCache.json                                                         |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-view.js                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs                              |   88 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/keypress.js                                           |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs                                        |  454 
 Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png                                                     |    0 
 Code Management/PDA-FG/tuniao-ui/libs/css/style.mp.scss                                                                 |    0 
 Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-divider/u-divider.vue                                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs                        |   68 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Storage.cs                                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/materielInfo.js                                               |   58 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs                                                  |   47 
 Code Management/PDA-FG/tuniao-ui/components/tn-rate/tn-rate.vue                                                         |    0 
 Code Management/PDA-FG/uview-ui/libs/function/sys.js                                                                    |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata.vue                                                      |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs                                              |   80 
 Code Management/PDA-FG/tuniao-ui/index.scss                                                                             |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_border.scss                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleAuthRepository.cs                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ActionExecuteFilter.cs                                     |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/index.js                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Log/WriteLog.cs                                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensDBDataType.cs                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-line/u-line.vue                                                            |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-keyboard/tn-keyboard.vue                                                 |    0 
 Code Management/PDA-FG/tuniao-ui/libs/css/style.h5.scss                                                                 |    0 
 Code Management/PDA-FG/uview-ui/components/u-td/u-td.vue                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TenantService.cs                                             |   80 
 Code Management/PDA-FG/uview-ui/libs/function/queryParams.js                                                            |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue                                                   |  359 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpHelper.cs                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoHtyController.cs                     |   12 
 Code Management/PDA-FG/uni_modules/uni-group/package.json                                                               |    0 
 Code Management/PDA-FG/uni_modules/uni-combox/package.json                                                              |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DelLogRepository.cs                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheService.cs                                        |  187 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs                                                |  109 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs                                           |   24 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs                                 |   57 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceInfo.js                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevator.cs                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs                         |    0 
 Code Management/WMS/WIDESEA_WMSClient/README.md                                                                         |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/GlobalUsing.cs                                       |    3 
 Code Management/WMS/WIDESEA_WMSClient/tests/unit/example.spec.js                                                        |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/GlobalUsing.cs                                        |   18 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DispatchInfo.cs                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleService.cs                                      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocolDetail.js                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/LogAOP.cs                                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/BaseDBConfig.cs                                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageGridData.cs                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue                                                     |  220 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs                                                        |  328 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoDetailRepository.cs               |   14 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Dictionary.vue                                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/JobSetup.cs                                 |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_DictionaryRepository.cs                                  |   15 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs                                                |   24 
 Code Management/PDA-FG/.vscode/launch.json                                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_LogService.cs                                     |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBSeed.cs                                                    |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/CommunicationException.cs                                 |    0 
 Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db               |    0 
 Code Management/PDA-FG/uni_modules/uni-combox/components/uni-combox/uni-combox.vue                                      |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue                                        |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue                               |    0 
 Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/CustomException/StackerCraneException.cs          |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/message.js                                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs                                              |   56 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.js                                                   |   26 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Dictionary.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TestRepository.cs                                          |   18 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs                                           |   54 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs                                               |   84 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/IConveyorLine.cs                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/OtherDevice.cs                                  |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role1.js                                                 |   61 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs                                              |   53 
 Code Management/PDA-FG/tuniao-ui/components/tn-color-icon/tn-color-icon.vue                                             |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobHostedService.cs                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm/VolFormRender.js                                     |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs                     |   34 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/IDependency.cs                                                    |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/uitils/eventBus.js                                                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/MultiTenantAttribute.cs                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantConst.cs                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs                                                   |   72 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formChart.vue                                                    |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoRepository.cs                     |    6 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs                                                 |   93 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_ConfigController.cs                      |   18 
 Code Management/PDA-FG/pages/login/login.vue                                                                            |  531 
 Code Management/PDA-FG/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue                                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDA/PDAController.cs                                |   84 
 Code Management/PDA-FG/uni_modules/uni-id/package.json                                                                  |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-switch/tn-switch.vue                                                     |    0 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.umd.min.js                                           |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DelLogRepository.cs                               |    0 
 Code Management/WCS/WIDESEA_WCSServer/LogLibrary/LogLibrary.csproj                                                      |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryListController.cs              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/UseServiceDIAttribute.cs                                   |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue                                        |    0 
 Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formOptions.js                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/GlobalUsing.cs                                                      |    7 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.vue                                         |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/WIDESEA_IOrderRepository.csproj                          |   13 
 Code Management/PDA-FG/static/center.png                                                                                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_Task_HtyService.cs                            |   22 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj                                    |   13 
 Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/success.mp3                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj                    |    0 
 Code Management/PDA-FG/uview-ui/libs/function/bem.js                                                                    |    0 
 Code Management/PDA-FG/tuniao-ui/libs/function/test.js                                                                  |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj                |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln                                                             |  458 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/ISimpleHub.cs                                              |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs                                                    |  351 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_DictionaryService.cs                                       |   17 
 Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/en.json                                          |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_StationManager.cs                                   |  109 
 Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue                                  |    0 
 Code Management/PDA-FG/uview-ui/theme.scss                                                                              |    0 
 Code Management/PDA-FG/uview-ui/components/u-navbar/u-navbar.vue                                                        |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/MiddlewareHelpers.cs                                  |    0 
 Code Management/PDA-FG/uview-ui/components/u-parse/libs/CssHandler.js                                                   |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs                                                   |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue                                          |    0 
 Code Management/PDA-FG/uni_modules/uni-scss/variables.scss                                                              |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs                               |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/GlobalUsing.cs                                        |    3 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj                  |   27 
 Code Management/PDA-FG/tuniao-ui/components/tn-sign-board/tn-sign-board.vue                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs                                |   94 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs                                |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/RouterService.cs                                     |    0 
 Code Management/PDA-FG/uview-ui/components/u-skeleton/u-skeleton.vue                                                    |    0 
 Code Management/PDA-FG/uview-ui/components/u-search/u-search.vue                                                        |    0 
 Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue                                       |    0 
 Code Management/WMS/WIDESEA_WMSClient/yarn.lock                                                                         |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue                                   |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs                            |    0 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/MemoryCacheService.cs                                      |    0 
 Code Management/PDA-FG/uview-ui/libs/util/area.js                                                                       |    0 
 Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_User.vue                                                     |    0 
 Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/logo.png                                               |    0 
 Code Management/PDA-FG/unpackage/res/icons/29x29.png                                                                    |    0 
 Code Management/PDA-FG/uni_modules/uni-icons/changelog.md                                                               |    0 
 /dev/null                                                                                                               |  486 
 Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/favicon.ico                                             |    0 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoHtyController.cs                    |   13 
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile5.pubxml                |    0 
 1,572 files changed, 46,747 insertions(+), 486 deletions(-)

diff --git a/Code Management/DB/2026-4-1.sql b/Code Management/DB/2026-4-1WCS.sql
similarity index 100%
rename from Code Management/DB/2026-4-1.sql
rename to Code Management/DB/2026-4-1WCS.sql
Binary files differ
diff --git a/Code Management/DB/2026-4-2WMS.sql b/Code Management/DB/2026-4-2WMS.sql
new file mode 100644
index 0000000..a9643a0
--- /dev/null
+++ b/Code Management/DB/2026-4-2WMS.sql
Binary files differ
diff --git a/Code Management/PDA/.eslintignore b/Code Management/PDA-FG/.eslintignore
similarity index 100%
rename from Code Management/PDA/.eslintignore
rename to Code Management/PDA-FG/.eslintignore
diff --git a/Code Management/PDA/.hbuilderx/launch.json b/Code Management/PDA-FG/.hbuilderx/launch.json
similarity index 100%
rename from Code Management/PDA/.hbuilderx/launch.json
rename to Code Management/PDA-FG/.hbuilderx/launch.json
diff --git a/Code Management/PDA/.vscode/launch.json b/Code Management/PDA-FG/.vscode/launch.json
similarity index 100%
rename from Code Management/PDA/.vscode/launch.json
rename to Code Management/PDA-FG/.vscode/launch.json
diff --git a/Code Management/PDA/App.vue b/Code Management/PDA-FG/App.vue
similarity index 100%
rename from Code Management/PDA/App.vue
rename to Code Management/PDA-FG/App.vue
diff --git a/Code Management/PDA/LICENSE b/Code Management/PDA-FG/LICENSE
similarity index 100%
rename from Code Management/PDA/LICENSE
rename to Code Management/PDA-FG/LICENSE
diff --git a/Code Management/PDA/common/config.js b/Code Management/PDA-FG/common/config.js
similarity index 100%
rename from Code Management/PDA/common/config.js
rename to Code Management/PDA-FG/common/config.js
diff --git a/Code Management/PDA-FG/common/http.interceptor.js b/Code Management/PDA-FG/common/http.interceptor.js
new file mode 100644
index 0000000..89450f0
--- /dev/null
+++ b/Code Management/PDA-FG/common/http.interceptor.js
@@ -0,0 +1,133 @@
+let baseUrl = 'http://127.0.0.1:5000'
+
+const install = (Vue, vm) => {
+	// 姝や负鑷畾涔夐厤缃弬鏁帮紝鍏蜂綋鍙傛暟瑙佷笂鏂硅鏄�
+	Vue.prototype.$u.http.setConfig({
+		baseUrl: baseUrl,
+		loadingText: '鍔姏鍔犺浇涓瓇',
+		loadingTime: 5000,
+		originalData: true,
+		// ......
+	});
+
+	// 璇锋眰鎷︽埅锛岄厤缃甌oken绛夊弬鏁�
+	Vue.prototype.$u.http.interceptor.request = (config) => {
+		// 寮曠敤token
+		// 鏂瑰紡涓�锛屽瓨鏀惧湪vuex鐨則oken锛屽亣璁句娇鐢ㄤ簡uView灏佽鐨剉uex鏂瑰紡
+		// 瑙侊細https://uviewui.com/components/globalVariable.html 
+		// config.header.token = vm.token;
+
+		// 鏂瑰紡浜岋紝濡傛灉娌℃湁浣跨敤uView灏佽鐨剉uex鏂规硶锛岄偅涔堥渶瑕佷娇鐢�$store.state鑾峰彇
+		// config.header.token = vm.$store.state.token;
+
+		// 鏂瑰紡涓夛紝濡傛灉token鏀惧湪浜唃lobalData锛岄�氳繃getApp().globalData鑾峰彇
+		// config.header.token = getApp().globalData.username;
+
+		// 鏂瑰紡鍥涳紝濡傛灉token鏀惧湪浜哠torage鏈湴瀛樺偍涓紝鎷︽埅鏄瘡娆¤姹傞兘鎵ц鐨�
+		// 鎵�浠ュ摢鎬曟偍閲嶆柊鐧诲綍淇敼浜哠torage锛屼笅涓�娆$殑璇锋眰灏嗕細鏄渶鏂板��
+		// const token = uni.getStorageSync('token');
+		// config.header.token = token;
+		// debugger
+		// var aaa = "Bearer " + uni.getStorageSync('jo_id_token');
+		// var bbb = "a" + uni.getStorageSync('remAcc');
+		// var ccc =  "a" + uni.getStorageSync('remPwd');
+		// var ddd =  "a" + uni.getStorageSync('acc');
+		// var eee =  "a" + uni.getStorageSync('pwd');
+		config.header.Token = 'xxxxxx';
+		config.header.Authorization = "Bearer " + uni.getStorageSync('jo_id_token');
+
+		config.header.uniapp = '1';
+		// 鍙互瀵规煇涓猽rl杩涜鐗瑰埆澶勭悊锛屾url鍙傛暟涓簍his.$u.get(url)涓殑url鍊� 
+		if (config.url == '/api/User/login') config.header.noToken = true;
+		// 鏈�鍚庨渶瑕佸皢config杩涜return
+		return config;
+		// 濡傛灉return涓�涓猣alse鍊硷紝鍒欎細鍙栨秷鏈璇锋眰
+		// if(config.url == '/user/rest') return false; // 鍙栨秷鏌愭璇锋眰
+	}
+
+	// 鍝嶅簲鎷︽埅锛屽垽鏂姸鎬佺爜鏄惁閫氳繃
+	Vue.prototype.$u.http.interceptor.response = (res) => {
+		if (!res.statusCode) {
+			if (res.errMsg) {
+				vm.$u.toast("璇锋眰澶辫触,璇锋鏌ュ悗鍙扮▼搴忔槸鍚︽墦寮�,閿欒淇℃伅:" + res.errMsg);
+				return false;
+			}
+		}
+
+		if (res.statusCode == 200) {
+			// res涓烘湇鍔$杩斿洖鍊硷紝鍙兘鏈塩ode锛宺esult绛夊瓧娈�
+			// 杩欓噷瀵箁es.result杩涜杩斿洖锛屽皢浼氬湪this.$u.post(url).then(res => {})鐨則hen鍥炶皟涓殑res鐨勫埌
+			// 濡傛灉閰嶇疆浜唎riginalData涓簍rue锛岃鐣欐剰杩欓噷鐨勮繑鍥炲��
+			return res.data;
+		} else if (res.statusCode == 401) {
+			// 鍋囪201涓簍oken澶辨晥锛岃繖閲岃烦杞櫥褰�
+			vm.$u.toast('楠岃瘉澶辫触锛岃閲嶆柊鐧诲綍');
+			setTimeout(() => {
+				// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
+				vm.$u.route('/pages/login/login')
+			}, 1500)
+			return false;
+		} else if (res.statusCode == 202) {
+			// 濡傛灉杩斿洖false锛屽垯浼氳皟鐢≒romise鐨剅eject鍥炶皟锛�
+			// 骞跺皢杩涘叆this.$u.post(url).then().catch(res=>{})鐨刢atch鍥炶皟涓紝res涓烘湇鍔$鐨勮繑鍥炲��
+			vm.$u.post("/api/User/replaceToken").then(res => {
+				if (x.data.status) {
+					vm.$u.vuex('vuex_token', x.data.data)
+					vm.$u.route({
+						type: "navigateBack",
+						delta: -1
+					})
+				} else {
+					console.log(x.data.message);
+					vm.$u.toast('楠岃瘉杩囨湡锛岃閲嶆柊鐧诲綍');
+					setTimeout(() => {
+						// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
+						vm.$u.route('/pages/login/login')
+					}, 1500)
+				}
+			}).catch(err => {
+				uni.reLaunch({
+					url: '/pages/login/login'
+				});
+			})
+			// uni.request({
+			// 	url: "http://192.168.12.245:8099/api/User/replaceToken",
+			// 	param: {},
+			// 	method: 'POST',
+			// 	responseType: "text",
+			// 	header: {
+			// 		Authorization: "Bearer " + vm.vuex_token
+			// 	},
+			// 	async: false,
+			// 	success: function(x) {
+			// 		if (x.data.status) {
+			// 			vm.$u.vuex('vuex_token',x.data.data)
+			// 			vm.$u.route({
+			// 				type: "navigateBack",
+			// 				delta: -1
+			// 			})
+			// 		} else {
+			// 			console.log(x.data.message);
+			// 			vm.$u.toast('楠岃瘉杩囨湡锛岃閲嶆柊鐧诲綍');
+			// 			setTimeout(() => {
+			// 				// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
+			// 				vm.$u.route('/pages/user/login')
+			// 			}, 1500)
+			// 		}
+			// 	},
+			// 	errror: function(ex) {
+			// 		console.log(ex);
+			// 		uni.reLaunch({
+			// 			url: '/pages/user/login'
+			// 		});
+			// 	},
+			// });
+			return false;
+		}
+	}
+}
+
+export default {
+	install,
+	baseUrl
+}
\ No newline at end of file
diff --git a/Code Management/PDA/common/uni-ui.scss b/Code Management/PDA-FG/common/uni-ui.scss
similarity index 100%
rename from Code Management/PDA/common/uni-ui.scss
rename to Code Management/PDA-FG/common/uni-ui.scss
diff --git a/Code Management/PDA/components/uni-section/config.json b/Code Management/PDA-FG/components/uni-section/config.json
similarity index 100%
rename from Code Management/PDA/components/uni-section/config.json
rename to Code Management/PDA-FG/components/uni-section/config.json
diff --git a/Code Management/PDA/components/uni-section/readme.md b/Code Management/PDA-FG/components/uni-section/readme.md
similarity index 100%
rename from Code Management/PDA/components/uni-section/readme.md
rename to Code Management/PDA-FG/components/uni-section/readme.md
diff --git a/Code Management/PDA/components/uni-section/uni-section.vue b/Code Management/PDA-FG/components/uni-section/uni-section.vue
similarity index 100%
rename from Code Management/PDA/components/uni-section/uni-section.vue
rename to Code Management/PDA-FG/components/uni-section/uni-section.vue
diff --git a/Code Management/PDA/index.html b/Code Management/PDA-FG/index.html
similarity index 100%
rename from Code Management/PDA/index.html
rename to Code Management/PDA-FG/index.html
diff --git a/Code Management/PDA/main.js b/Code Management/PDA-FG/main.js
similarity index 100%
rename from Code Management/PDA/main.js
rename to Code Management/PDA-FG/main.js
diff --git a/Code Management/PDA/manifest.json b/Code Management/PDA-FG/manifest.json
similarity index 100%
rename from Code Management/PDA/manifest.json
rename to Code Management/PDA-FG/manifest.json
diff --git a/Code Management/PDA/package-lock.json b/Code Management/PDA-FG/package-lock.json
similarity index 100%
rename from Code Management/PDA/package-lock.json
rename to Code Management/PDA-FG/package-lock.json
diff --git a/Code Management/PDA/package.json b/Code Management/PDA-FG/package.json
similarity index 100%
rename from Code Management/PDA/package.json
rename to Code Management/PDA-FG/package.json
diff --git a/Code Management/PDA/pages.json b/Code Management/PDA-FG/pages.json
similarity index 100%
rename from Code Management/PDA/pages.json
rename to Code Management/PDA-FG/pages.json
diff --git a/Code Management/PDA/pages/Empty/Empty.vue b/Code Management/PDA-FG/pages/Empty/Empty.vue
similarity index 100%
rename from Code Management/PDA/pages/Empty/Empty.vue
rename to Code Management/PDA-FG/pages/Empty/Empty.vue
diff --git a/Code Management/PDA/pages/Inbound/Inbound.vue b/Code Management/PDA-FG/pages/Inbound/Inbound.vue
similarity index 100%
rename from Code Management/PDA/pages/Inbound/Inbound.vue
rename to Code Management/PDA-FG/pages/Inbound/Inbound.vue
diff --git a/Code Management/PDA/pages/Outbound/Outbound.vue b/Code Management/PDA-FG/pages/Outbound/Outbound.vue
similarity index 100%
rename from Code Management/PDA/pages/Outbound/Outbound.vue
rename to Code Management/PDA-FG/pages/Outbound/Outbound.vue
diff --git a/Code Management/PDA/pages/Point/Point.vue b/Code Management/PDA-FG/pages/Point/Point.vue
similarity index 100%
rename from Code Management/PDA/pages/Point/Point.vue
rename to Code Management/PDA-FG/pages/Point/Point.vue
diff --git a/Code Management/PDA/pages/Quality/Quality.vue b/Code Management/PDA-FG/pages/Quality/Quality.vue
similarity index 100%
rename from Code Management/PDA/pages/Quality/Quality.vue
rename to Code Management/PDA-FG/pages/Quality/Quality.vue
diff --git a/Code Management/PDA/pages/basic/cachePoint.vue b/Code Management/PDA-FG/pages/basic/cachePoint.vue
similarity index 100%
rename from Code Management/PDA/pages/basic/cachePoint.vue
rename to Code Management/PDA-FG/pages/basic/cachePoint.vue
diff --git a/Code Management/PDA/pages/home/home.vue b/Code Management/PDA-FG/pages/home/home.vue
similarity index 100%
rename from Code Management/PDA/pages/home/home.vue
rename to Code Management/PDA-FG/pages/home/home.vue
diff --git a/Code Management/PDA/pages/index/index.vue b/Code Management/PDA-FG/pages/index/index.vue
similarity index 100%
rename from Code Management/PDA/pages/index/index.vue
rename to Code Management/PDA-FG/pages/index/index.vue
diff --git a/Code Management/PDA/pages/index/settings.vue b/Code Management/PDA-FG/pages/index/settings.vue
similarity index 100%
rename from Code Management/PDA/pages/index/settings.vue
rename to Code Management/PDA-FG/pages/index/settings.vue
diff --git a/Code Management/PDA-FG/pages/login/login.vue b/Code Management/PDA-FG/pages/login/login.vue
new file mode 100644
index 0000000..4320b90
--- /dev/null
+++ b/Code Management/PDA-FG/pages/login/login.vue
@@ -0,0 +1,531 @@
+<template>
+	<view class="template-login">
+		<!-- 椤堕儴鑷畾涔夊鑸� -->
+		<!-- <tn-nav-bar fixed alpha customBack>
+      <view slot="back" class='tn-custom-nav-bar__back'
+        @click="goBack">
+        <text class='icon tn-icon-left'></text>
+        <text class='icon tn-icon-home-capsule-fill'></text>
+      </view>
+    </tn-nav-bar> -->
+
+		<view class="login">
+			<!-- 椤堕儴鑳屾櫙鍥剧墖-->
+			<view class="login__bg login__bg--top">
+				<image class="bg" src="/static/login_top2.jpg" mode="widthFix"></image>
+			</view>
+			<view class="login__bg login__bg--top">
+				<image class="rocket rocket-sussuspension" src="/static/login_top3.png" mode="widthFix"></image>
+			</view>
+
+			<view class="login__wrapper">
+
+				<!-- 杈撳叆妗嗗唴瀹�-->
+				<view class="login__info tn-flex tn-flex-direction-column tn-flex-col-center tn-flex-row-center">
+					<!-- 鐧诲綍 -->
+					<block v-if="currentModeIndex === 0">
+						<view
+							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
+							<view class="login__info__item__input__left-icon">
+								<view class="tn-icon-my"></view>
+							</view>
+							<view class="login__info__item__input__content">
+								<input maxlength="45" placeholder-class="input-placeholder" v-model="user"
+									placeholder="璇疯緭鍏ョ櫥褰曠敤鎴峰悕绉�" />
+							</view>
+						</view>
+
+						<view
+							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
+							<view class="login__info__item__input__left-icon">
+								<view class="tn-icon-lock"></view>
+							</view>
+							<view class="login__info__item__input__content">
+								<input :password="!showPassword" placeholder-class="input-placeholder" v-model="pass"
+									placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�" />
+							</view>
+							<view class="login__info__item__input__right-icon" @click="showPassword = !showPassword">
+								<view :class="[showPassword ? 'tn-icon-eye' : 'tn-icon-eye-hide']"></view>
+							</view>
+						</view>
+						<view
+							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
+							<view class="login__info__item__input__left-icon">
+								<view class="tn-icon-my"></view>
+							</view>
+							<view class="login__info__item__input__content">
+								<input maxlength="45" placeholder-class="input-placeholder" v-model="code"
+									placeholder="璇疯緭鍏ラ獙璇佺爜" />
+							</view>
+							<view class="login__info__item__input__right-icon u-border" style="width: 30%;"
+								@click="getVierificationCode">
+								<img v-show="codeImgSrc != ''" :src="codeImgSrc" />
+							</view>
+						</view>
+					</block>
+					<!-- 娉ㄥ唽 -->
+					<view class="login__info__item__input__content" style="margin-top: 20px;">
+						<uni-data-checkbox multiple v-model="checkbox" :localdata="hobby"></uni-data-checkbox>
+					</view>
+					<view class="login__info__item__button tn-cool-bg-color-7--reverse"
+						@click="currentModeIndex === 0 ? login() : registra()" hover-class="tn-hover"
+						:hover-stay-time="150">{{ currentModeIndex === 0 ? '鐧诲綍' : '娉ㄥ唽'}}</view>
+
+					<!-- <view v-if="currentModeIndex === 0" class="login__info__item__tips">蹇樿瀵嗙爜?</view> -->
+				</view>
+			</view>
+
+			<!-- <tn-tips ref="tips" position="top"></tn-tips> -->
+			<!-- 搴曢儴鑳屾櫙鍥剧墖-->
+			<view class="login__bg login__bg--bottom">
+				<image src="/static/login_bottom_bg.jpg" mode="widthFix"></image>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	var app = getApp();
+	export default {
+		name: 'login-demo-1',
+		// mixins: [template_page_mixin],*
+		data() {
+			return {
+				// 褰撳墠閫変腑鐨勬ā寮�
+				currentModeIndex: 0,
+				// 妯″紡閫変腑婊戝潡
+				modeSliderStyle: {
+					left: 0
+				},
+				// 鏄惁鏄剧ず瀵嗙爜
+				showPassword: false,
+				// 鍊掕鏃舵彁绀烘枃瀛�
+				tips: '鑾峰彇楠岃瘉鐮�',
+				email: '',
+				codeImgSrc: '',
+				pass: '',
+				code: '1234',
+				user: '',
+				isDetail: false,
+				hobby: [{
+						text: '璁颁綇璐﹀彿',
+						value: 1
+					},
+					{
+						text: '璁颁綇瀵嗙爜',
+						value: 2
+					}
+				],
+				checkbox: []
+			}
+		},
+		watch: {
+			currentModeIndex(value) {
+				const sliderWidth = uni.upx2px(476 / 2)
+				this.modeSliderStyle.left = `${sliderWidth * value}px`
+			}
+		},
+		onLoad(options) {
+			this.getVierificationCode()
+			if (options.id) {
+				this.isDetail = true
+			}
+		},
+		mounted() {
+			var remAcc = uni.getStorageSync('remAcc');
+			if (remAcc) {
+				this.checkbox.push(1);
+			}
+
+			var remPwd = uni.getStorageSync('remPwd');
+			if (remPwd) {
+				this.checkbox.push(2);
+			}
+			
+			var acc = uni.getStorageSync('acc');
+			if (acc) {
+				this.user = acc;;
+			}
+
+			var pwd = uni.getStorageSync('pwd');
+			if (pwd) {
+				this.pass = pwd;
+			}
+			
+		},
+		methods: {
+			///鑾峰彇楠岃瘉鐮�
+			getVierificationCode() {
+				this.$u.get('/api/Sys_User/getVierificationCode', {}).then(res => {
+					if (res.img != null) {
+						this.codeImgSrc = "data:image/png;base64," + res.img;
+						this.email = res.uuid;
+					} else {
+						this.$refs.uToast.show({
+							title: '鑾峰彇楠岃瘉鐮佸け璐ヨ閲嶆柊鑾峰彇',
+							type: 'error',
+						})
+					}
+				})
+				// uni.request({
+				// 	url:"http://192.168.0.101:8098/api/User/getVierificationCode",
+				// 	success: (res) => {
+
+				// 	}
+				// })
+			},
+			login() {
+				if (this.pass == '') {
+					this.$t.message.toast('璇疯緭鍏ュ瘑鐮�')
+					return;
+				} else if (this.user == '') {
+					this.$t.message.toast('璇疯緭鍏ョ敤鎴峰悕')
+					return;
+				} else if (this.pass.length < 6) {
+					this.$t.message.toast('瀵嗙爜搴斿ぇ浜�6浣�')
+					return;
+				} else {
+					var userAcc = this.user;
+					var userPwd = this.pass;
+					var checkValues = this.checkbox;
+					var remAcc = this.checkbox.find(x => x == 1);
+					
+					if (remAcc) {
+						uni.setStorage({
+							key: "remAcc",
+							data: "1",
+						})
+					} else {
+						if (uni.getStorageSync('remAcc')) {
+							uni.removeStorageSync('remAcc');
+						}
+					}
+					var remPwd = this.checkbox.find(x => x == 2);
+					if (remPwd) {
+						uni.setStorage({
+							key: "remPwd",
+							data: "2",
+						})
+					} else {
+						if (uni.getStorageSync('remPwd')) {
+							uni.removeStorageSync('remPwd');
+						}
+					}
+					this.$t.message.loading('姝e湪鐧诲綍')
+					let userInfo = this.userInfo;
+					let userifno = {
+						UUID: this.email,
+						passWord: this.pass,
+						userName: this.user,
+						verificationCode: this.code
+					}
+					this.$u.post('/api/Sys_User/login', {
+						UUID: this.email,
+						passWord: this.pass,
+						userName: this.user,
+						verificationCode: this.code
+					}).then(res => {
+						// this.$u.toast(res.message);
+						this.$t.message.toast(res.message)
+						this.$t.message.closeLoading()
+						uni.setStorage({
+							key: 'jo_id_token',
+							data: res.data.token,
+						});
+						uni.setStorage({
+							key: 'jo_user',
+							data: res.data,
+						});
+						uni.setStorage({
+							key: 'jo_userImg',
+							data: res.data.img,
+						});
+						var acc = checkValues.find(x => x == 1);
+						if (acc) {
+							uni.setStorage({
+								key: 'acc',
+								data: userAcc,
+							});
+						} else {
+							if (uni.getStorage({
+									key: 'acc'
+								})) {
+								uni.removeStorage({
+									key: 'acc'
+								});
+							}
+						}
+						var pwd = checkValues.find(x => x == 2);
+						if (pwd) {
+							uni.setStorage({
+								key: 'pwd',
+								data: userPwd,
+							});
+						} else {
+							if (uni.getStorage({
+									key: 'pwd'
+								})) {
+								uni.removeStorage({
+									key: 'pwd'
+								});
+							}
+						}
+
+
+						setTimeout(() => {
+							this.$u.route({
+								type: 'reLaunch',
+								url: 'pages/index/index'
+							})
+							// this.$Router.replace({name:"tabbar"})
+						}, 200)
+					}).catch(res=>{
+						this.getVierificationCode();
+					});
+
+				}
+			},
+			codeInput: function(e) {
+				this.code = e.detail.value;
+			},
+			passInput: function(e) {
+				this.pass = e.detail.value;
+			},
+			userInput: function(e) {
+				this.user = e.detail.value;
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	// @import '@/static/css/templatePage/custom_nav_bar.scss';
+	/* 鎮诞 */
+	.rocket-sussuspension {
+		animation: suspension 3s ease-in-out infinite;
+	}
+
+	@keyframes suspension {
+
+		0%,
+		100% {
+			transform: translate(0, 0);
+		}
+
+		50% {
+			transform: translate(-0.8rem, 1rem);
+		}
+	}
+
+	.login {
+		position: relative;
+		height: 100%;
+		z-index: 1;
+
+		/* 鑳屾櫙鍥剧墖 start */
+		&__bg {
+			z-index: -1;
+			position: fixed;
+
+			&--top {
+				top: 0;
+				left: 0;
+				right: 0;
+				width: 100%;
+
+				.bg {
+					width: 750rpx;
+					will-change: transform;
+				}
+
+				.rocket {
+					margin: 50rpx 28%;
+					width: 400rpx;
+					will-change: transform;
+				}
+			}
+
+			&--bottom {
+				bottom: -10rpx;
+				left: 0;
+				right: 0;
+				width: 100%;
+				// height: 144px;
+				margin-bottom: env(safe-area-inset-bottom);
+
+				image {
+					width: 750rpx;
+					will-change: transform;
+				}
+			}
+		}
+
+		/* 鑳屾櫙鍥剧墖 end */
+
+		/* 鍐呭 start */
+		&__wrapper {
+			margin-top: 250rpx;
+			width: 100%;
+		}
+
+		/* 鍒囨崲 start */
+		&__mode {
+			position: relative;
+			margin: 0 auto;
+			width: 476rpx;
+			height: 77rpx;
+			background-color: #FFFFFF;
+			box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
+			border-radius: 39rpx;
+
+			&__item {
+				height: 77rpx;
+				width: 100%;
+				line-height: 77rpx;
+				text-align: center;
+				font-size: 31rpx;
+				color: #908f8f;
+				letter-spacing: 1em;
+				text-indent: 1em;
+				z-index: 2;
+				transition: all 0.4s;
+
+				&--active {
+					font-weight: bold;
+					color: #FFFFFF;
+				}
+			}
+
+			&__slider {
+				position: absolute;
+				height: inherit;
+				width: calc(476rpx);
+				border-radius: inherit;
+				box-shadow: 0rpx 18rpx 72rpx 18rpx rgba(0, 195, 255, 0.1);
+				z-index: 1;
+				transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
+			}
+		}
+
+		/* 鍒囨崲 end */
+
+		/* 鐧诲綍娉ㄥ唽淇℃伅 start */
+		&__info {
+			margin: 0 30rpx;
+			margin-top: 105rpx;
+			padding: 30rpx 51rpx;
+			padding-bottom: 0;
+			border-radius: 20rpx;
+			background-color: #ffff;
+			box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
+
+			&__item {
+
+				&__input {
+					margin-top: 59rpx;
+					width: 100%;
+					height: 77rpx;
+					border: 1rpx solid #E6E6E6;
+					border-radius: 39rpx;
+
+					&__left-icon {
+						width: 10%;
+						font-size: 44rpx;
+						margin-left: 20rpx;
+						color: #AAAAAA;
+					}
+
+					&__content {
+						width: 80%;
+						padding-left: 10rpx;
+
+						&--verify-code {
+							width: 56%;
+						}
+
+						input {
+							font-size: 24rpx;
+							// letter-spacing: 0.1em;
+						}
+					}
+
+					&__right-icon {
+						width: 10%;
+						font-size: 44rpx;
+						margin-right: 20rpx;
+						color: #AAAAAA;
+					}
+
+					&__right-verify-code {
+						width: 34%;
+						margin-right: 20rpx;
+					}
+				}
+
+				&__button {
+					margin-top: 75rpx;
+					margin-bottom: 39rpx;
+					width: 100%;
+					height: 77rpx;
+					text-align: center;
+					font-size: 31rpx;
+					font-weight: bold;
+					line-height: 77rpx;
+					letter-spacing: 1em;
+					text-indent: 1em;
+					border-radius: 39rpx;
+					box-shadow: 1rpx 10rpx 24rpx 0rpx rgba(60, 129, 254, 0.35);
+				}
+
+				&__tips {
+					margin: 30rpx 0;
+					color: #AAAAAA;
+				}
+			}
+		}
+
+		/* 鐧诲綍娉ㄥ唽淇℃伅 end */
+
+		/* 鐧诲綍鏂瑰紡鍒囨崲 start */
+		&__way {
+			margin: 0 auto;
+			margin-top: 110rpx;
+
+			&__item {
+				&--icon {
+					width: 77rpx;
+					height: 77rpx;
+					font-size: 50rpx;
+					border-radius: 100rpx;
+					margin-bottom: 18rpx;
+					position: relative;
+					z-index: 1;
+
+					&::after {
+						content: " ";
+						position: absolute;
+						z-index: -1;
+						width: 100%;
+						height: 100%;
+						left: 0;
+						bottom: 0;
+						border-radius: inherit;
+						opacity: 1;
+						transform: scale(1, 1);
+						background-size: 100% 100%;
+						background-image: url(https://tnuiimage.tnkjapp.com/cool_bg_image/icon_bg5.png);
+					}
+				}
+			}
+		}
+
+		/* 鐧诲綍鏂瑰紡鍒囨崲 end */
+		/* 鍐呭 end */
+
+	}
+
+	/deep/.input-placeholder {
+		font-size: 24rpx;
+		color: #E6E6E6;
+	}
+</style>
diff --git a/Code Management/PDA/pages/task/CancelTask.vue b/Code Management/PDA-FG/pages/task/CancelTask.vue
similarity index 100%
rename from Code Management/PDA/pages/task/CancelTask.vue
rename to Code Management/PDA-FG/pages/task/CancelTask.vue
diff --git a/Code Management/PDA/pages/task/CompletedTask.vue b/Code Management/PDA-FG/pages/task/CompletedTask.vue
similarity index 100%
rename from Code Management/PDA/pages/task/CompletedTask.vue
rename to Code Management/PDA-FG/pages/task/CompletedTask.vue
diff --git a/Code Management/PDA/static/center-selected.png b/Code Management/PDA-FG/static/center-selected.png
similarity index 100%
rename from Code Management/PDA/static/center-selected.png
rename to Code Management/PDA-FG/static/center-selected.png
Binary files differ
diff --git a/Code Management/PDA/static/center.png b/Code Management/PDA-FG/static/center.png
similarity index 100%
rename from Code Management/PDA/static/center.png
rename to Code Management/PDA-FG/static/center.png
Binary files differ
diff --git a/Code Management/PDA/static/fail.mp3 b/Code Management/PDA-FG/static/fail.mp3
similarity index 100%
rename from Code Management/PDA/static/fail.mp3
rename to Code Management/PDA-FG/static/fail.mp3
Binary files differ
diff --git a/Code Management/PDA/static/favicon.ico b/Code Management/PDA-FG/static/favicon.ico
similarity index 100%
rename from Code Management/PDA/static/favicon.ico
rename to Code Management/PDA-FG/static/favicon.ico
Binary files differ
diff --git a/Code Management/PDA/static/index-selected.png b/Code Management/PDA-FG/static/index-selected.png
similarity index 100%
rename from Code Management/PDA/static/index-selected.png
rename to Code Management/PDA-FG/static/index-selected.png
Binary files differ
diff --git a/Code Management/PDA/static/index.png b/Code Management/PDA-FG/static/index.png
similarity index 100%
rename from Code Management/PDA/static/index.png
rename to Code Management/PDA-FG/static/index.png
Binary files differ
diff --git a/Code Management/PDA/static/login_bottom_bg.jpg b/Code Management/PDA-FG/static/login_bottom_bg.jpg
similarity index 100%
rename from Code Management/PDA/static/login_bottom_bg.jpg
rename to Code Management/PDA-FG/static/login_bottom_bg.jpg
Binary files differ
diff --git a/Code Management/PDA/static/login_top2.jpg b/Code Management/PDA-FG/static/login_top2.jpg
similarity index 100%
rename from Code Management/PDA/static/login_top2.jpg
rename to Code Management/PDA-FG/static/login_top2.jpg
Binary files differ
diff --git a/Code Management/PDA/static/login_top3.png b/Code Management/PDA-FG/static/login_top3.png
similarity index 100%
rename from Code Management/PDA/static/login_top3.png
rename to Code Management/PDA-FG/static/login_top3.png
Binary files differ
diff --git a/Code Management/PDA/static/logo.png b/Code Management/PDA-FG/static/logo.png
similarity index 100%
rename from Code Management/PDA/static/logo.png
rename to Code Management/PDA-FG/static/logo.png
Binary files differ
diff --git a/Code Management/PDA/static/repeat.mp3 b/Code Management/PDA-FG/static/repeat.mp3
similarity index 100%
rename from Code Management/PDA/static/repeat.mp3
rename to Code Management/PDA-FG/static/repeat.mp3
Binary files differ
diff --git a/Code Management/PDA/static/success.mp3 b/Code Management/PDA-FG/static/success.mp3
similarity index 100%
rename from Code Management/PDA/static/success.mp3
rename to Code Management/PDA-FG/static/success.mp3
Binary files differ
diff --git a/Code Management/PDA/template.h5.html b/Code Management/PDA-FG/template.h5.html
similarity index 100%
rename from Code Management/PDA/template.h5.html
rename to Code Management/PDA-FG/template.h5.html
diff --git a/Code Management/PDA/tuniao-ui/README.md b/Code Management/PDA-FG/tuniao-ui/README.md
similarity index 100%
rename from Code Management/PDA/tuniao-ui/README.md
rename to Code Management/PDA-FG/tuniao-ui/README.md
diff --git a/Code Management/PDA/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-action-sheet/tn-action-sheet.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-avatar-group/tn-avatar-group.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-avatar/tn-avatar.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-avatar/tn-avatar.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-avatar/tn-avatar.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-avatar/tn-avatar.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-badge/tn-badge.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-badge/tn-badge.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-badge/tn-badge.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-badge/tn-badge.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-button/tn-button.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-button/tn-button.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-button/tn-button.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-button/tn-button.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-calendar/tn-calendar.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-calendar/tn-calendar.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-calendar/tn-calendar.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-calendar/tn-calendar.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-car-keyboard/tn-car-keyboard.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-cascade-selection/tn-cascade-selection.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-cascade-selection/tn-cascade-selection.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-cascade-selection/tn-cascade-selection.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-cascade-selection/tn-cascade-selection.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-checkbox-group/tn-checkbox-group.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-checkbox/tn-checkbox.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-checkbox/tn-checkbox.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-checkbox/tn-checkbox.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-checkbox/tn-checkbox.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-circle-progress/tn-circle-progress.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-collapse-item/tn-collapse-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-collapse/tn-collapse.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-collapse/tn-collapse.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-collapse/tn-collapse.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-collapse/tn-collapse.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-color-icon/tn-color-icon.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-color-icon/tn-color-icon.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-color-icon/tn-color-icon.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-color-icon/tn-color-icon.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-column-notice/tn-column-notice.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-column-notice/tn-column-notice.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-column-notice/tn-column-notice.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-column-notice/tn-column-notice.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-count-down/tn-count-down.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-count-down/tn-count-down.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-count-down/tn-count-down.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-count-down/tn-count-down.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-count-scroll/tn-count-scroll.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-count-to/tn-count-to.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-count-to/tn-count-to.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-count-to/tn-count-to.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-count-to/tn-count-to.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-cropper/index.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-cropper/index.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-cropper/index.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-cropper/index.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-cropper/tn-cropper.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-cropper/tn-cropper.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-cropper/tn-cropper.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-cropper/tn-cropper.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-custom-swiper-item/index.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/index.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-custom-swiper-item/index.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/index.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper-item/tn-custom-swiper-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-custom-swiper/tn-custom-swiper.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-drag/index.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-drag/index.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-drag/index.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-drag/index.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-drag/tn-drag.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-drag/tn-drag.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-drag/tn-drag.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-drag/tn-drag.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-empty/tn-empty.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-empty/tn-empty.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-empty/tn-empty.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-empty/tn-empty.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-fab/tn-fab.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-fab/tn-fab.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-fab/tn-fab.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-fab/tn-fab.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-form-item/tn-form-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-form-item/tn-form-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-form-item/tn-form-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-form-item/tn-form-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-form/tn-form.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-form/tn-form.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-form/tn-form.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-form/tn-form.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-goods-nav/tn-goods-nav.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-grid-item/tn-grid-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-grid-item/tn-grid-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-grid-item/tn-grid-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-grid-item/tn-grid-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-grid/tn-grid.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-grid/tn-grid.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-grid/tn-grid.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-grid/tn-grid.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-image-upload-drag/tn-image-upload-drag.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-image-upload/tn-image-upload.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-image-upload/tn-image-upload.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-image-upload/tn-image-upload.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-image-upload/tn-image-upload.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-index-anchor/tn-index-anchor.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-index-list/tn-index-list.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-index-list/tn-index-list.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-index-list/tn-index-list.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-index-list/tn-index-list.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-input/tn-input.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-input/tn-input.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-input/tn-input.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-input/tn-input.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-keyboard/tn-keyboard.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-keyboard/tn-keyboard.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-keyboard/tn-keyboard.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-keyboard/tn-keyboard.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-landscape/tn-landscape.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-landscape/tn-landscape.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-landscape/tn-landscape.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-landscape/tn-landscape.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-lazy-load/tn-lazy-load.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-line-progress/tn-line-progress.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-line-progress/tn-line-progress.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-line-progress/tn-line-progress.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-line-progress/tn-line-progress.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-list-cell/tn-list-cell.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-list-cell/tn-list-cell.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-list-cell/tn-list-cell.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-list-cell/tn-list-cell.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-list-view/tn-list-view.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-list-view/tn-list-view.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-list-view/tn-list-view.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-list-view/tn-list-view.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-load-more/tn-load-more.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-load-more/tn-load-more.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-load-more/tn-load-more.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-load-more/tn-load-more.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-loading/tn-loading.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-loading/tn-loading.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-loading/tn-loading.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-loading/tn-loading.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-modal/tn-modal.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-modal/tn-modal.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-modal/tn-modal.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-modal/tn-modal.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-nav-bar/tn-nav-bar.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-notice-bar/tn-notice-bar.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-number-box/tn-number-box.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-number-box/tn-number-box.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-number-box/tn-number-box.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-number-box/tn-number-box.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-number-keyboard/tn-number-keyboard.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-picker/tn-picker.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-picker/tn-picker.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-picker/tn-picker.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-picker/tn-picker.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-popup/tn-popup.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-popup/tn-popup.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-popup/tn-popup.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-popup/tn-popup.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-radio-group/tn-radio-group.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-radio-group/tn-radio-group.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-radio-group/tn-radio-group.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-radio-group/tn-radio-group.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-radio/tn-radio.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-radio/tn-radio.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-radio/tn-radio.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-radio/tn-radio.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-rate/tn-rate.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-rate/tn-rate.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-rate/tn-rate.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-rate/tn-rate.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-read-more/tn-read-more.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-read-more/tn-read-more.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-read-more/tn-read-more.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-read-more/tn-read-more.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-row-notice/tn-row-notice.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-row-notice/tn-row-notice.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-row-notice/tn-row-notice.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-row-notice/tn-row-notice.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-scroll-list/tn-scroll-list.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-scroll-view/tn-scroll-view.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-select/tn-select.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-select/tn-select.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-select/tn-select.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-select/tn-select.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-sign-board/tn-sign-board.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-sign-board/tn-sign-board.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-sign-board/tn-sign-board.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-sign-board/tn-sign-board.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-skeleton/tn-skeleton.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-skeleton/tn-skeleton.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-skeleton/tn-skeleton.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-skeleton/tn-skeleton.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-slider/tn-slider.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-slider/tn-slider.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-slider/tn-slider.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-slider/tn-slider.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-stack-swiper/index-h5.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index-h5.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-stack-swiper/index-h5.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index-h5.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-stack-swiper/index.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-stack-swiper/index.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/index.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-stack-swiper/tn-stack-swiper.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-steps/tn-steps.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-steps/tn-steps.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-steps/tn-steps.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-steps/tn-steps.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-sticky/tn-sticky.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-sticky/tn-sticky.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-sticky/tn-sticky.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-sticky/tn-sticky.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-subsection/tn-subsection.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-subsection/tn-subsection.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-subsection/tn-subsection.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-subsection/tn-subsection.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-swipe-action-item/index.wxs b/Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/index.wxs
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-swipe-action-item/index.wxs
rename to Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/index.wxs
diff --git a/Code Management/PDA/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action-item/tn-swipe-action-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-swipe-action/tn-swipe-action.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-swiper/tn-swiper.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-swiper/tn-swiper.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-swiper/tn-swiper.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-swiper/tn-swiper.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-switch/tn-switch.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-switch/tn-switch.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-switch/tn-switch.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-switch/tn-switch.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tabbar/tn-tabbar.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tabbar/tn-tabbar.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tabbar/tn-tabbar.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tabbar/tn-tabbar.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-table/tn-table.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-table/tn-table.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-table/tn-table.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-table/tn-table.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tabs-swiper/tn-tabs-swiper.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tabs/tn-tabs.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tabs/tn-tabs.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tabs/tn-tabs.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tabs/tn-tabs.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tag/tn-tag.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tag/tn-tag.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tag/tn-tag.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tag/tn-tag.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-td/tn-td.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-td/tn-td.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-td/tn-td.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-td/tn-td.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk b/Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk
rename to Code Management/PDA-FG/tuniao-ui/components/tn-time-line-item/tn-time-line-item.vue_bk
diff --git a/Code Management/PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk b/Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk
rename to Code Management/PDA-FG/tuniao-ui/components/tn-time-line/tn-time-line.vue_bk
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tips/tn-tips.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tips/tn-tips.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tips/tn-tips.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tips/tn-tips.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-toast/tn-toast.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-toast/tn-toast.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-toast/tn-toast.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-toast/tn-toast.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tr/tn-tr.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tr/tn-tr.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tr/tn-tr.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tr/tn-tr.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tree-node/tn-tree-node.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tree-node/tn-tree-node.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tree-node/tn-tree-node.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tree-node/tn-tree-node.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-tree-view/tn-tree-view.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-tree-view/tn-tree-view.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-tree-view/tn-tree-view.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-tree-view/tn-tree-view.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-verification-code-input/tn-verification-code-input.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-verification-code/tn-verification-code.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-verification-code/tn-verification-code.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-verification-code/tn-verification-code.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-verification-code/tn-verification-code.vue
diff --git a/Code Management/PDA/tuniao-ui/components/tn-waterfall/tn-waterfall.vue b/Code Management/PDA-FG/tuniao-ui/components/tn-waterfall/tn-waterfall.vue
similarity index 100%
rename from Code Management/PDA/tuniao-ui/components/tn-waterfall/tn-waterfall.vue
rename to Code Management/PDA-FG/tuniao-ui/components/tn-waterfall/tn-waterfall.vue
diff --git a/Code Management/PDA/tuniao-ui/iconfont.css b/Code Management/PDA-FG/tuniao-ui/iconfont.css
similarity index 100%
rename from Code Management/PDA/tuniao-ui/iconfont.css
rename to Code Management/PDA-FG/tuniao-ui/iconfont.css
diff --git a/Code Management/PDA/tuniao-ui/index.js b/Code Management/PDA-FG/tuniao-ui/index.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/index.js
rename to Code Management/PDA-FG/tuniao-ui/index.js
diff --git a/Code Management/PDA/tuniao-ui/index.scss b/Code Management/PDA-FG/tuniao-ui/index.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/index.scss
rename to Code Management/PDA-FG/tuniao-ui/index.scss
diff --git a/Code Management/PDA/tuniao-ui/libs/config/color.js b/Code Management/PDA-FG/tuniao-ui/libs/config/color.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/config/color.js
rename to Code Management/PDA-FG/tuniao-ui/libs/config/color.js
diff --git a/Code Management/PDA/tuniao-ui/libs/config/zIndex.js b/Code Management/PDA-FG/tuniao-ui/libs/config/zIndex.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/config/zIndex.js
rename to Code Management/PDA-FG/tuniao-ui/libs/config/zIndex.js
diff --git a/Code Management/PDA/tuniao-ui/libs/css/color.scss b/Code Management/PDA-FG/tuniao-ui/libs/css/color.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/css/color.scss
rename to Code Management/PDA-FG/tuniao-ui/libs/css/color.scss
diff --git a/Code Management/PDA/tuniao-ui/libs/css/main.scss b/Code Management/PDA-FG/tuniao-ui/libs/css/main.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/css/main.scss
rename to Code Management/PDA-FG/tuniao-ui/libs/css/main.scss
diff --git a/Code Management/PDA/tuniao-ui/libs/css/style.h5.scss b/Code Management/PDA-FG/tuniao-ui/libs/css/style.h5.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/css/style.h5.scss
rename to Code Management/PDA-FG/tuniao-ui/libs/css/style.h5.scss
diff --git a/Code Management/PDA/tuniao-ui/libs/css/style.mp.scss b/Code Management/PDA-FG/tuniao-ui/libs/css/style.mp.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/css/style.mp.scss
rename to Code Management/PDA-FG/tuniao-ui/libs/css/style.mp.scss
diff --git a/Code Management/PDA/tuniao-ui/libs/function/$parent.js b/Code Management/PDA-FG/tuniao-ui/libs/function/$parent.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/$parent.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/$parent.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/array.js b/Code Management/PDA-FG/tuniao-ui/libs/function/array.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/array.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/array.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/color.js b/Code Management/PDA-FG/tuniao-ui/libs/function/color.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/color.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/color.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/colorUtils.js b/Code Management/PDA-FG/tuniao-ui/libs/function/colorUtils.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/colorUtils.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/colorUtils.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/deepClone.js b/Code Management/PDA-FG/tuniao-ui/libs/function/deepClone.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/deepClone.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/deepClone.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/message.js b/Code Management/PDA-FG/tuniao-ui/libs/function/message.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/message.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/message.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/messageUtils.js b/Code Management/PDA-FG/tuniao-ui/libs/function/messageUtils.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/messageUtils.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/messageUtils.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/number.js b/Code Management/PDA-FG/tuniao-ui/libs/function/number.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/number.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/number.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/string.js b/Code Management/PDA-FG/tuniao-ui/libs/function/string.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/string.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/string.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/test.js b/Code Management/PDA-FG/tuniao-ui/libs/function/test.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/test.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/test.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/updateCustomBarInfo.js b/Code Management/PDA-FG/tuniao-ui/libs/function/updateCustomBarInfo.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/updateCustomBarInfo.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/updateCustomBarInfo.js
diff --git a/Code Management/PDA/tuniao-ui/libs/function/uuid.js b/Code Management/PDA-FG/tuniao-ui/libs/function/uuid.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/function/uuid.js
rename to Code Management/PDA-FG/tuniao-ui/libs/function/uuid.js
diff --git a/Code Management/PDA/tuniao-ui/libs/mixin/components_color.js b/Code Management/PDA-FG/tuniao-ui/libs/mixin/components_color.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/mixin/components_color.js
rename to Code Management/PDA-FG/tuniao-ui/libs/mixin/components_color.js
diff --git a/Code Management/PDA/tuniao-ui/libs/mixin/mixin.js b/Code Management/PDA-FG/tuniao-ui/libs/mixin/mixin.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/mixin/mixin.js
rename to Code Management/PDA-FG/tuniao-ui/libs/mixin/mixin.js
diff --git a/Code Management/PDA/tuniao-ui/libs/mixin/mpShare.js b/Code Management/PDA-FG/tuniao-ui/libs/mixin/mpShare.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/mixin/mpShare.js
rename to Code Management/PDA-FG/tuniao-ui/libs/mixin/mpShare.js
diff --git a/Code Management/PDA/tuniao-ui/libs/mixin/touch.js b/Code Management/PDA-FG/tuniao-ui/libs/mixin/touch.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/mixin/touch.js
rename to Code Management/PDA-FG/tuniao-ui/libs/mixin/touch.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/area.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/area.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/area.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/area.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/async-validator.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/async-validator.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/async-validator.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/async-validator.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/calendar.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/calendar.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/calendar.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/calendar.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/city.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/city.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/city.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/city.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/emitter.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/emitter.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/emitter.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/emitter.js
diff --git a/Code Management/PDA/tuniao-ui/libs/utils/province.js b/Code Management/PDA-FG/tuniao-ui/libs/utils/province.js
similarity index 100%
rename from Code Management/PDA/tuniao-ui/libs/utils/province.js
rename to Code Management/PDA-FG/tuniao-ui/libs/utils/province.js
diff --git a/Code Management/PDA/tuniao-ui/theme.scss b/Code Management/PDA-FG/tuniao-ui/theme.scss
similarity index 100%
rename from Code Management/PDA/tuniao-ui/theme.scss
rename to Code Management/PDA-FG/tuniao-ui/theme.scss
diff --git a/Code Management/PDA/uni.promisify.adaptor.js b/Code Management/PDA-FG/uni.promisify.adaptor.js
similarity index 100%
rename from Code Management/PDA/uni.promisify.adaptor.js
rename to Code Management/PDA-FG/uni.promisify.adaptor.js
diff --git a/Code Management/PDA/uni.scss b/Code Management/PDA-FG/uni.scss
similarity index 100%
rename from Code Management/PDA/uni.scss
rename to Code Management/PDA-FG/uni.scss
diff --git a/Code Management/PDA/uni_modules/uni-badge/changelog.md b/Code Management/PDA-FG/uni_modules/uni-badge/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-badge/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-badge/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-badge/components/uni-badge/uni-badge.vue b/Code Management/PDA-FG/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
rename to Code Management/PDA-FG/uni_modules/uni-badge/components/uni-badge/uni-badge.vue
diff --git a/Code Management/PDA/uni_modules/uni-badge/package.json b/Code Management/PDA-FG/uni_modules/uni-badge/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-badge/package.json
rename to Code Management/PDA-FG/uni_modules/uni-badge/package.json
diff --git a/Code Management/PDA/uni_modules/uni-badge/readme.md b/Code Management/PDA-FG/uni_modules/uni-badge/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-badge/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-badge/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-card/changelog.md b/Code Management/PDA-FG/uni_modules/uni-card/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-card/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-card/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-card/components/uni-card/uni-card.vue b/Code Management/PDA-FG/uni_modules/uni-card/components/uni-card/uni-card.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-card/components/uni-card/uni-card.vue
rename to Code Management/PDA-FG/uni_modules/uni-card/components/uni-card/uni-card.vue
diff --git a/Code Management/PDA/uni_modules/uni-card/package.json b/Code Management/PDA-FG/uni_modules/uni-card/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-card/package.json
rename to Code Management/PDA-FG/uni_modules/uni-card/package.json
diff --git a/Code Management/PDA/uni_modules/uni-card/readme.md b/Code Management/PDA-FG/uni_modules/uni-card/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-card/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-card/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-combox/changelog.md b/Code Management/PDA-FG/uni_modules/uni-combox/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-combox/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-combox/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-combox/components/uni-combox/uni-combox.vue b/Code Management/PDA-FG/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
rename to Code Management/PDA-FG/uni_modules/uni-combox/components/uni-combox/uni-combox.vue
diff --git a/Code Management/PDA/uni_modules/uni-combox/package.json b/Code Management/PDA-FG/uni_modules/uni-combox/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-combox/package.json
rename to Code Management/PDA-FG/uni_modules/uni-combox/package.json
diff --git a/Code Management/PDA/uni_modules/uni-combox/readme.md b/Code Management/PDA-FG/uni_modules/uni-combox/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-combox/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-combox/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-data-checkbox/changelog.md b/Code Management/PDA-FG/uni_modules/uni-data-checkbox/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-checkbox/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-data-checkbox/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue b/Code Management/PDA-FG/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
rename to Code Management/PDA-FG/uni_modules/uni-data-checkbox/components/uni-data-checkbox/uni-data-checkbox.vue
diff --git a/Code Management/PDA/uni_modules/uni-data-checkbox/package.json b/Code Management/PDA-FG/uni_modules/uni-data-checkbox/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-checkbox/package.json
rename to Code Management/PDA-FG/uni_modules/uni-data-checkbox/package.json
diff --git a/Code Management/PDA/uni_modules/uni-data-checkbox/readme.md b/Code Management/PDA-FG/uni_modules/uni-data-checkbox/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-checkbox/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-data-checkbox/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-data-select/changelog.md b/Code Management/PDA-FG/uni_modules/uni-data-select/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-select/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-data-select/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue b/Code Management/PDA-FG/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
rename to Code Management/PDA-FG/uni_modules/uni-data-select/components/uni-data-select/uni-data-select.vue
diff --git a/Code Management/PDA/uni_modules/uni-data-select/package.json b/Code Management/PDA-FG/uni_modules/uni-data-select/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-select/package.json
rename to Code Management/PDA-FG/uni_modules/uni-data-select/package.json
diff --git a/Code Management/PDA/uni_modules/uni-data-select/readme.md b/Code Management/PDA-FG/uni_modules/uni-data-select/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-data-select/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-data-select/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-easyinput/changelog.md b/Code Management/PDA-FG/uni_modules/uni-easyinput/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-easyinput/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-easyinput/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-easyinput/components/uni-easyinput/common.js b/Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/common.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-easyinput/components/uni-easyinput/common.js
rename to Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/common.js
diff --git a/Code Management/PDA/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue b/Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
rename to Code Management/PDA-FG/uni_modules/uni-easyinput/components/uni-easyinput/uni-easyinput.vue
diff --git a/Code Management/PDA/uni_modules/uni-easyinput/package.json b/Code Management/PDA-FG/uni_modules/uni-easyinput/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-easyinput/package.json
rename to Code Management/PDA-FG/uni_modules/uni-easyinput/package.json
diff --git a/Code Management/PDA/uni_modules/uni-easyinput/readme.md b/Code Management/PDA-FG/uni_modules/uni-easyinput/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-easyinput/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-easyinput/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-forms/changelog.md b/Code Management/PDA-FG/uni_modules/uni-forms/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-forms/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue b/Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
rename to Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms-item/uni-forms-item.vue
diff --git a/Code Management/PDA/uni_modules/uni-forms/components/uni-forms/uni-forms.vue b/Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
rename to Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/uni-forms.vue
diff --git a/Code Management/PDA/uni_modules/uni-forms/components/uni-forms/utils.js b/Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/utils.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/components/uni-forms/utils.js
rename to Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/utils.js
diff --git a/Code Management/PDA/uni_modules/uni-forms/components/uni-forms/validate.js b/Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/validate.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/components/uni-forms/validate.js
rename to Code Management/PDA-FG/uni_modules/uni-forms/components/uni-forms/validate.js
diff --git a/Code Management/PDA/uni_modules/uni-forms/package.json b/Code Management/PDA-FG/uni_modules/uni-forms/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/package.json
rename to Code Management/PDA-FG/uni_modules/uni-forms/package.json
diff --git a/Code Management/PDA/uni_modules/uni-forms/readme.md b/Code Management/PDA-FG/uni_modules/uni-forms/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-forms/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-forms/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-group/changelog.md b/Code Management/PDA-FG/uni_modules/uni-group/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-group/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-group/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-group/components/uni-group/uni-group.vue b/Code Management/PDA-FG/uni_modules/uni-group/components/uni-group/uni-group.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-group/components/uni-group/uni-group.vue
rename to Code Management/PDA-FG/uni_modules/uni-group/components/uni-group/uni-group.vue
diff --git a/Code Management/PDA/uni_modules/uni-group/package.json b/Code Management/PDA-FG/uni_modules/uni-group/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-group/package.json
rename to Code Management/PDA-FG/uni_modules/uni-group/package.json
diff --git a/Code Management/PDA/uni_modules/uni-group/readme.md b/Code Management/PDA-FG/uni_modules/uni-group/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-group/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-group/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-icons/changelog.md b/Code Management/PDA-FG/uni_modules/uni-icons/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-icons/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-icons/components/uni-icons/icons.js b/Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/icons.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/components/uni-icons/icons.js
rename to Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/icons.js
diff --git a/Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uni-icons.vue b/Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
rename to Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni-icons.vue
diff --git a/Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uni.ttf b/Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni.ttf
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uni.ttf
rename to Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uni.ttf
Binary files differ
diff --git a/Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uniicons.css b/Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.css
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uniicons.css
rename to Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.css
diff --git a/Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uniicons.ttf b/Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
rename to Code Management/PDA-FG/uni_modules/uni-icons/components/uni-icons/uniicons.ttf
Binary files differ
diff --git a/Code Management/PDA/uni_modules/uni-icons/package.json b/Code Management/PDA-FG/uni_modules/uni-icons/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/package.json
rename to Code Management/PDA-FG/uni_modules/uni-icons/package.json
diff --git a/Code Management/PDA/uni_modules/uni-icons/readme.md b/Code Management/PDA-FG/uni_modules/uni-icons/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-icons/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-icons/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-id/changelog.md b/Code Management/PDA-FG/uni_modules/uni-id/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-id/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-id/package.json b/Code Management/PDA-FG/uni_modules/uni-id/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/package.json
rename to Code Management/PDA-FG/uni_modules/uni-id/package.json
diff --git a/Code Management/PDA/uni_modules/uni-id/readme.md b/Code Management/PDA-FG/uni_modules/uni-id/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-id/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md b/Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
rename to Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/LICENSE.md
diff --git a/Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js b/Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
rename to Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/index.js
diff --git a/Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json b/Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
rename to Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package-lock.json
diff --git a/Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json b/Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json
rename to Code Management/PDA-FG/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/package.json
diff --git a/Code Management/PDA/uni_modules/uni-list/changelog.md b/Code Management/PDA-FG/uni_modules/uni-list/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-list/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-ad/uni-list-ad.vue
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.scss
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-chat/uni-list-chat.vue
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list-item/uni-list-item.vue
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-list.vue b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-list.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-list.vue
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-list.vue
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-refresh.vue b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-refresh.vue
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.vue
diff --git a/Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-refresh.wxs b/Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
rename to Code Management/PDA-FG/uni_modules/uni-list/components/uni-list/uni-refresh.wxs
diff --git a/Code Management/PDA/uni_modules/uni-list/package.json b/Code Management/PDA-FG/uni_modules/uni-list/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/package.json
rename to Code Management/PDA-FG/uni_modules/uni-list/package.json
diff --git a/Code Management/PDA/uni_modules/uni-list/readme.md b/Code Management/PDA-FG/uni_modules/uni-list/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-list/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-list/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-load-more/changelog.md b/Code Management/PDA-FG/uni_modules/uni-load-more/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-load-more/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json b/Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
rename to Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/en.json
diff --git a/Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js b/Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
rename to Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/index.js
diff --git a/Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json b/Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
rename to Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hans.json
diff --git a/Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json b/Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
rename to Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/i18n/zh-Hant.json
diff --git a/Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue b/Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
rename to Code Management/PDA-FG/uni_modules/uni-load-more/components/uni-load-more/uni-load-more.vue
diff --git a/Code Management/PDA/uni_modules/uni-load-more/package.json b/Code Management/PDA-FG/uni_modules/uni-load-more/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/package.json
rename to Code Management/PDA-FG/uni_modules/uni-load-more/package.json
diff --git a/Code Management/PDA/uni_modules/uni-load-more/readme.md b/Code Management/PDA-FG/uni_modules/uni-load-more/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-load-more/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-load-more/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-nav-bar/changelog.md b/Code Management/PDA-FG/uni_modules/uni-nav-bar/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-nav-bar/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-nav-bar/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue b/Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
rename to Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-nav-bar.vue
diff --git a/Code Management/PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue b/Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
rename to Code Management/PDA-FG/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar.vue
diff --git a/Code Management/PDA/uni_modules/uni-nav-bar/package.json b/Code Management/PDA-FG/uni_modules/uni-nav-bar/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-nav-bar/package.json
rename to Code Management/PDA-FG/uni_modules/uni-nav-bar/package.json
diff --git a/Code Management/PDA/uni_modules/uni-nav-bar/readme.md b/Code Management/PDA-FG/uni_modules/uni-nav-bar/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-nav-bar/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-nav-bar/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-popup/changelog.md b/Code Management/PDA-FG/uni_modules/uni-popup/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-popup/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/keypress.js
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-dialog/uni-popup-dialog.vue
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-message/uni-popup-message.vue
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup-share/uni-popup-share.vue
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/en.json b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/en.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/en.json
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/en.json
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/index.js b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/index.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/index.js
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/index.js
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hans.json
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/i18n/zh-Hant.json
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/keypress.js b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/keypress.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/keypress.js
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/keypress.js
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/popup.js b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/popup.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/popup.js
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/popup.js
diff --git a/Code Management/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue b/Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
rename to Code Management/PDA-FG/uni_modules/uni-popup/components/uni-popup/uni-popup.vue
diff --git a/Code Management/PDA/uni_modules/uni-popup/package.json b/Code Management/PDA-FG/uni_modules/uni-popup/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/package.json
rename to Code Management/PDA-FG/uni_modules/uni-popup/package.json
diff --git a/Code Management/PDA/uni_modules/uni-popup/readme.md b/Code Management/PDA-FG/uni_modules/uni-popup/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-popup/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-popup/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-scss/changelog.md b/Code Management/PDA-FG/uni_modules/uni-scss/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-scss/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-scss/index.scss b/Code Management/PDA-FG/uni_modules/uni-scss/index.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/index.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/index.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/package.json b/Code Management/PDA-FG/uni_modules/uni-scss/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/package.json
rename to Code Management/PDA-FG/uni_modules/uni-scss/package.json
diff --git a/Code Management/PDA/uni_modules/uni-scss/readme.md b/Code Management/PDA-FG/uni_modules/uni-scss/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-scss/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/index.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/index.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/index.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/index.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_border.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_border.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_border.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_border.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_color.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_color.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_color.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_color.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_radius.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_radius.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_radius.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_radius.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_space.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_space.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_space.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_space.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_styles.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_styles.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_styles.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_styles.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_text.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_text.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_text.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_text.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/setting/_variables.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_variables.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/setting/_variables.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/setting/_variables.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/styles/tools/functions.scss b/Code Management/PDA-FG/uni_modules/uni-scss/styles/tools/functions.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/styles/tools/functions.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/styles/tools/functions.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/theme.scss b/Code Management/PDA-FG/uni_modules/uni-scss/theme.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/theme.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/theme.scss
diff --git a/Code Management/PDA/uni_modules/uni-scss/variables.scss b/Code Management/PDA-FG/uni_modules/uni-scss/variables.scss
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-scss/variables.scss
rename to Code Management/PDA-FG/uni_modules/uni-scss/variables.scss
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/changelog.md b/Code Management/PDA-FG/uni_modules/uni-search-bar/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json b/Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/en.json
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js b/Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/index.js
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json b/Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hans.json
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json b/Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/i18n/zh-Hant.json
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue b/Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/components/uni-search-bar/uni-search-bar.vue
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/package.json b/Code Management/PDA-FG/uni_modules/uni-search-bar/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/package.json
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/package.json
diff --git a/Code Management/PDA/uni_modules/uni-search-bar/readme.md b/Code Management/PDA-FG/uni_modules/uni-search-bar/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-search-bar/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-search-bar/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-segmented-control/changelog.md b/Code Management/PDA-FG/uni_modules/uni-segmented-control/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-segmented-control/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-segmented-control/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue b/Code Management/PDA-FG/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
rename to Code Management/PDA-FG/uni_modules/uni-segmented-control/components/uni-segmented-control/uni-segmented-control.vue
diff --git a/Code Management/PDA/uni_modules/uni-segmented-control/package.json b/Code Management/PDA-FG/uni_modules/uni-segmented-control/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-segmented-control/package.json
rename to Code Management/PDA-FG/uni_modules/uni-segmented-control/package.json
diff --git a/Code Management/PDA/uni_modules/uni-segmented-control/readme.md b/Code Management/PDA-FG/uni_modules/uni-segmented-control/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-segmented-control/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-segmented-control/readme.md
diff --git a/Code Management/PDA/uni_modules/uni-transition/changelog.md b/Code Management/PDA-FG/uni_modules/uni-transition/changelog.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-transition/changelog.md
rename to Code Management/PDA-FG/uni_modules/uni-transition/changelog.md
diff --git a/Code Management/PDA/uni_modules/uni-transition/components/uni-transition/createAnimation.js b/Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/createAnimation.js
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-transition/components/uni-transition/createAnimation.js
rename to Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/createAnimation.js
diff --git a/Code Management/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue b/Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
rename to Code Management/PDA-FG/uni_modules/uni-transition/components/uni-transition/uni-transition.vue
diff --git a/Code Management/PDA/uni_modules/uni-transition/package.json b/Code Management/PDA-FG/uni_modules/uni-transition/package.json
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-transition/package.json
rename to Code Management/PDA-FG/uni_modules/uni-transition/package.json
diff --git a/Code Management/PDA/uni_modules/uni-transition/readme.md b/Code Management/PDA-FG/uni_modules/uni-transition/readme.md
similarity index 100%
rename from Code Management/PDA/uni_modules/uni-transition/readme.md
rename to Code Management/PDA-FG/uni_modules/uni-transition/readme.md
diff --git a/Code Management/PDA/unpackage/cache/apk/apkurl b/Code Management/PDA-FG/unpackage/cache/apk/apkurl
similarity index 100%
rename from Code Management/PDA/unpackage/cache/apk/apkurl
rename to Code Management/PDA-FG/unpackage/cache/apk/apkurl
diff --git a/Code Management/PDA/unpackage/cache/apk/cmManifestCache.json b/Code Management/PDA-FG/unpackage/cache/apk/cmManifestCache.json
similarity index 100%
rename from Code Management/PDA/unpackage/cache/apk/cmManifestCache.json
rename to Code Management/PDA-FG/unpackage/cache/apk/cmManifestCache.json
diff --git a/Code Management/PDA/unpackage/cache/certdata b/Code Management/PDA-FG/unpackage/cache/certdata
similarity index 100%
rename from Code Management/PDA/unpackage/cache/certdata
rename to Code Management/PDA-FG/unpackage/cache/certdata
diff --git a/Code Management/PDA/unpackage/cache/cloudcertificate/certini b/Code Management/PDA-FG/unpackage/cache/cloudcertificate/certini
similarity index 100%
rename from Code Management/PDA/unpackage/cache/cloudcertificate/certini
rename to Code Management/PDA-FG/unpackage/cache/cloudcertificate/certini
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-hdpi.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-hdpi.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-hdpi.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-hdpi.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xhdpi.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xhdpi.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xhdpi.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xhdpi.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxhdpi.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxhdpi.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxhdpi.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxhdpi.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxxhdpi.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxxhdpi.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxxhdpi.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/.manifest/icon-android-xxxhdpi.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappchooselocation.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappchooselocation.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappchooselocation.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappchooselocation.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniapperror.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapperror.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniapperror.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapperror.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappes6.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappes6.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappes6.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappes6.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappopenlocation.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappopenlocation.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappopenlocation.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappopenlocation.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniapppicker.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapppicker.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniapppicker.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniapppicker.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappquill.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquill.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappquill.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquill.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappquillimageresize.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquillimageresize.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappquillimageresize.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappquillimageresize.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappscan.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappscan.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappscan.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappscan.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappsuccess.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappsuccess.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappsuccess.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappsuccess.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappview.html b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappview.html
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/__uniappview.html
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/__uniappview.html
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-config-service.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config-service.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-config-service.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config-service.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-config.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-config.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-config.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-service.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-service.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-service.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-service.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-view.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-view.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/app-view.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/app-view.js
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/assets/uniicons.b6d3756e.ttf b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/assets/uniicons.b6d3756e.ttf
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/assets/uniicons.b6d3756e.ttf
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/assets/uniicons.b6d3756e.ttf
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/manifest.json b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/manifest.json
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/manifest.json
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/manifest.json
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/center-selected.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center-selected.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/center-selected.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center-selected.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/center.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/center.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/center.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/fail.mp3 b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/fail.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/fail.mp3
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/fail.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/favicon.ico b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/favicon.ico
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/favicon.ico
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/favicon.ico
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/index-selected.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index-selected.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/index-selected.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index-selected.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/index.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/index.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/index.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_bottom_bg.jpg b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_bottom_bg.jpg
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_bottom_bg.jpg
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_bottom_bg.jpg
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_top2.jpg b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top2.jpg
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_top2.jpg
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top2.jpg
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_top3.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top3.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/login_top3.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/login_top3.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/logo.png b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/logo.png
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/logo.png
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/logo.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/repeat.mp3 b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/repeat.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/repeat.mp3
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/repeat.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/success.mp3 b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/success.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/static/success.mp3
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/static/success.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/view.css b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.css
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/view.css
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.css
diff --git a/Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/view.umd.min.js b/Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.umd.min.js
similarity index 100%
rename from Code Management/PDA/unpackage/cache/wgt/__UNI__7039611/view.umd.min.js
rename to Code Management/PDA-FG/unpackage/cache/wgt/__UNI__7039611/view.umd.min.js
diff --git a/Code Management/PDA/unpackage/res/icons/1024x1024.png b/Code Management/PDA-FG/unpackage/res/icons/1024x1024.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/1024x1024.png
rename to Code Management/PDA-FG/unpackage/res/icons/1024x1024.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/120x120.png b/Code Management/PDA-FG/unpackage/res/icons/120x120.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/120x120.png
rename to Code Management/PDA-FG/unpackage/res/icons/120x120.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/144x144.png b/Code Management/PDA-FG/unpackage/res/icons/144x144.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/144x144.png
rename to Code Management/PDA-FG/unpackage/res/icons/144x144.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/152x152.png b/Code Management/PDA-FG/unpackage/res/icons/152x152.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/152x152.png
rename to Code Management/PDA-FG/unpackage/res/icons/152x152.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/167x167.png b/Code Management/PDA-FG/unpackage/res/icons/167x167.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/167x167.png
rename to Code Management/PDA-FG/unpackage/res/icons/167x167.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/180x180.png b/Code Management/PDA-FG/unpackage/res/icons/180x180.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/180x180.png
rename to Code Management/PDA-FG/unpackage/res/icons/180x180.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/192x192.png b/Code Management/PDA-FG/unpackage/res/icons/192x192.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/192x192.png
rename to Code Management/PDA-FG/unpackage/res/icons/192x192.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/20x20.png b/Code Management/PDA-FG/unpackage/res/icons/20x20.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/20x20.png
rename to Code Management/PDA-FG/unpackage/res/icons/20x20.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/29x29.png b/Code Management/PDA-FG/unpackage/res/icons/29x29.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/29x29.png
rename to Code Management/PDA-FG/unpackage/res/icons/29x29.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/40x40.png b/Code Management/PDA-FG/unpackage/res/icons/40x40.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/40x40.png
rename to Code Management/PDA-FG/unpackage/res/icons/40x40.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/58x58.png b/Code Management/PDA-FG/unpackage/res/icons/58x58.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/58x58.png
rename to Code Management/PDA-FG/unpackage/res/icons/58x58.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/60x60.png b/Code Management/PDA-FG/unpackage/res/icons/60x60.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/60x60.png
rename to Code Management/PDA-FG/unpackage/res/icons/60x60.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/72x72.png b/Code Management/PDA-FG/unpackage/res/icons/72x72.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/72x72.png
rename to Code Management/PDA-FG/unpackage/res/icons/72x72.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/76x76.png b/Code Management/PDA-FG/unpackage/res/icons/76x76.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/76x76.png
rename to Code Management/PDA-FG/unpackage/res/icons/76x76.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/80x80.png b/Code Management/PDA-FG/unpackage/res/icons/80x80.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/80x80.png
rename to Code Management/PDA-FG/unpackage/res/icons/80x80.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/87x87.png b/Code Management/PDA-FG/unpackage/res/icons/87x87.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/87x87.png
rename to Code Management/PDA-FG/unpackage/res/icons/87x87.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/res/icons/96x96.png b/Code Management/PDA-FG/unpackage/res/icons/96x96.png
similarity index 100%
rename from Code Management/PDA/unpackage/res/icons/96x96.png
rename to Code Management/PDA-FG/unpackage/res/icons/96x96.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappchooselocation.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappchooselocation.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappchooselocation.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappchooselocation.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniapperror.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapperror.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniapperror.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapperror.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappes6.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappes6.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappes6.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappes6.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappopenlocation.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappopenlocation.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappopenlocation.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappopenlocation.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniapppicker.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapppicker.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniapppicker.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniapppicker.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappquill.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquill.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappquill.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquill.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappquillimageresize.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquillimageresize.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappquillimageresize.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappquillimageresize.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappscan.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappscan.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappscan.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappscan.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappsuccess.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappsuccess.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappsuccess.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappsuccess.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappview.html b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappview.html
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/__uniappview.html
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/__uniappview.html
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-config-service.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config-service.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-config-service.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config-service.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-config.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-config.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-config.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-service.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-service.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-service.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-service.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-view.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-view.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/app-view.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/app-view.js
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/assets/uniicons.b6d3756e.ttf b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/assets/uniicons.b6d3756e.ttf
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/assets/uniicons.b6d3756e.ttf
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/assets/uniicons.b6d3756e.ttf
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/manifest.json b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/manifest.json
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/manifest.json
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/manifest.json
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/center-selected.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center-selected.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/center-selected.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center-selected.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/center.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/center.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/center.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/fail.mp3 b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/fail.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/fail.mp3
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/fail.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/favicon.ico b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/favicon.ico
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/favicon.ico
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/favicon.ico
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/index-selected.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index-selected.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/index-selected.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index-selected.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/index.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/index.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/index.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_bottom_bg.jpg b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_bottom_bg.jpg
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_bottom_bg.jpg
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_bottom_bg.jpg
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_top2.jpg b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top2.jpg
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_top2.jpg
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top2.jpg
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_top3.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top3.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/login_top3.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/login_top3.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/logo.png b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/logo.png
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/logo.png
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/logo.png
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/repeat.mp3 b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/repeat.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/repeat.mp3
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/repeat.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/success.mp3 b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/success.mp3
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/static/success.mp3
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/static/success.mp3
Binary files differ
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/view.css b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.css
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/view.css
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.css
diff --git a/Code Management/PDA/unpackage/resources/__UNI__7039611/www/view.umd.min.js b/Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.umd.min.js
similarity index 100%
rename from Code Management/PDA/unpackage/resources/__UNI__7039611/www/view.umd.min.js
rename to Code Management/PDA-FG/unpackage/resources/__UNI__7039611/www/view.umd.min.js
diff --git a/Code Management/PDA/uview-ui/LICENSE b/Code Management/PDA-FG/uview-ui/LICENSE
similarity index 100%
rename from Code Management/PDA/uview-ui/LICENSE
rename to Code Management/PDA-FG/uview-ui/LICENSE
diff --git a/Code Management/PDA/uview-ui/README.md b/Code Management/PDA-FG/uview-ui/README.md
similarity index 100%
rename from Code Management/PDA/uview-ui/README.md
rename to Code Management/PDA-FG/uview-ui/README.md
diff --git a/Code Management/PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue b/Code Management/PDA-FG/uview-ui/components/u-action-sheet/u-action-sheet.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-action-sheet/u-action-sheet.vue
rename to Code Management/PDA-FG/uview-ui/components/u-action-sheet/u-action-sheet.vue
diff --git a/Code Management/PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue b/Code Management/PDA-FG/uview-ui/components/u-alert-tips/u-alert-tips.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-alert-tips/u-alert-tips.vue
rename to Code Management/PDA-FG/uview-ui/components/u-alert-tips/u-alert-tips.vue
diff --git a/Code Management/PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue b/Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
rename to Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/u-avatar-cropper.vue
diff --git a/Code Management/PDA/uview-ui/components/u-avatar-cropper/weCropper.js b/Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/weCropper.js
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-avatar-cropper/weCropper.js
rename to Code Management/PDA-FG/uview-ui/components/u-avatar-cropper/weCropper.js
diff --git a/Code Management/PDA/uview-ui/components/u-avatar/u-avatar.vue b/Code Management/PDA-FG/uview-ui/components/u-avatar/u-avatar.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-avatar/u-avatar.vue
rename to Code Management/PDA-FG/uview-ui/components/u-avatar/u-avatar.vue
diff --git a/Code Management/PDA/uview-ui/components/u-back-top/u-back-top.vue b/Code Management/PDA-FG/uview-ui/components/u-back-top/u-back-top.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-back-top/u-back-top.vue
rename to Code Management/PDA-FG/uview-ui/components/u-back-top/u-back-top.vue
diff --git a/Code Management/PDA/uview-ui/components/u-badge/u-badge.vue b/Code Management/PDA-FG/uview-ui/components/u-badge/u-badge.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-badge/u-badge.vue
rename to Code Management/PDA-FG/uview-ui/components/u-badge/u-badge.vue
diff --git a/Code Management/PDA/uview-ui/components/u-button/u-button.vue b/Code Management/PDA-FG/uview-ui/components/u-button/u-button.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-button/u-button.vue
rename to Code Management/PDA-FG/uview-ui/components/u-button/u-button.vue
diff --git a/Code Management/PDA/uview-ui/components/u-calendar/u-calendar.vue b/Code Management/PDA-FG/uview-ui/components/u-calendar/u-calendar.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-calendar/u-calendar.vue
rename to Code Management/PDA-FG/uview-ui/components/u-calendar/u-calendar.vue
diff --git a/Code Management/PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue b/Code Management/PDA-FG/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
rename to Code Management/PDA-FG/uview-ui/components/u-car-keyboard/u-car-keyboard.vue
diff --git a/Code Management/PDA/uview-ui/components/u-card/u-card.vue b/Code Management/PDA-FG/uview-ui/components/u-card/u-card.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-card/u-card.vue
rename to Code Management/PDA-FG/uview-ui/components/u-card/u-card.vue
diff --git a/Code Management/PDA/uview-ui/components/u-cell-group/u-cell-group.vue b/Code Management/PDA-FG/uview-ui/components/u-cell-group/u-cell-group.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-cell-group/u-cell-group.vue
rename to Code Management/PDA-FG/uview-ui/components/u-cell-group/u-cell-group.vue
diff --git a/Code Management/PDA/uview-ui/components/u-cell-item/u-cell-item.vue b/Code Management/PDA-FG/uview-ui/components/u-cell-item/u-cell-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-cell-item/u-cell-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-cell-item/u-cell-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue b/Code Management/PDA-FG/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
rename to Code Management/PDA-FG/uview-ui/components/u-checkbox-group/u-checkbox-group.vue
diff --git a/Code Management/PDA/uview-ui/components/u-checkbox/u-checkbox.vue b/Code Management/PDA-FG/uview-ui/components/u-checkbox/u-checkbox.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-checkbox/u-checkbox.vue
rename to Code Management/PDA-FG/uview-ui/components/u-checkbox/u-checkbox.vue
diff --git a/Code Management/PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue b/Code Management/PDA-FG/uview-ui/components/u-circle-progress/u-circle-progress.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-circle-progress/u-circle-progress.vue
rename to Code Management/PDA-FG/uview-ui/components/u-circle-progress/u-circle-progress.vue
diff --git a/Code Management/PDA/uview-ui/components/u-col/u-col.vue b/Code Management/PDA-FG/uview-ui/components/u-col/u-col.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-col/u-col.vue
rename to Code Management/PDA-FG/uview-ui/components/u-col/u-col.vue
diff --git a/Code Management/PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue b/Code Management/PDA-FG/uview-ui/components/u-collapse-item/u-collapse-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-collapse-item/u-collapse-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-collapse-item/u-collapse-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-collapse/u-collapse.vue b/Code Management/PDA-FG/uview-ui/components/u-collapse/u-collapse.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-collapse/u-collapse.vue
rename to Code Management/PDA-FG/uview-ui/components/u-collapse/u-collapse.vue
diff --git a/Code Management/PDA/uview-ui/components/u-column-notice/u-column-notice.vue b/Code Management/PDA-FG/uview-ui/components/u-column-notice/u-column-notice.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-column-notice/u-column-notice.vue
rename to Code Management/PDA-FG/uview-ui/components/u-column-notice/u-column-notice.vue
diff --git a/Code Management/PDA/uview-ui/components/u-count-down/u-count-down.vue b/Code Management/PDA-FG/uview-ui/components/u-count-down/u-count-down.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-count-down/u-count-down.vue
rename to Code Management/PDA-FG/uview-ui/components/u-count-down/u-count-down.vue
diff --git a/Code Management/PDA/uview-ui/components/u-count-to/u-count-to.vue b/Code Management/PDA-FG/uview-ui/components/u-count-to/u-count-to.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-count-to/u-count-to.vue
rename to Code Management/PDA-FG/uview-ui/components/u-count-to/u-count-to.vue
diff --git a/Code Management/PDA/uview-ui/components/u-divider/u-divider.vue b/Code Management/PDA-FG/uview-ui/components/u-divider/u-divider.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-divider/u-divider.vue
rename to Code Management/PDA-FG/uview-ui/components/u-divider/u-divider.vue
diff --git a/Code Management/PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue b/Code Management/PDA-FG/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-dropdown-item/u-dropdown-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-dropdown/u-dropdown.vue b/Code Management/PDA-FG/uview-ui/components/u-dropdown/u-dropdown.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-dropdown/u-dropdown.vue
rename to Code Management/PDA-FG/uview-ui/components/u-dropdown/u-dropdown.vue
diff --git a/Code Management/PDA/uview-ui/components/u-empty/u-empty.vue b/Code Management/PDA-FG/uview-ui/components/u-empty/u-empty.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-empty/u-empty.vue
rename to Code Management/PDA-FG/uview-ui/components/u-empty/u-empty.vue
diff --git a/Code Management/PDA/uview-ui/components/u-field/u-field.vue b/Code Management/PDA-FG/uview-ui/components/u-field/u-field.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-field/u-field.vue
rename to Code Management/PDA-FG/uview-ui/components/u-field/u-field.vue
diff --git a/Code Management/PDA/uview-ui/components/u-form-item/u-form-item.vue b/Code Management/PDA-FG/uview-ui/components/u-form-item/u-form-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-form-item/u-form-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-form-item/u-form-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-form/u-form.vue b/Code Management/PDA-FG/uview-ui/components/u-form/u-form.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-form/u-form.vue
rename to Code Management/PDA-FG/uview-ui/components/u-form/u-form.vue
diff --git a/Code Management/PDA/uview-ui/components/u-full-screen/u-full-screen.vue b/Code Management/PDA-FG/uview-ui/components/u-full-screen/u-full-screen.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-full-screen/u-full-screen.vue
rename to Code Management/PDA-FG/uview-ui/components/u-full-screen/u-full-screen.vue
diff --git a/Code Management/PDA/uview-ui/components/u-gap/u-gap.vue b/Code Management/PDA-FG/uview-ui/components/u-gap/u-gap.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-gap/u-gap.vue
rename to Code Management/PDA-FG/uview-ui/components/u-gap/u-gap.vue
diff --git a/Code Management/PDA/uview-ui/components/u-grid-item/u-grid-item.vue b/Code Management/PDA-FG/uview-ui/components/u-grid-item/u-grid-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-grid-item/u-grid-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-grid-item/u-grid-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-grid/u-grid.vue b/Code Management/PDA-FG/uview-ui/components/u-grid/u-grid.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-grid/u-grid.vue
rename to Code Management/PDA-FG/uview-ui/components/u-grid/u-grid.vue
diff --git a/Code Management/PDA/uview-ui/components/u-icon/u-icon.vue b/Code Management/PDA-FG/uview-ui/components/u-icon/u-icon.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-icon/u-icon.vue
rename to Code Management/PDA-FG/uview-ui/components/u-icon/u-icon.vue
diff --git a/Code Management/PDA/uview-ui/components/u-image/u-image.vue b/Code Management/PDA-FG/uview-ui/components/u-image/u-image.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-image/u-image.vue
rename to Code Management/PDA-FG/uview-ui/components/u-image/u-image.vue
diff --git a/Code Management/PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue b/Code Management/PDA-FG/uview-ui/components/u-index-anchor/u-index-anchor.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-index-anchor/u-index-anchor.vue
rename to Code Management/PDA-FG/uview-ui/components/u-index-anchor/u-index-anchor.vue
diff --git a/Code Management/PDA/uview-ui/components/u-index-list/u-index-list.vue b/Code Management/PDA-FG/uview-ui/components/u-index-list/u-index-list.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-index-list/u-index-list.vue
rename to Code Management/PDA-FG/uview-ui/components/u-index-list/u-index-list.vue
diff --git a/Code Management/PDA/uview-ui/components/u-input/u-input.vue b/Code Management/PDA-FG/uview-ui/components/u-input/u-input.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-input/u-input.vue
rename to Code Management/PDA-FG/uview-ui/components/u-input/u-input.vue
diff --git a/Code Management/PDA/uview-ui/components/u-keyboard/u-keyboard.vue b/Code Management/PDA-FG/uview-ui/components/u-keyboard/u-keyboard.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-keyboard/u-keyboard.vue
rename to Code Management/PDA-FG/uview-ui/components/u-keyboard/u-keyboard.vue
diff --git a/Code Management/PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue b/Code Management/PDA-FG/uview-ui/components/u-lazy-load/u-lazy-load.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-lazy-load/u-lazy-load.vue
rename to Code Management/PDA-FG/uview-ui/components/u-lazy-load/u-lazy-load.vue
diff --git a/Code Management/PDA/uview-ui/components/u-line-progress/u-line-progress.vue b/Code Management/PDA-FG/uview-ui/components/u-line-progress/u-line-progress.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-line-progress/u-line-progress.vue
rename to Code Management/PDA-FG/uview-ui/components/u-line-progress/u-line-progress.vue
diff --git a/Code Management/PDA/uview-ui/components/u-line/u-line.vue b/Code Management/PDA-FG/uview-ui/components/u-line/u-line.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-line/u-line.vue
rename to Code Management/PDA-FG/uview-ui/components/u-line/u-line.vue
diff --git a/Code Management/PDA/uview-ui/components/u-link/u-link.vue b/Code Management/PDA-FG/uview-ui/components/u-link/u-link.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-link/u-link.vue
rename to Code Management/PDA-FG/uview-ui/components/u-link/u-link.vue
diff --git a/Code Management/PDA/uview-ui/components/u-loading-page/u-loading-page.vue b/Code Management/PDA-FG/uview-ui/components/u-loading-page/u-loading-page.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-loading-page/u-loading-page.vue
rename to Code Management/PDA-FG/uview-ui/components/u-loading-page/u-loading-page.vue
diff --git a/Code Management/PDA/uview-ui/components/u-loading/u-loading.vue b/Code Management/PDA-FG/uview-ui/components/u-loading/u-loading.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-loading/u-loading.vue
rename to Code Management/PDA-FG/uview-ui/components/u-loading/u-loading.vue
diff --git a/Code Management/PDA/uview-ui/components/u-loadmore/u-loadmore.vue b/Code Management/PDA-FG/uview-ui/components/u-loadmore/u-loadmore.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-loadmore/u-loadmore.vue
rename to Code Management/PDA-FG/uview-ui/components/u-loadmore/u-loadmore.vue
diff --git a/Code Management/PDA/uview-ui/components/u-mask/u-mask.vue b/Code Management/PDA-FG/uview-ui/components/u-mask/u-mask.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-mask/u-mask.vue
rename to Code Management/PDA-FG/uview-ui/components/u-mask/u-mask.vue
diff --git a/Code Management/PDA/uview-ui/components/u-message-input/u-message-input.vue b/Code Management/PDA-FG/uview-ui/components/u-message-input/u-message-input.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-message-input/u-message-input.vue
rename to Code Management/PDA-FG/uview-ui/components/u-message-input/u-message-input.vue
diff --git a/Code Management/PDA/uview-ui/components/u-modal/u-modal.vue b/Code Management/PDA-FG/uview-ui/components/u-modal/u-modal.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-modal/u-modal.vue
rename to Code Management/PDA-FG/uview-ui/components/u-modal/u-modal.vue
diff --git a/Code Management/PDA/uview-ui/components/u-navbar/u-navbar.vue b/Code Management/PDA-FG/uview-ui/components/u-navbar/u-navbar.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-navbar/u-navbar.vue
rename to Code Management/PDA-FG/uview-ui/components/u-navbar/u-navbar.vue
diff --git a/Code Management/PDA/uview-ui/components/u-no-network/u-no-network.vue b/Code Management/PDA-FG/uview-ui/components/u-no-network/u-no-network.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-no-network/u-no-network.vue
rename to Code Management/PDA-FG/uview-ui/components/u-no-network/u-no-network.vue
diff --git a/Code Management/PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue b/Code Management/PDA-FG/uview-ui/components/u-notice-bar/u-notice-bar.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-notice-bar/u-notice-bar.vue
rename to Code Management/PDA-FG/uview-ui/components/u-notice-bar/u-notice-bar.vue
diff --git a/Code Management/PDA/uview-ui/components/u-number-box/u-number-box.vue b/Code Management/PDA-FG/uview-ui/components/u-number-box/u-number-box.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-number-box/u-number-box.vue
rename to Code Management/PDA-FG/uview-ui/components/u-number-box/u-number-box.vue
diff --git a/Code Management/PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue b/Code Management/PDA-FG/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
rename to Code Management/PDA-FG/uview-ui/components/u-number-keyboard/u-number-keyboard.vue
diff --git a/Code Management/PDA/uview-ui/components/u-parse/libs/CssHandler.js b/Code Management/PDA-FG/uview-ui/components/u-parse/libs/CssHandler.js
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/libs/CssHandler.js
rename to Code Management/PDA-FG/uview-ui/components/u-parse/libs/CssHandler.js
diff --git a/Code Management/PDA/uview-ui/components/u-parse/libs/MpHtmlParser.js b/Code Management/PDA-FG/uview-ui/components/u-parse/libs/MpHtmlParser.js
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/libs/MpHtmlParser.js
rename to Code Management/PDA-FG/uview-ui/components/u-parse/libs/MpHtmlParser.js
diff --git a/Code Management/PDA/uview-ui/components/u-parse/libs/config.js b/Code Management/PDA-FG/uview-ui/components/u-parse/libs/config.js
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/libs/config.js
rename to Code Management/PDA-FG/uview-ui/components/u-parse/libs/config.js
diff --git a/Code Management/PDA/uview-ui/components/u-parse/libs/handler.wxs b/Code Management/PDA-FG/uview-ui/components/u-parse/libs/handler.wxs
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/libs/handler.wxs
rename to Code Management/PDA-FG/uview-ui/components/u-parse/libs/handler.wxs
diff --git a/Code Management/PDA/uview-ui/components/u-parse/libs/trees.vue b/Code Management/PDA-FG/uview-ui/components/u-parse/libs/trees.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/libs/trees.vue
rename to Code Management/PDA-FG/uview-ui/components/u-parse/libs/trees.vue
diff --git a/Code Management/PDA/uview-ui/components/u-parse/u-parse.vue b/Code Management/PDA-FG/uview-ui/components/u-parse/u-parse.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-parse/u-parse.vue
rename to Code Management/PDA-FG/uview-ui/components/u-parse/u-parse.vue
diff --git a/Code Management/PDA/uview-ui/components/u-picker/u-picker.vue b/Code Management/PDA-FG/uview-ui/components/u-picker/u-picker.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-picker/u-picker.vue
rename to Code Management/PDA-FG/uview-ui/components/u-picker/u-picker.vue
diff --git a/Code Management/PDA/uview-ui/components/u-popup/u-popup.vue b/Code Management/PDA-FG/uview-ui/components/u-popup/u-popup.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-popup/u-popup.vue
rename to Code Management/PDA-FG/uview-ui/components/u-popup/u-popup.vue
diff --git a/Code Management/PDA/uview-ui/components/u-radio-group/u-radio-group.vue b/Code Management/PDA-FG/uview-ui/components/u-radio-group/u-radio-group.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-radio-group/u-radio-group.vue
rename to Code Management/PDA-FG/uview-ui/components/u-radio-group/u-radio-group.vue
diff --git a/Code Management/PDA/uview-ui/components/u-radio/u-radio.vue b/Code Management/PDA-FG/uview-ui/components/u-radio/u-radio.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-radio/u-radio.vue
rename to Code Management/PDA-FG/uview-ui/components/u-radio/u-radio.vue
diff --git a/Code Management/PDA/uview-ui/components/u-rate/u-rate.vue b/Code Management/PDA-FG/uview-ui/components/u-rate/u-rate.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-rate/u-rate.vue
rename to Code Management/PDA-FG/uview-ui/components/u-rate/u-rate.vue
diff --git a/Code Management/PDA/uview-ui/components/u-read-more/u-read-more.vue b/Code Management/PDA-FG/uview-ui/components/u-read-more/u-read-more.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-read-more/u-read-more.vue
rename to Code Management/PDA-FG/uview-ui/components/u-read-more/u-read-more.vue
diff --git a/Code Management/PDA/uview-ui/components/u-row-notice/u-row-notice.vue b/Code Management/PDA-FG/uview-ui/components/u-row-notice/u-row-notice.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-row-notice/u-row-notice.vue
rename to Code Management/PDA-FG/uview-ui/components/u-row-notice/u-row-notice.vue
diff --git a/Code Management/PDA/uview-ui/components/u-row/u-row.vue b/Code Management/PDA-FG/uview-ui/components/u-row/u-row.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-row/u-row.vue
rename to Code Management/PDA-FG/uview-ui/components/u-row/u-row.vue
diff --git a/Code Management/PDA/uview-ui/components/u-search/u-search.vue b/Code Management/PDA-FG/uview-ui/components/u-search/u-search.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-search/u-search.vue
rename to Code Management/PDA-FG/uview-ui/components/u-search/u-search.vue
diff --git a/Code Management/PDA/uview-ui/components/u-section/u-section.vue b/Code Management/PDA-FG/uview-ui/components/u-section/u-section.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-section/u-section.vue
rename to Code Management/PDA-FG/uview-ui/components/u-section/u-section.vue
diff --git a/Code Management/PDA/uview-ui/components/u-select/u-select.vue b/Code Management/PDA-FG/uview-ui/components/u-select/u-select.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-select/u-select.vue
rename to Code Management/PDA-FG/uview-ui/components/u-select/u-select.vue
diff --git a/Code Management/PDA/uview-ui/components/u-skeleton/u-skeleton.vue b/Code Management/PDA-FG/uview-ui/components/u-skeleton/u-skeleton.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-skeleton/u-skeleton.vue
rename to Code Management/PDA-FG/uview-ui/components/u-skeleton/u-skeleton.vue
diff --git a/Code Management/PDA/uview-ui/components/u-slider/u-slider.vue b/Code Management/PDA-FG/uview-ui/components/u-slider/u-slider.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-slider/u-slider.vue
rename to Code Management/PDA-FG/uview-ui/components/u-slider/u-slider.vue
diff --git a/Code Management/PDA/uview-ui/components/u-steps/u-steps.vue b/Code Management/PDA-FG/uview-ui/components/u-steps/u-steps.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-steps/u-steps.vue
rename to Code Management/PDA-FG/uview-ui/components/u-steps/u-steps.vue
diff --git a/Code Management/PDA/uview-ui/components/u-sticky/u-sticky.vue b/Code Management/PDA-FG/uview-ui/components/u-sticky/u-sticky.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-sticky/u-sticky.vue
rename to Code Management/PDA-FG/uview-ui/components/u-sticky/u-sticky.vue
diff --git a/Code Management/PDA/uview-ui/components/u-subsection/u-subsection.vue b/Code Management/PDA-FG/uview-ui/components/u-subsection/u-subsection.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-subsection/u-subsection.vue
rename to Code Management/PDA-FG/uview-ui/components/u-subsection/u-subsection.vue
diff --git a/Code Management/PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue b/Code Management/PDA-FG/uview-ui/components/u-swipe-action/u-swipe-action.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-swipe-action/u-swipe-action.vue
rename to Code Management/PDA-FG/uview-ui/components/u-swipe-action/u-swipe-action.vue
diff --git a/Code Management/PDA/uview-ui/components/u-swiper/u-swiper.vue b/Code Management/PDA-FG/uview-ui/components/u-swiper/u-swiper.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-swiper/u-swiper.vue
rename to Code Management/PDA-FG/uview-ui/components/u-swiper/u-swiper.vue
diff --git a/Code Management/PDA/uview-ui/components/u-switch/u-switch.vue b/Code Management/PDA-FG/uview-ui/components/u-switch/u-switch.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-switch/u-switch.vue
rename to Code Management/PDA-FG/uview-ui/components/u-switch/u-switch.vue
diff --git a/Code Management/PDA/uview-ui/components/u-tabbar/u-tabbar.vue b/Code Management/PDA-FG/uview-ui/components/u-tabbar/u-tabbar.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-tabbar/u-tabbar.vue
rename to Code Management/PDA-FG/uview-ui/components/u-tabbar/u-tabbar.vue
diff --git a/Code Management/PDA/uview-ui/components/u-table/u-table.vue b/Code Management/PDA-FG/uview-ui/components/u-table/u-table.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-table/u-table.vue
rename to Code Management/PDA-FG/uview-ui/components/u-table/u-table.vue
diff --git a/Code Management/PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue b/Code Management/PDA-FG/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
rename to Code Management/PDA-FG/uview-ui/components/u-tabs-swiper/u-tabs-swiper.vue
diff --git a/Code Management/PDA/uview-ui/components/u-tabs/u-tabs.vue b/Code Management/PDA-FG/uview-ui/components/u-tabs/u-tabs.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-tabs/u-tabs.vue
rename to Code Management/PDA-FG/uview-ui/components/u-tabs/u-tabs.vue
diff --git a/Code Management/PDA/uview-ui/components/u-tag/u-tag.vue b/Code Management/PDA-FG/uview-ui/components/u-tag/u-tag.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-tag/u-tag.vue
rename to Code Management/PDA-FG/uview-ui/components/u-tag/u-tag.vue
diff --git a/Code Management/PDA/uview-ui/components/u-td/u-td.vue b/Code Management/PDA-FG/uview-ui/components/u-td/u-td.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-td/u-td.vue
rename to Code Management/PDA-FG/uview-ui/components/u-td/u-td.vue
diff --git a/Code Management/PDA/uview-ui/components/u-th/u-th.vue b/Code Management/PDA-FG/uview-ui/components/u-th/u-th.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-th/u-th.vue
rename to Code Management/PDA-FG/uview-ui/components/u-th/u-th.vue
diff --git a/Code Management/PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue b/Code Management/PDA-FG/uview-ui/components/u-time-line-item/u-time-line-item.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-time-line-item/u-time-line-item.vue
rename to Code Management/PDA-FG/uview-ui/components/u-time-line-item/u-time-line-item.vue
diff --git a/Code Management/PDA/uview-ui/components/u-time-line/u-time-line.vue b/Code Management/PDA-FG/uview-ui/components/u-time-line/u-time-line.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-time-line/u-time-line.vue
rename to Code Management/PDA-FG/uview-ui/components/u-time-line/u-time-line.vue
diff --git a/Code Management/PDA/uview-ui/components/u-toast/u-toast.vue b/Code Management/PDA-FG/uview-ui/components/u-toast/u-toast.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-toast/u-toast.vue
rename to Code Management/PDA-FG/uview-ui/components/u-toast/u-toast.vue
diff --git a/Code Management/PDA/uview-ui/components/u-top-tips/u-top-tips.vue b/Code Management/PDA-FG/uview-ui/components/u-top-tips/u-top-tips.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-top-tips/u-top-tips.vue
rename to Code Management/PDA-FG/uview-ui/components/u-top-tips/u-top-tips.vue
diff --git a/Code Management/PDA/uview-ui/components/u-tr/u-tr.vue b/Code Management/PDA-FG/uview-ui/components/u-tr/u-tr.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-tr/u-tr.vue
rename to Code Management/PDA-FG/uview-ui/components/u-tr/u-tr.vue
diff --git a/Code Management/PDA/uview-ui/components/u-upload/u-upload.vue b/Code Management/PDA-FG/uview-ui/components/u-upload/u-upload.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-upload/u-upload.vue
rename to Code Management/PDA-FG/uview-ui/components/u-upload/u-upload.vue
diff --git a/Code Management/PDA/uview-ui/components/u-verification-code/u-verification-code.vue b/Code Management/PDA-FG/uview-ui/components/u-verification-code/u-verification-code.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-verification-code/u-verification-code.vue
rename to Code Management/PDA-FG/uview-ui/components/u-verification-code/u-verification-code.vue
diff --git a/Code Management/PDA/uview-ui/components/u-waterfall/u-waterfall.vue b/Code Management/PDA-FG/uview-ui/components/u-waterfall/u-waterfall.vue
similarity index 100%
rename from Code Management/PDA/uview-ui/components/u-waterfall/u-waterfall.vue
rename to Code Management/PDA-FG/uview-ui/components/u-waterfall/u-waterfall.vue
diff --git a/Code Management/PDA/uview-ui/iconfont.css b/Code Management/PDA-FG/uview-ui/iconfont.css
similarity index 100%
rename from Code Management/PDA/uview-ui/iconfont.css
rename to Code Management/PDA-FG/uview-ui/iconfont.css
diff --git a/Code Management/PDA/uview-ui/index.js b/Code Management/PDA-FG/uview-ui/index.js
similarity index 100%
rename from Code Management/PDA/uview-ui/index.js
rename to Code Management/PDA-FG/uview-ui/index.js
diff --git a/Code Management/PDA/uview-ui/index.scss b/Code Management/PDA-FG/uview-ui/index.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/index.scss
rename to Code Management/PDA-FG/uview-ui/index.scss
diff --git a/Code Management/PDA/uview-ui/libs/config/config.js b/Code Management/PDA-FG/uview-ui/libs/config/config.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/config/config.js
rename to Code Management/PDA-FG/uview-ui/libs/config/config.js
diff --git a/Code Management/PDA/uview-ui/libs/config/zIndex.js b/Code Management/PDA-FG/uview-ui/libs/config/zIndex.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/config/zIndex.js
rename to Code Management/PDA-FG/uview-ui/libs/config/zIndex.js
diff --git a/Code Management/PDA/uview-ui/libs/css/color.scss b/Code Management/PDA-FG/uview-ui/libs/css/color.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/color.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/color.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/common.scss b/Code Management/PDA-FG/uview-ui/libs/css/common.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/common.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/common.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/style.components.scss b/Code Management/PDA-FG/uview-ui/libs/css/style.components.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/style.components.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/style.components.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/style.h5.scss b/Code Management/PDA-FG/uview-ui/libs/css/style.h5.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/style.h5.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/style.h5.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/style.mp.scss b/Code Management/PDA-FG/uview-ui/libs/css/style.mp.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/style.mp.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/style.mp.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/style.nvue.scss b/Code Management/PDA-FG/uview-ui/libs/css/style.nvue.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/style.nvue.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/style.nvue.scss
diff --git a/Code Management/PDA/uview-ui/libs/css/style.vue.scss b/Code Management/PDA-FG/uview-ui/libs/css/style.vue.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/css/style.vue.scss
rename to Code Management/PDA-FG/uview-ui/libs/css/style.vue.scss
diff --git a/Code Management/PDA/uview-ui/libs/function/$parent.js b/Code Management/PDA-FG/uview-ui/libs/function/$parent.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/$parent.js
rename to Code Management/PDA-FG/uview-ui/libs/function/$parent.js
diff --git a/Code Management/PDA/uview-ui/libs/function/addUnit.js b/Code Management/PDA-FG/uview-ui/libs/function/addUnit.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/addUnit.js
rename to Code Management/PDA-FG/uview-ui/libs/function/addUnit.js
diff --git a/Code Management/PDA/uview-ui/libs/function/bem.js b/Code Management/PDA-FG/uview-ui/libs/function/bem.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/bem.js
rename to Code Management/PDA-FG/uview-ui/libs/function/bem.js
diff --git a/Code Management/PDA/uview-ui/libs/function/color.js b/Code Management/PDA-FG/uview-ui/libs/function/color.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/color.js
rename to Code Management/PDA-FG/uview-ui/libs/function/color.js
diff --git a/Code Management/PDA/uview-ui/libs/function/colorGradient.js b/Code Management/PDA-FG/uview-ui/libs/function/colorGradient.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/colorGradient.js
rename to Code Management/PDA-FG/uview-ui/libs/function/colorGradient.js
diff --git a/Code Management/PDA/uview-ui/libs/function/debounce.js b/Code Management/PDA-FG/uview-ui/libs/function/debounce.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/debounce.js
rename to Code Management/PDA-FG/uview-ui/libs/function/debounce.js
diff --git a/Code Management/PDA/uview-ui/libs/function/deepClone.js b/Code Management/PDA-FG/uview-ui/libs/function/deepClone.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/deepClone.js
rename to Code Management/PDA-FG/uview-ui/libs/function/deepClone.js
diff --git a/Code Management/PDA/uview-ui/libs/function/deepMerge.js b/Code Management/PDA-FG/uview-ui/libs/function/deepMerge.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/deepMerge.js
rename to Code Management/PDA-FG/uview-ui/libs/function/deepMerge.js
diff --git a/Code Management/PDA/uview-ui/libs/function/getParent.js b/Code Management/PDA-FG/uview-ui/libs/function/getParent.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/getParent.js
rename to Code Management/PDA-FG/uview-ui/libs/function/getParent.js
diff --git a/Code Management/PDA/uview-ui/libs/function/guid.js b/Code Management/PDA-FG/uview-ui/libs/function/guid.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/guid.js
rename to Code Management/PDA-FG/uview-ui/libs/function/guid.js
diff --git a/Code Management/PDA/uview-ui/libs/function/md5.js b/Code Management/PDA-FG/uview-ui/libs/function/md5.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/md5.js
rename to Code Management/PDA-FG/uview-ui/libs/function/md5.js
diff --git a/Code Management/PDA/uview-ui/libs/function/queryParams.js b/Code Management/PDA-FG/uview-ui/libs/function/queryParams.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/queryParams.js
rename to Code Management/PDA-FG/uview-ui/libs/function/queryParams.js
diff --git a/Code Management/PDA/uview-ui/libs/function/random.js b/Code Management/PDA-FG/uview-ui/libs/function/random.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/random.js
rename to Code Management/PDA-FG/uview-ui/libs/function/random.js
diff --git a/Code Management/PDA/uview-ui/libs/function/randomArray.js b/Code Management/PDA-FG/uview-ui/libs/function/randomArray.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/randomArray.js
rename to Code Management/PDA-FG/uview-ui/libs/function/randomArray.js
diff --git a/Code Management/PDA/uview-ui/libs/function/route.js b/Code Management/PDA-FG/uview-ui/libs/function/route.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/route.js
rename to Code Management/PDA-FG/uview-ui/libs/function/route.js
diff --git a/Code Management/PDA/uview-ui/libs/function/sys.js b/Code Management/PDA-FG/uview-ui/libs/function/sys.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/sys.js
rename to Code Management/PDA-FG/uview-ui/libs/function/sys.js
diff --git a/Code Management/PDA/uview-ui/libs/function/test.js b/Code Management/PDA-FG/uview-ui/libs/function/test.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/test.js
rename to Code Management/PDA-FG/uview-ui/libs/function/test.js
diff --git a/Code Management/PDA/uview-ui/libs/function/throttle.js b/Code Management/PDA-FG/uview-ui/libs/function/throttle.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/throttle.js
rename to Code Management/PDA-FG/uview-ui/libs/function/throttle.js
diff --git a/Code Management/PDA/uview-ui/libs/function/timeFormat.js b/Code Management/PDA-FG/uview-ui/libs/function/timeFormat.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/timeFormat.js
rename to Code Management/PDA-FG/uview-ui/libs/function/timeFormat.js
diff --git a/Code Management/PDA/uview-ui/libs/function/timeFrom.js b/Code Management/PDA-FG/uview-ui/libs/function/timeFrom.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/timeFrom.js
rename to Code Management/PDA-FG/uview-ui/libs/function/timeFrom.js
diff --git a/Code Management/PDA/uview-ui/libs/function/toast.js b/Code Management/PDA-FG/uview-ui/libs/function/toast.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/toast.js
rename to Code Management/PDA-FG/uview-ui/libs/function/toast.js
diff --git a/Code Management/PDA/uview-ui/libs/function/trim.js b/Code Management/PDA-FG/uview-ui/libs/function/trim.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/trim.js
rename to Code Management/PDA-FG/uview-ui/libs/function/trim.js
diff --git a/Code Management/PDA/uview-ui/libs/function/type2icon.js b/Code Management/PDA-FG/uview-ui/libs/function/type2icon.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/function/type2icon.js
rename to Code Management/PDA-FG/uview-ui/libs/function/type2icon.js
diff --git a/Code Management/PDA/uview-ui/libs/mixin/mixin.js b/Code Management/PDA-FG/uview-ui/libs/mixin/mixin.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/mixin/mixin.js
rename to Code Management/PDA-FG/uview-ui/libs/mixin/mixin.js
diff --git a/Code Management/PDA/uview-ui/libs/mixin/mpShare.js b/Code Management/PDA-FG/uview-ui/libs/mixin/mpShare.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/mixin/mpShare.js
rename to Code Management/PDA-FG/uview-ui/libs/mixin/mpShare.js
diff --git a/Code Management/PDA/uview-ui/libs/request/index.js b/Code Management/PDA-FG/uview-ui/libs/request/index.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/request/index.js
rename to Code Management/PDA-FG/uview-ui/libs/request/index.js
diff --git a/Code Management/PDA/uview-ui/libs/store/index.js b/Code Management/PDA-FG/uview-ui/libs/store/index.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/store/index.js
rename to Code Management/PDA-FG/uview-ui/libs/store/index.js
diff --git a/Code Management/PDA/uview-ui/libs/util/area.js b/Code Management/PDA-FG/uview-ui/libs/util/area.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/util/area.js
rename to Code Management/PDA-FG/uview-ui/libs/util/area.js
diff --git a/Code Management/PDA/uview-ui/libs/util/async-validator.js b/Code Management/PDA-FG/uview-ui/libs/util/async-validator.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/util/async-validator.js
rename to Code Management/PDA-FG/uview-ui/libs/util/async-validator.js
diff --git a/Code Management/PDA/uview-ui/libs/util/city.js b/Code Management/PDA-FG/uview-ui/libs/util/city.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/util/city.js
rename to Code Management/PDA-FG/uview-ui/libs/util/city.js
diff --git a/Code Management/PDA/uview-ui/libs/util/emitter.js b/Code Management/PDA-FG/uview-ui/libs/util/emitter.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/util/emitter.js
rename to Code Management/PDA-FG/uview-ui/libs/util/emitter.js
diff --git a/Code Management/PDA/uview-ui/libs/util/province.js b/Code Management/PDA-FG/uview-ui/libs/util/province.js
similarity index 100%
rename from Code Management/PDA/uview-ui/libs/util/province.js
rename to Code Management/PDA-FG/uview-ui/libs/util/province.js
diff --git a/Code Management/PDA/uview-ui/package.json b/Code Management/PDA-FG/uview-ui/package.json
similarity index 100%
rename from Code Management/PDA/uview-ui/package.json
rename to Code Management/PDA-FG/uview-ui/package.json
diff --git a/Code Management/PDA/uview-ui/theme.scss b/Code Management/PDA-FG/uview-ui/theme.scss
similarity index 100%
rename from Code Management/PDA/uview-ui/theme.scss
rename to Code Management/PDA-FG/uview-ui/theme.scss
diff --git a/Code Management/PDA/vue.config.js b/Code Management/PDA-FG/vue.config.js
similarity index 100%
rename from Code Management/PDA/vue.config.js
rename to Code Management/PDA-FG/vue.config.js
diff --git a/Code Management/PDA/common/http.interceptor.js b/Code Management/PDA/common/http.interceptor.js
deleted file mode 100644
index 25c45fe..0000000
--- a/Code Management/PDA/common/http.interceptor.js
+++ /dev/null
@@ -1,135 +0,0 @@
-let baseUrl = 'http://127.0.0.1:9291'
-// let baseUrl = 'http://10.31.3.252:5000'
-// let baseUrl = 'http://10.31.3.241:5000'
-
-const install = (Vue, vm) => {
-	// 姝や负鑷畾涔夐厤缃弬鏁帮紝鍏蜂綋鍙傛暟瑙佷笂鏂硅鏄�
-	Vue.prototype.$u.http.setConfig({
-		baseUrl: baseUrl,
-		loadingText: '鍔姏鍔犺浇涓瓇',
-		loadingTime: 5000,
-		originalData: true,
-		// ......
-	});
-
-	// 璇锋眰鎷︽埅锛岄厤缃甌oken绛夊弬鏁�
-	Vue.prototype.$u.http.interceptor.request = (config) => {
-		// 寮曠敤token
-		// 鏂瑰紡涓�锛屽瓨鏀惧湪vuex鐨則oken锛屽亣璁句娇鐢ㄤ簡uView灏佽鐨剉uex鏂瑰紡
-		// 瑙侊細https://uviewui.com/components/globalVariable.html 
-		// config.header.token = vm.token;
-
-		// 鏂瑰紡浜岋紝濡傛灉娌℃湁浣跨敤uView灏佽鐨剉uex鏂规硶锛岄偅涔堥渶瑕佷娇鐢�$store.state鑾峰彇
-		// config.header.token = vm.$store.state.token;
-
-		// 鏂瑰紡涓夛紝濡傛灉token鏀惧湪浜唃lobalData锛岄�氳繃getApp().globalData鑾峰彇
-		// config.header.token = getApp().globalData.username;
-
-		// 鏂瑰紡鍥涳紝濡傛灉token鏀惧湪浜哠torage鏈湴瀛樺偍涓紝鎷︽埅鏄瘡娆¤姹傞兘鎵ц鐨�
-		// 鎵�浠ュ摢鎬曟偍閲嶆柊鐧诲綍淇敼浜哠torage锛屼笅涓�娆$殑璇锋眰灏嗕細鏄渶鏂板��
-		// const token = uni.getStorageSync('token');
-		// config.header.token = token;
-		// debugger
-		// var aaa = "Bearer " + uni.getStorageSync('jo_id_token');
-		// var bbb = "a" + uni.getStorageSync('remAcc');
-		// var ccc =  "a" + uni.getStorageSync('remPwd');
-		// var ddd =  "a" + uni.getStorageSync('acc');
-		// var eee =  "a" + uni.getStorageSync('pwd');
-		config.header.Token = 'xxxxxx';
-		config.header.Authorization = "Bearer " + uni.getStorageSync('jo_id_token');
-
-		config.header.uniapp = '1';
-		// 鍙互瀵规煇涓猽rl杩涜鐗瑰埆澶勭悊锛屾url鍙傛暟涓簍his.$u.get(url)涓殑url鍊� 
-		if (config.url == '/api/User/login') config.header.noToken = true;
-		// 鏈�鍚庨渶瑕佸皢config杩涜return
-		return config;
-		// 濡傛灉return涓�涓猣alse鍊硷紝鍒欎細鍙栨秷鏈璇锋眰
-		// if(config.url == '/user/rest') return false; // 鍙栨秷鏌愭璇锋眰
-	}
-
-	// 鍝嶅簲鎷︽埅锛屽垽鏂姸鎬佺爜鏄惁閫氳繃
-	Vue.prototype.$u.http.interceptor.response = (res) => {
-		if (!res.statusCode) {
-			if (res.errMsg) {
-				vm.$u.toast("璇锋眰澶辫触,璇锋鏌ュ悗鍙扮▼搴忔槸鍚︽墦寮�,閿欒淇℃伅:" + res.errMsg);
-				return false;
-			}
-		}
-
-		if (res.statusCode == 200) {
-			// res涓烘湇鍔$杩斿洖鍊硷紝鍙兘鏈塩ode锛宺esult绛夊瓧娈�
-			// 杩欓噷瀵箁es.result杩涜杩斿洖锛屽皢浼氬湪this.$u.post(url).then(res => {})鐨則hen鍥炶皟涓殑res鐨勫埌
-			// 濡傛灉閰嶇疆浜唎riginalData涓簍rue锛岃鐣欐剰杩欓噷鐨勮繑鍥炲��
-			return res.data;
-		} else if (res.statusCode == 401) {
-			// 鍋囪201涓簍oken澶辨晥锛岃繖閲岃烦杞櫥褰�
-			vm.$u.toast('楠岃瘉澶辫触锛岃閲嶆柊鐧诲綍');
-			setTimeout(() => {
-				// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
-				vm.$u.route('/pages/login/login')
-			}, 1500)
-			return false;
-		} else if (res.statusCode == 202) {
-			// 濡傛灉杩斿洖false锛屽垯浼氳皟鐢≒romise鐨剅eject鍥炶皟锛�
-			// 骞跺皢杩涘叆this.$u.post(url).then().catch(res=>{})鐨刢atch鍥炶皟涓紝res涓烘湇鍔$鐨勮繑鍥炲��
-			vm.$u.post("/api/User/replaceToken").then(res => {
-				if (x.data.status) {
-					vm.$u.vuex('vuex_token', x.data.data)
-					vm.$u.route({
-						type: "navigateBack",
-						delta: -1
-					})
-				} else {
-					console.log(x.data.message);
-					vm.$u.toast('楠岃瘉杩囨湡锛岃閲嶆柊鐧诲綍');
-					setTimeout(() => {
-						// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
-						vm.$u.route('/pages/login/login')
-					}, 1500)
-				}
-			}).catch(err => {
-				uni.reLaunch({
-					url: '/pages/login/login'
-				});
-			})
-			// uni.request({
-			// 	url: "http://192.168.12.245:8099/api/User/replaceToken",
-			// 	param: {},
-			// 	method: 'POST',
-			// 	responseType: "text",
-			// 	header: {
-			// 		Authorization: "Bearer " + vm.vuex_token
-			// 	},
-			// 	async: false,
-			// 	success: function(x) {
-			// 		if (x.data.status) {
-			// 			vm.$u.vuex('vuex_token',x.data.data)
-			// 			vm.$u.route({
-			// 				type: "navigateBack",
-			// 				delta: -1
-			// 			})
-			// 		} else {
-			// 			console.log(x.data.message);
-			// 			vm.$u.toast('楠岃瘉杩囨湡锛岃閲嶆柊鐧诲綍');
-			// 			setTimeout(() => {
-			// 				// 姝や负uView鐨勬柟娉曪紝璇﹁璺敱鐩稿叧鏂囨。
-			// 				vm.$u.route('/pages/user/login')
-			// 			}, 1500)
-			// 		}
-			// 	},
-			// 	errror: function(ex) {
-			// 		console.log(ex);
-			// 		uni.reLaunch({
-			// 			url: '/pages/user/login'
-			// 		});
-			// 	},
-			// });
-			return false;
-		}
-	}
-}
-
-export default {
-	install,
-	baseUrl
-}
\ No newline at end of file
diff --git a/Code Management/PDA/pages/login/login.vue b/Code Management/PDA/pages/login/login.vue
deleted file mode 100644
index edd6cbe..0000000
--- a/Code Management/PDA/pages/login/login.vue
+++ /dev/null
@@ -1,531 +0,0 @@
-<template>
-	<view class="template-login">
-		<!-- 椤堕儴鑷畾涔夊鑸� -->
-		<!-- <tn-nav-bar fixed alpha customBack>
-      <view slot="back" class='tn-custom-nav-bar__back'
-        @click="goBack">
-        <text class='icon tn-icon-left'></text>
-        <text class='icon tn-icon-home-capsule-fill'></text>
-      </view>
-    </tn-nav-bar> -->
-
-		<view class="login">
-			<!-- 椤堕儴鑳屾櫙鍥剧墖-->
-			<view class="login__bg login__bg--top">
-				<image class="bg" src="/static/login_top2.jpg" mode="widthFix"></image>
-			</view>
-			<view class="login__bg login__bg--top">
-				<image class="rocket rocket-sussuspension" src="/static/login_top3.png" mode="widthFix"></image>
-			</view>
-
-			<view class="login__wrapper">
-
-				<!-- 杈撳叆妗嗗唴瀹�-->
-				<view class="login__info tn-flex tn-flex-direction-column tn-flex-col-center tn-flex-row-center">
-					<!-- 鐧诲綍 -->
-					<block v-if="currentModeIndex === 0">
-						<view
-							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
-							<view class="login__info__item__input__left-icon">
-								<view class="tn-icon-my"></view>
-							</view>
-							<view class="login__info__item__input__content">
-								<input maxlength="45" placeholder-class="input-placeholder" v-model="user"
-									placeholder="璇疯緭鍏ョ櫥褰曠敤鎴峰悕绉�" />
-							</view>
-						</view>
-
-						<view
-							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
-							<view class="login__info__item__input__left-icon">
-								<view class="tn-icon-lock"></view>
-							</view>
-							<view class="login__info__item__input__content">
-								<input :password="!showPassword" placeholder-class="input-placeholder" v-model="pass"
-									placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�" />
-							</view>
-							<view class="login__info__item__input__right-icon" @click="showPassword = !showPassword">
-								<view :class="[showPassword ? 'tn-icon-eye' : 'tn-icon-eye-hide']"></view>
-							</view>
-						</view>
-						<view
-							class="login__info__item__input tn-flex tn-flex-direction-row tn-flex-nowrap tn-flex-col-center tn-flex-row-left">
-							<view class="login__info__item__input__left-icon">
-								<view class="tn-icon-my"></view>
-							</view>
-							<view class="login__info__item__input__content">
-								<input maxlength="45" placeholder-class="input-placeholder" v-model="code"
-									placeholder="璇疯緭鍏ラ獙璇佺爜" />
-							</view>
-							<view class="login__info__item__input__right-icon u-border" style="width: 30%;"
-								@click="getVierificationCode">
-								<img v-show="codeImgSrc != ''" :src="codeImgSrc" />
-							</view>
-						</view>
-					</block>
-					<!-- 娉ㄥ唽 -->
-					<view class="login__info__item__input__content" style="margin-top: 20px;">
-						<uni-data-checkbox multiple v-model="checkbox" :localdata="hobby"></uni-data-checkbox>
-					</view>
-					<view class="login__info__item__button tn-cool-bg-color-7--reverse"
-						@click="currentModeIndex === 0 ? login() : registra()" hover-class="tn-hover"
-						:hover-stay-time="150">{{ currentModeIndex === 0 ? '鐧诲綍' : '娉ㄥ唽'}}</view>
-
-					<!-- <view v-if="currentModeIndex === 0" class="login__info__item__tips">蹇樿瀵嗙爜?</view> -->
-				</view>
-			</view>
-
-			<!-- <tn-tips ref="tips" position="top"></tn-tips> -->
-			<!-- 搴曢儴鑳屾櫙鍥剧墖-->
-			<view class="login__bg login__bg--bottom">
-				<image src="/static/login_bottom_bg.jpg" mode="widthFix"></image>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	var app = getApp();
-	export default {
-		name: 'login-demo-1',
-		// mixins: [template_page_mixin],*
-		data() {
-			return {
-				// 褰撳墠閫変腑鐨勬ā寮�
-				currentModeIndex: 0,
-				// 妯″紡閫変腑婊戝潡
-				modeSliderStyle: {
-					left: 0
-				},
-				// 鏄惁鏄剧ず瀵嗙爜
-				showPassword: false,
-				// 鍊掕鏃舵彁绀烘枃瀛�
-				tips: '鑾峰彇楠岃瘉鐮�',
-				email: '',
-				codeImgSrc: '',
-				pass: '',
-				code: '1234',
-				user: '',
-				isDetail: false,
-				hobby: [{
-						text: '璁颁綇璐﹀彿',
-						value: 1
-					},
-					{
-						text: '璁颁綇瀵嗙爜',
-						value: 2
-					}
-				],
-				checkbox: []
-			}
-		},
-		watch: {
-			currentModeIndex(value) {
-				const sliderWidth = uni.upx2px(476 / 2)
-				this.modeSliderStyle.left = `${sliderWidth * value}px`
-			}
-		},
-		onLoad(options) {
-			this.getVierificationCode()
-			if (options.id) {
-				this.isDetail = true
-			}
-		},
-		mounted() {
-			var remAcc = uni.getStorageSync('remAcc');
-			if (remAcc) {
-				this.checkbox.push(1);
-			}
-
-			var remPwd = uni.getStorageSync('remPwd');
-			if (remPwd) {
-				this.checkbox.push(2);
-			}
-			
-			var acc = uni.getStorageSync('acc');
-			if (acc) {
-				this.user = acc;;
-			}
-
-			var pwd = uni.getStorageSync('pwd');
-			if (pwd) {
-				this.pass = pwd;
-			}
-			
-		},
-		methods: {
-			///鑾峰彇楠岃瘉鐮�
-			getVierificationCode() {
-				this.$u.get('/api/User/getVierificationCode', {}).then(res => {
-					if (res.img != null) {
-						this.codeImgSrc = "data:image/png;base64," + res.img;
-						this.email = res.uuid;
-					} else {
-						this.$refs.uToast.show({
-							title: '鑾峰彇楠岃瘉鐮佸け璐ヨ閲嶆柊鑾峰彇',
-							type: 'error',
-						})
-					}
-				})
-				// uni.request({
-				// 	url:"http://192.168.0.101:8098/api/User/getVierificationCode",
-				// 	success: (res) => {
-
-				// 	}
-				// })
-			},
-			login() {
-				if (this.pass == '') {
-					this.$t.message.toast('璇疯緭鍏ュ瘑鐮�')
-					return;
-				} else if (this.user == '') {
-					this.$t.message.toast('璇疯緭鍏ョ敤鎴峰悕')
-					return;
-				} else if (this.pass.length < 6) {
-					this.$t.message.toast('瀵嗙爜搴斿ぇ浜�6浣�')
-					return;
-				} else {
-					var userAcc = this.user;
-					var userPwd = this.pass;
-					var checkValues = this.checkbox;
-					var remAcc = this.checkbox.find(x => x == 1);
-					
-					if (remAcc) {
-						uni.setStorage({
-							key: "remAcc",
-							data: "1",
-						})
-					} else {
-						if (uni.getStorageSync('remAcc')) {
-							uni.removeStorageSync('remAcc');
-						}
-					}
-					var remPwd = this.checkbox.find(x => x == 2);
-					if (remPwd) {
-						uni.setStorage({
-							key: "remPwd",
-							data: "2",
-						})
-					} else {
-						if (uni.getStorageSync('remPwd')) {
-							uni.removeStorageSync('remPwd');
-						}
-					}
-					this.$t.message.loading('姝e湪鐧诲綍')
-					let userInfo = this.userInfo;
-					let userifno = {
-						UUID: this.email,
-						passWord: this.pass,
-						userName: this.user,
-						verificationCode: this.code
-					}
-					this.$u.post('/api/User/login', {
-						UUID: this.email,
-						passWord: this.pass,
-						userName: this.user,
-						verificationCode: this.code
-					}).then(res => {
-						// this.$u.toast(res.message);
-						this.$t.message.toast(res.message)
-						this.$t.message.closeLoading()
-						uni.setStorage({
-							key: 'jo_id_token',
-							data: res.data.token,
-						});
-						uni.setStorage({
-							key: 'jo_user',
-							data: res.data,
-						});
-						uni.setStorage({
-							key: 'jo_userImg',
-							data: res.data.img,
-						});
-						var acc = checkValues.find(x => x == 1);
-						if (acc) {
-							uni.setStorage({
-								key: 'acc',
-								data: userAcc,
-							});
-						} else {
-							if (uni.getStorage({
-									key: 'acc'
-								})) {
-								uni.removeStorage({
-									key: 'acc'
-								});
-							}
-						}
-						var pwd = checkValues.find(x => x == 2);
-						if (pwd) {
-							uni.setStorage({
-								key: 'pwd',
-								data: userPwd,
-							});
-						} else {
-							if (uni.getStorage({
-									key: 'pwd'
-								})) {
-								uni.removeStorage({
-									key: 'pwd'
-								});
-							}
-						}
-
-
-						setTimeout(() => {
-							this.$u.route({
-								type: 'reLaunch',
-								url: 'pages/index/index'
-							})
-							// this.$Router.replace({name:"tabbar"})
-						}, 200)
-					}).catch(res=>{
-						this.getVierificationCode();
-					});
-
-				}
-			},
-			codeInput: function(e) {
-				this.code = e.detail.value;
-			},
-			passInput: function(e) {
-				this.pass = e.detail.value;
-			},
-			userInput: function(e) {
-				this.user = e.detail.value;
-			},
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	// @import '@/static/css/templatePage/custom_nav_bar.scss';
-	/* 鎮诞 */
-	.rocket-sussuspension {
-		animation: suspension 3s ease-in-out infinite;
-	}
-
-	@keyframes suspension {
-
-		0%,
-		100% {
-			transform: translate(0, 0);
-		}
-
-		50% {
-			transform: translate(-0.8rem, 1rem);
-		}
-	}
-
-	.login {
-		position: relative;
-		height: 100%;
-		z-index: 1;
-
-		/* 鑳屾櫙鍥剧墖 start */
-		&__bg {
-			z-index: -1;
-			position: fixed;
-
-			&--top {
-				top: 0;
-				left: 0;
-				right: 0;
-				width: 100%;
-
-				.bg {
-					width: 750rpx;
-					will-change: transform;
-				}
-
-				.rocket {
-					margin: 50rpx 28%;
-					width: 400rpx;
-					will-change: transform;
-				}
-			}
-
-			&--bottom {
-				bottom: -10rpx;
-				left: 0;
-				right: 0;
-				width: 100%;
-				// height: 144px;
-				margin-bottom: env(safe-area-inset-bottom);
-
-				image {
-					width: 750rpx;
-					will-change: transform;
-				}
-			}
-		}
-
-		/* 鑳屾櫙鍥剧墖 end */
-
-		/* 鍐呭 start */
-		&__wrapper {
-			margin-top: 250rpx;
-			width: 100%;
-		}
-
-		/* 鍒囨崲 start */
-		&__mode {
-			position: relative;
-			margin: 0 auto;
-			width: 476rpx;
-			height: 77rpx;
-			background-color: #FFFFFF;
-			box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
-			border-radius: 39rpx;
-
-			&__item {
-				height: 77rpx;
-				width: 100%;
-				line-height: 77rpx;
-				text-align: center;
-				font-size: 31rpx;
-				color: #908f8f;
-				letter-spacing: 1em;
-				text-indent: 1em;
-				z-index: 2;
-				transition: all 0.4s;
-
-				&--active {
-					font-weight: bold;
-					color: #FFFFFF;
-				}
-			}
-
-			&__slider {
-				position: absolute;
-				height: inherit;
-				width: calc(476rpx);
-				border-radius: inherit;
-				box-shadow: 0rpx 18rpx 72rpx 18rpx rgba(0, 195, 255, 0.1);
-				z-index: 1;
-				transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
-			}
-		}
-
-		/* 鍒囨崲 end */
-
-		/* 鐧诲綍娉ㄥ唽淇℃伅 start */
-		&__info {
-			margin: 0 30rpx;
-			margin-top: 105rpx;
-			padding: 30rpx 51rpx;
-			padding-bottom: 0;
-			border-radius: 20rpx;
-			background-color: #ffff;
-			box-shadow: 0rpx 10rpx 50rpx 0rpx rgba(0, 3, 72, 0.1);
-
-			&__item {
-
-				&__input {
-					margin-top: 59rpx;
-					width: 100%;
-					height: 77rpx;
-					border: 1rpx solid #E6E6E6;
-					border-radius: 39rpx;
-
-					&__left-icon {
-						width: 10%;
-						font-size: 44rpx;
-						margin-left: 20rpx;
-						color: #AAAAAA;
-					}
-
-					&__content {
-						width: 80%;
-						padding-left: 10rpx;
-
-						&--verify-code {
-							width: 56%;
-						}
-
-						input {
-							font-size: 24rpx;
-							// letter-spacing: 0.1em;
-						}
-					}
-
-					&__right-icon {
-						width: 10%;
-						font-size: 44rpx;
-						margin-right: 20rpx;
-						color: #AAAAAA;
-					}
-
-					&__right-verify-code {
-						width: 34%;
-						margin-right: 20rpx;
-					}
-				}
-
-				&__button {
-					margin-top: 75rpx;
-					margin-bottom: 39rpx;
-					width: 100%;
-					height: 77rpx;
-					text-align: center;
-					font-size: 31rpx;
-					font-weight: bold;
-					line-height: 77rpx;
-					letter-spacing: 1em;
-					text-indent: 1em;
-					border-radius: 39rpx;
-					box-shadow: 1rpx 10rpx 24rpx 0rpx rgba(60, 129, 254, 0.35);
-				}
-
-				&__tips {
-					margin: 30rpx 0;
-					color: #AAAAAA;
-				}
-			}
-		}
-
-		/* 鐧诲綍娉ㄥ唽淇℃伅 end */
-
-		/* 鐧诲綍鏂瑰紡鍒囨崲 start */
-		&__way {
-			margin: 0 auto;
-			margin-top: 110rpx;
-
-			&__item {
-				&--icon {
-					width: 77rpx;
-					height: 77rpx;
-					font-size: 50rpx;
-					border-radius: 100rpx;
-					margin-bottom: 18rpx;
-					position: relative;
-					z-index: 1;
-
-					&::after {
-						content: " ";
-						position: absolute;
-						z-index: -1;
-						width: 100%;
-						height: 100%;
-						left: 0;
-						bottom: 0;
-						border-radius: inherit;
-						opacity: 1;
-						transform: scale(1, 1);
-						background-size: 100% 100%;
-						background-image: url(https://tnuiimage.tnkjapp.com/cool_bg_image/icon_bg5.png);
-					}
-				}
-			}
-		}
-
-		/* 鐧诲綍鏂瑰紡鍒囨崲 end */
-		/* 鍐呭 end */
-
-	}
-
-	/deep/.input-placeholder {
-		font-size: 24rpx;
-		color: #E6E6E6;
-	}
-</style>
diff --git a/Code Management/WIDESEA_WCSClient/.gitignore b/Code Management/WCS/WIDESEA_WCSClient/.gitignore
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/.gitignore
rename to Code Management/WCS/WIDESEA_WCSClient/.gitignore
diff --git a/Code Management/WIDESEA_WCSClient/README.md b/Code Management/WCS/WIDESEA_WCSClient/README.md
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/README.md
rename to Code Management/WCS/WIDESEA_WCSClient/README.md
diff --git a/Code Management/WIDESEA_WCSClient/config/buttons.js b/Code Management/WCS/WIDESEA_WCSClient/config/buttons.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/config/buttons.js
rename to Code Management/WCS/WIDESEA_WCSClient/config/buttons.js
diff --git a/Code Management/WIDESEA_WCSClient/index.html b/Code Management/WCS/WIDESEA_WCSClient/index.html
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/index.html
rename to Code Management/WCS/WIDESEA_WCSClient/index.html
diff --git a/Code Management/WIDESEA_WCSClient/jsconfig.json b/Code Management/WCS/WIDESEA_WCSClient/jsconfig.json
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/jsconfig.json
rename to Code Management/WCS/WIDESEA_WCSClient/jsconfig.json
diff --git a/Code Management/WCS/WIDESEA_WCSClient/package-lock.json b/Code Management/WCS/WIDESEA_WCSClient/package-lock.json
new file mode 100644
index 0000000..96cec0d
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSClient/package-lock.json
@@ -0,0 +1,3651 @@
+{
+  "name": "wideseawcs",
+  "version": "0.1.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@adobe/css-tools": {
+      "version": "4.3.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@adobe/css-tools/-/css-tools-4.3.3.tgz",
+      "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==",
+      "dev": true
+    },
+    "@babel/helper-string-parser": {
+      "version": "7.27.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+      "dev": true
+    },
+    "@babel/parser": {
+      "version": "7.18.11",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz",
+      "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
+    },
+    "@ctrl/tinycolor": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
+      "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
+    },
+    "@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA=="
+    },
+    "@esbuild/android-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-mips64el": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ppc64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-riscv64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-s390x": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/netbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/openbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/sunos-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@eslint-community/eslint-utils": {
+      "version": "4.9.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+      "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+      "dev": true,
+      "requires": {
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "dependencies": {
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        }
+      }
+    },
+    "@eslint-community/regexpp": {
+      "version": "4.12.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+      "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+      "dev": true
+    },
+    "@eslint/eslintrc": {
+      "version": "2.1.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.6.0",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+          "dev": true
+        },
+        "globals": {
+          "version": "13.24.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
+          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "ignore": {
+          "version": "5.3.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
+          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+          "dev": true
+        },
+        "import-fresh": {
+          "version": "3.3.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/import-fresh/-/import-fresh-3.3.1.tgz",
+          "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+          "dev": true,
+          "requires": {
+            "parent-module": "^1.0.0",
+            "resolve-from": "^4.0.0"
+          }
+        },
+        "js-yaml": {
+          "version": "4.1.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
+          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+          "dev": true,
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "resolve-from": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz",
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+          "dev": true
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        }
+      }
+    },
+    "@eslint/js": {
+      "version": "8.57.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/js/-/js-8.57.1.tgz",
+      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+      "dev": true
+    },
+    "@floating-ui/core": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz",
+      "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+    },
+    "@floating-ui/dom": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz",
+      "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+      "requires": {
+        "@floating-ui/core": "^0.7.3"
+      }
+    },
+    "@humanwhocodes/config-array": {
+      "version": "0.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+      "dev": true,
+      "requires": {
+        "@humanwhocodes/object-schema": "^2.0.3",
+        "debug": "^4.3.1",
+        "minimatch": "^3.0.5"
+      },
+      "dependencies": {
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
+      }
+    },
+    "@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true
+    },
+    "@humanwhocodes/object-schema": {
+      "version": "2.0.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "dev": true
+    },
+    "@isaacs/cliui": {
+      "version": "8.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@isaacs/cliui/-/cliui-8.0.2.tgz",
+      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^5.1.2",
+        "string-width-cjs": "npm:string-width@^4.2.0",
+        "strip-ansi": "^7.0.1",
+        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+        "wrap-ansi": "^8.1.0",
+        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "string-width-cjs": {
+          "version": "npm:string-width@4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "6.0.1",
+              "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.1"
+              }
+            }
+          }
+        },
+        "strip-ansi-cjs": {
+          "version": "npm:strip-ansi@6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "8.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+          "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^6.1.0",
+            "string-width": "^5.0.1",
+            "strip-ansi": "^7.0.1"
+          }
+        },
+        "wrap-ansi-cjs": {
+          "version": "npm:wrap-ansi@7.0.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "4.3.0",
+              "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+              "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+              "dev": true,
+              "requires": {
+                "color-convert": "^2.0.1"
+              }
+            },
+            "string-width": {
+              "version": "4.2.3",
+              "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+              "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+              "dev": true,
+              "requires": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.1",
+              "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.1"
+              }
+            }
+          }
+        }
+      }
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.5.5",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+      "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+      "dev": true
+    },
+    "@microsoft/signalr": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.4.tgz",
+      "integrity": "sha512-YeWRh4LxfYnq4I5CKw17/HOq8rY+ouTv6Bq+s55122StE3pK29j8j2OpP+1PA3D1ksHPfy7dFIgC33yr/E+01A==",
+      "requires": {
+        "abort-controller": "^3.0.0",
+        "eventsource": "^1.0.7",
+        "fetch-cookie": "^0.11.0",
+        "node-fetch": "^2.6.7",
+        "ws": "^7.4.5"
+      }
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz",
+      "integrity": "sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "dependencies": {
+        "@nodelib/fs.stat": {
+          "version": "2.0.5",
+          "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.5.tgz",
+          "integrity": "sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=",
+          "dev": true
+        }
+      }
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625769855088&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz",
+      "integrity": "sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@parcel/watcher": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.4.1.tgz",
+      "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
+      "dev": true,
+      "requires": {
+        "@parcel/watcher-android-arm64": "2.4.1",
+        "@parcel/watcher-darwin-arm64": "2.4.1",
+        "@parcel/watcher-darwin-x64": "2.4.1",
+        "@parcel/watcher-freebsd-x64": "2.4.1",
+        "@parcel/watcher-linux-arm-glibc": "2.4.1",
+        "@parcel/watcher-linux-arm64-glibc": "2.4.1",
+        "@parcel/watcher-linux-arm64-musl": "2.4.1",
+        "@parcel/watcher-linux-x64-glibc": "2.4.1",
+        "@parcel/watcher-linux-x64-musl": "2.4.1",
+        "@parcel/watcher-win32-arm64": "2.4.1",
+        "@parcel/watcher-win32-ia32": "2.4.1",
+        "@parcel/watcher-win32-x64": "2.4.1",
+        "detect-libc": "^1.0.3",
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.5",
+        "node-addon-api": "^7.0.0"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "3.0.3",
+          "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+          "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+          "dev": true,
+          "requires": {
+            "fill-range": "^7.1.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.1.1",
+          "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+          "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+          "dev": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-glob": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+          "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "4.0.8",
+          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+          "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+          "dev": true,
+          "requires": {
+            "braces": "^3.0.3",
+            "picomatch": "^2.3.1"
+          }
+        },
+        "picomatch": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+          "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+          "dev": true
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "dev": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "@parcel/watcher-android-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
+      "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-darwin-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
+      "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-darwin-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
+      "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-freebsd-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
+      "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
+      "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm64-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
+      "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm64-musl": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
+      "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-x64-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+      "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-x64-musl": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+      "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
+      "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-ia32": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
+      "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
+      "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
+      "dev": true,
+      "optional": true
+    },
+    "@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+      "dev": true,
+      "optional": true
+    },
+    "@tootallnate/once": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
+      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
+    },
+    "@types/lodash": {
+      "version": "4.14.184",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz",
+      "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.6",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
+      "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
+    "@types/web-bluetooth": {
+      "version": "0.0.15",
+      "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz",
+      "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA=="
+    },
+    "@ungap/structured-clone": {
+      "version": "1.3.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+      "dev": true
+    },
+    "@vitejs/plugin-vue": {
+      "version": "5.2.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
+      "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+      "dev": true
+    },
+    "@vue/compiler-core": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+      "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.37",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+        }
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+      "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+      "requires": {
+        "@vue/compiler-core": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.5.26",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
+      "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
+      "dev": true,
+      "requires": {
+        "@babel/parser": "^7.28.5",
+        "@vue/compiler-core": "3.5.26",
+        "@vue/compiler-dom": "3.5.26",
+        "@vue/compiler-ssr": "3.5.26",
+        "@vue/shared": "3.5.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.21",
+        "postcss": "^8.5.6",
+        "source-map-js": "^1.2.1"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+          "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+          "dev": true
+        },
+        "@babel/parser": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.28.5.tgz",
+          "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.28.5"
+          }
+        },
+        "@babel/types": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/types/-/types-7.28.5.tgz",
+          "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-string-parser": "^7.27.1",
+            "@babel/helper-validator-identifier": "^7.28.5"
+          }
+        },
+        "@vue/compiler-core": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
+          "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
+          "dev": true,
+          "requires": {
+            "@babel/parser": "^7.28.5",
+            "@vue/shared": "3.5.26",
+            "entities": "^7.0.0",
+            "estree-walker": "^2.0.2",
+            "source-map-js": "^1.2.1"
+          }
+        },
+        "@vue/compiler-dom": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
+          "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
+          "dev": true,
+          "requires": {
+            "@vue/compiler-core": "3.5.26",
+            "@vue/shared": "3.5.26"
+          }
+        },
+        "@vue/compiler-ssr": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
+          "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
+          "dev": true,
+          "requires": {
+            "@vue/compiler-dom": "3.5.26",
+            "@vue/shared": "3.5.26"
+          }
+        },
+        "@vue/shared": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.5.26.tgz",
+          "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
+          "dev": true
+        },
+        "entities": {
+          "version": "7.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/entities/-/entities-7.0.0.tgz",
+          "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "8.5.6",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
+          "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+          "dev": true,
+          "requires": {
+            "nanoid": "^3.3.11",
+            "picocolors": "^1.1.1",
+            "source-map-js": "^1.2.1"
+          }
+        },
+        "source-map-js": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
+          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+          "dev": true
+        }
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+      "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.0.0-beta.15",
+      "resolved": "https://registry.nlark.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.15.tgz?cache=0&sync_timestamp=1624900514906&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fdevtools-api%2Fdownload%2F%40vue%2Fdevtools-api-6.0.0-beta.15.tgz",
+      "integrity": "sha1-rXyzhOBi8WW8+cg3MhJb/7wq2D0="
+    },
+    "@vue/reactivity": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+      "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+      "requires": {
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.2.37",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+      "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.37",
+        "@vue/shared": "3.2.37",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      },
+      "dependencies": {
+        "magic-string": {
+          "version": "0.25.9",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
+          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        }
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+      "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+      "requires": {
+        "@vue/reactivity": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+      "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+      "requires": {
+        "@vue/runtime-core": "3.2.37",
+        "@vue/shared": "3.2.37",
+        "csstype": "^2.6.8"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+      "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+      "requires": {
+        "@vue/compiler-ssr": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz",
+      "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+    },
+    "@vueuse/core": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.0.tgz",
+      "integrity": "sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.15",
+        "@vueuse/metadata": "9.1.0",
+        "@vueuse/shared": "9.1.0",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.8",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
+          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
+        }
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.0.tgz",
+      "integrity": "sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A=="
+    },
+    "@vueuse/shared": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.0.tgz",
+      "integrity": "sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==",
+      "requires": {
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.8",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
+          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
+        }
+      }
+    },
+    "abort-controller": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
+      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "requires": {
+        "event-target-shim": "^5.0.0"
+      }
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "address": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz",
+      "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY="
+    },
+    "agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "requires": {
+        "debug": "4"
+      }
+    },
+    "agentkeepalive": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
+      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
+      "requires": {
+        "humanize-ms": "^1.2.1"
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz",
+      "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ali-oss": {
+      "version": "6.17.1",
+      "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.17.1.tgz",
+      "integrity": "sha512-v2oT3UhSJTH/LrsscVvi7iEGrnundydNaFzpYAKatqOl4JNcBV4UiwtlJU+ZHLys040JH2k+CutznA0GoE+P2w==",
+      "requires": {
+        "address": "^1.0.0",
+        "agentkeepalive": "^3.4.1",
+        "bowser": "^1.6.0",
+        "copy-to": "^2.0.1",
+        "dateformat": "^2.0.0",
+        "debug": "^2.2.0",
+        "destroy": "^1.0.4",
+        "end-or-error": "^1.0.1",
+        "get-ready": "^1.0.0",
+        "humanize-ms": "^1.2.0",
+        "is-type-of": "^1.0.0",
+        "js-base64": "^2.5.2",
+        "jstoxml": "^2.0.0",
+        "merge-descriptors": "^1.0.1",
+        "mime": "^2.4.5",
+        "mz-modules": "^2.1.0",
+        "platform": "^1.3.1",
+        "pump": "^3.0.0",
+        "sdk-base": "^2.0.1",
+        "stream-http": "2.8.2",
+        "stream-wormhole": "^1.0.4",
+        "urllib": "^2.33.1",
+        "utility": "^1.8.0",
+        "xml2js": "^0.4.16"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        }
+      }
+    },
+    "ansi-regex": {
+      "version": "6.2.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-6.2.2.tgz",
+      "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "6.2.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-6.2.3.tgz",
+      "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+      "dev": true
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+    },
+    "ast-types": {
+      "version": "0.13.4",
+      "resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz",
+      "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+      "requires": {
+        "tslib": "^2.0.1"
+      }
+    },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "axios": {
+      "version": "0.21.1",
+      "resolved": "https://registry.nlark.com/axios/download/axios-0.21.1.tgz",
+      "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=",
+      "requires": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&sync_timestamp=1617714298273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
+      "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4="
+    },
+    "bowser": {
+      "version": "1.9.4",
+      "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz",
+      "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/bytes/download/bytes-3.1.0.tgz",
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880017635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz",
+      "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
+          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.0",
+          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
+          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+          "requires": {
+            "ansi-regex": "^5.0.0"
+          }
+        }
+      }
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
+    },
+    "copy-anything": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/copy-anything/download/copy-anything-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-anything%2Fdownload%2Fcopy-anything-2.0.3.tgz",
+      "integrity": "sha1-hCQHugJGaw34RIGbvjuuu+XUXYc=",
+      "dev": true,
+      "requires": {
+        "is-what": "^3.12.0"
+      }
+    },
+    "copy-to": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz",
+      "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w=="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "requires": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      }
+    },
+    "csstype": {
+      "version": "2.6.20",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
+      "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+    },
+    "data-uri-to-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+      "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
+    },
+    "dateformat": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz",
+      "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw=="
+    },
+    "dayjs": {
+      "version": "1.11.5",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
+      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+    },
+    "debug": {
+      "version": "4.3.2",
+      "resolved": "https://registry.nlark.com/debug/download/debug-4.3.2.tgz",
+      "integrity": "sha1-8KScGKyHeeMdSgxgKd+3aHPHQos=",
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+    },
+    "default-user-agent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz",
+      "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==",
+      "requires": {
+        "os-name": "~1.0.3"
+      }
+    },
+    "degenerator": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/degenerator/-/degenerator-3.0.2.tgz",
+      "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
+      "requires": {
+        "ast-types": "^0.13.2",
+        "escodegen": "^1.8.1",
+        "esprima": "^4.0.0",
+        "vm2": "^3.9.8"
+      }
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+      "dev": true
+    },
+    "digest-header": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz",
+      "integrity": "sha512-sRTuakZ2PkOUCuAaVv+SLjhr/hRf8ldZP0XnGEQ69RFGxmll5fVaMsnRXWKKK4XsUTnJf8+eRPSFNgE/lWa9wQ==",
+      "requires": {
+        "utility": "^1.17.0"
+      }
+    },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+      "dev": true
+    },
+    "echarts": {
+      "version": "5.0.2",
+      "resolved": "https://registry.nlark.com/echarts/download/echarts-5.0.2.tgz",
+      "integrity": "sha1-FybRelfPBdYs0FZ7QyXhIBpWuvY=",
+      "requires": {
+        "tslib": "2.0.3",
+        "zrender": "5.0.4"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "element-plus": {
+      "version": "2.2.14",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.14.tgz",
+      "integrity": "sha512-V5Pis0OHhePg1RgVogZrcefaVl8vjVn4Pn9Qsh/t2CbFgjg9kKOYFqf/tuP3ObSXGm3X89hpe0W+nLVAsaFnpw==",
+      "requires": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^0.5.4",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "dependencies": {
+        "@popperjs/core": {
+          "version": "npm:@sxzz/popperjs-es@2.11.8",
+          "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz",
+          "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ=="
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.nlark.com/emoji-regex/download/emoji-regex-8.0.0.tgz",
+      "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
+      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "end-or-error": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz",
+      "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ=="
+    },
+    "errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
+      "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "escodegen": {
+      "version": "1.14.3",
+      "resolved": "https://registry.nlark.com/escodegen/download/escodegen-1.14.3.tgz",
+      "integrity": "sha1-TnuB+6YVgdyXWC7XjKt/Do1j9QM=",
+      "requires": {
+        "esprima": "^4.0.1",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "optional": true
+        }
+      }
+    },
+    "eslint": {
+      "version": "8.57.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint/-/eslint-8.57.1.tgz",
+      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.6.1",
+        "@eslint/eslintrc": "^2.1.4",
+        "@eslint/js": "8.57.1",
+        "@humanwhocodes/config-array": "^0.13.0",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "@ungap/structured-clone": "^1.2.0",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.2",
+        "eslint-visitor-keys": "^3.4.3",
+        "espree": "^9.6.1",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.0.3",
+        "js-yaml": "^4.1.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3",
+        "strip-ansi": "^6.0.1",
+        "text-table": "^0.2.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
+        },
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "5.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/find-up/-/find-up-5.0.0.tgz",
+          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^6.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "6.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz",
+          "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.3"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "4.0.3",
+              "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz",
+              "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.1"
+              }
+            }
+          }
+        },
+        "globals": {
+          "version": "13.24.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
+          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "ignore": {
+          "version": "5.3.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
+          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+          "dev": true
+        },
+        "is-path-inside": {
+          "version": "3.0.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-path-inside/-/is-path-inside-3.0.3.tgz",
+          "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+          "dev": true
+        },
+        "js-yaml": {
+          "version": "4.1.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
+          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+          "dev": true,
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        },
+        "levn": {
+          "version": "0.4.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/levn/-/levn-0.4.1.tgz",
+          "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "^1.2.1",
+            "type-check": "~0.4.0"
+          }
+        },
+        "locate-path": {
+          "version": "6.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/locate-path/-/locate-path-6.0.0.tgz",
+          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^5.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "optionator": {
+          "version": "0.9.4",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/optionator/-/optionator-0.9.4.tgz",
+          "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+          "dev": true,
+          "requires": {
+            "deep-is": "^0.1.3",
+            "fast-levenshtein": "^2.0.6",
+            "levn": "^0.4.1",
+            "prelude-ls": "^1.2.1",
+            "type-check": "^0.4.0",
+            "word-wrap": "^1.2.5"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "dev": true,
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "5.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-locate/-/p-locate-5.0.0.tgz",
+          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^3.0.2"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        },
+        "prelude-ls": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz",
+          "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "type-check": {
+          "version": "0.4.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-check/-/type-check-0.4.0.tgz",
+          "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "^1.2.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        },
+        "word-wrap": {
+          "version": "1.2.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz",
+          "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "7.2.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-scope/-/eslint-scope-7.2.2.tgz",
+      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "espree": {
+      "version": "9.6.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.15.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn/-/acorn-8.15.0.tgz",
+          "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+          "dev": true
+        },
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/esprima/download/esprima-4.0.1.tgz",
+      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
+    },
+    "esquery": {
+      "version": "1.6.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz",
+      "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
+          "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0="
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.nlark.com/esutils/download/esutils-2.0.3.tgz",
+      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q="
+    },
+    "event-target-shim": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
+      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041748498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz",
+      "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=",
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.nlark.com/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz?cache=0&sync_timestamp=1618847186091&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.nlark.com/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+    },
+    "fastq": {
+      "version": "1.11.1",
+      "resolved": "https://registry.nlark.com/fastq/download/fastq-1.11.1.tgz",
+      "integrity": "sha1-XYF1quF9thlH+LFiz8f2MmTSKAc=",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "fetch-cookie": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
+      "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
+      "requires": {
+        "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
+      }
+    },
+    "file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^3.0.4"
+      }
+    },
+    "flat-cache": {
+      "version": "3.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flat-cache/-/flat-cache-3.2.0.tgz",
+      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+      "dev": true,
+      "requires": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.3",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "flatted": {
+      "version": "3.3.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flatted/-/flatted-3.3.3.tgz",
+      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "dev": true
+    },
+    "follow-redirects": {
+      "version": "1.14.1",
+      "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555246888&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
+      "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M="
+    },
+    "foreground-child": {
+      "version": "3.3.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/foreground-child/-/foreground-child-3.3.1.tgz",
+      "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^7.0.6",
+        "signal-exit": "^4.0.1"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.6",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz",
+          "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        }
+      }
+    },
+    "formstream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.1.1.tgz",
+      "integrity": "sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==",
+      "requires": {
+        "destroy": "^1.0.4",
+        "mime": "^2.5.2",
+        "pause-stream": "~0.0.11"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "optional": true
+    },
+    "ftp": {
+      "version": "0.3.10",
+      "resolved": "https://registry.npmmirror.com/ftp/-/ftp-0.3.10.tgz",
+      "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
+      "requires": {
+        "readable-stream": "1.1.x",
+        "xregexp": "2.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+        }
+      }
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
+      "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34="
+    },
+    "get-ready": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz",
+      "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw=="
+    },
+    "get-uri": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/get-uri/-/get-uri-3.0.2.tgz",
+      "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "data-uri-to-buffer": "3",
+        "debug": "4",
+        "file-uri-to-path": "2",
+        "fs-extra": "^8.1.0",
+        "ftp": "^0.3.10"
+      },
+      "dependencies": {
+        "file-uri-to-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
+          "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
+        },
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        }
+      }
+    },
+    "glob": {
+      "version": "7.1.7",
+      "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&sync_timestamp=1620337498129&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
+      "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.6",
+      "resolved": "https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.6.tgz",
+      "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4="
+    },
+    "graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+        }
+      }
+    },
+    "http-proxy-agent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "requires": {
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "humanize-ms": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz",
+      "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+      "requires": {
+        "ms": "^2.0.0"
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1618422657851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "immutable": {
+      "version": "4.3.7",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.7.tgz",
+      "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+      "dev": true
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.nlark.com/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.nlark.com/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+    },
+    "is-class-hotfix": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
+      "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-type-of": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.2.1.tgz",
+      "integrity": "sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA==",
+      "requires": {
+        "core-util-is": "^1.0.2",
+        "is-class-hotfix": "~0.0.6",
+        "isstream": "~0.1.2"
+      }
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npm.taobao.org/is-what/download/is-what-3.14.1.tgz?cache=0&sync_timestamp=1615169735707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-what%2Fdownload%2Fis-what-3.14.1.tgz",
+      "integrity": "sha1-4SIvRt3ahd6tD9HJ3xMXYOd3VcE=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+    },
+    "jackspeak": {
+      "version": "3.4.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jackspeak/-/jackspeak-3.4.3.tgz",
+      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+      "dev": true,
+      "requires": {
+        "@isaacs/cliui": "^8.0.2",
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
+    "js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+    },
+    "jsbarcode": {
+      "version": "3.12.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jsbarcode/-/jsbarcode-3.12.1.tgz",
+      "integrity": "sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ=="
+    },
+    "json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161937969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jstoxml": {
+      "version": "2.2.9",
+      "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz",
+      "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw=="
+    },
+    "keyv": {
+      "version": "4.5.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "requires": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "ko-sleep": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/ko-sleep/-/ko-sleep-1.1.4.tgz",
+      "integrity": "sha512-s05WGpvvzyTuRlRE8fM7ru2Z3O+InbJuBcckTWKg2W+2c1k6SnFa3IfiSSt0/peFrlYAXgNoxuJWWVNmWh+K/A==",
+      "requires": {
+        "ms": "*"
+      }
+    },
+    "less": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/less/download/less-4.1.1.tgz?cache=0&sync_timestamp=1612065808998&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-4.1.1.tgz",
+      "integrity": "sha1-Fb8lOpk5eR3GkIiMP/Qk8+bH7bo=",
+      "dev": true,
+      "requires": {
+        "copy-anything": "^2.0.1",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "needle": "^2.5.2",
+        "parse-node-version": "^1.0.1",
+        "source-map": "~0.6.0",
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.nlark.com/make-dir/download/make-dir-2.1.0.tgz",
+          "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.nlark.com/mime/download/mime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.nlark.com/semver/download/semver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true,
+          "optional": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true,
+          "optional": true
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz",
+          "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
+          "dev": true
+        }
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz",
+      "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz",
+      "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g=="
+    },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.nlark.com/lru-cache/download/lru-cache-5.1.1.tgz",
+      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "magic-string": {
+      "version": "0.30.21",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.21.tgz",
+      "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.5.5"
+      }
+    },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+    },
+    "mime": {
+      "version": "2.5.2",
+      "resolved": "https://registry.nlark.com/mime/download/mime-2.5.2.tgz",
+      "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4="
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.nlark.com/minimist/download/minimist-1.2.5.tgz",
+      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
+    },
+    "minipass": {
+      "version": "7.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "dev": true
+    },
+    "mitt": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz",
+      "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.nlark.com/mkdirp/download/mkdirp-0.5.5.tgz",
+      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
+      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
+    },
+    "mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
+      "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "mz-modules": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mz-modules/-/mz-modules-2.1.0.tgz",
+      "integrity": "sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog==",
+      "requires": {
+        "glob": "^7.1.2",
+        "ko-sleep": "^1.0.3",
+        "mkdirp": "^0.5.1",
+        "pump": "^3.0.0",
+        "rimraf": "^2.6.1"
+      }
+    },
+    "nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "needle": {
+      "version": "2.8.0",
+      "resolved": "https://registry.nlark.com/needle/download/needle-2.8.0.tgz",
+      "integrity": "sha1-HI75waLCncweg9c4Cde8aByAoEg=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.nlark.com/debug/download/debug-3.2.7.tgz",
+          "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "netmask": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz",
+      "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
+    },
+    "node-addon-api": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
+      "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+      "dev": true
+    },
+    "node-fetch": {
+      "version": "2.6.7",
+      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+      "requires": {
+        "whatwg-url": "^5.0.0"
+      },
+      "dependencies": {
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
+        }
+      }
+    },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.nlark.com/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.nlark.com/optionator/download/optionator-0.8.3.tgz",
+      "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-name": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz",
+      "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==",
+      "requires": {
+        "osx-release": "^1.0.0",
+        "win-release": "^1.0.0"
+      }
+    },
+    "osx-release": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz",
+      "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==",
+      "requires": {
+        "minimist": "^1.1.0"
+      }
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz",
+      "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/p-try/download/p-try-2.2.0.tgz",
+      "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY="
+    },
+    "pac-proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4",
+        "get-uri": "3",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "5",
+        "pac-resolver": "^5.0.0",
+        "raw-body": "^2.2.0",
+        "socks-proxy-agent": "5"
+      }
+    },
+    "pac-resolver": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/pac-resolver/-/pac-resolver-5.0.1.tgz",
+      "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==",
+      "requires": {
+        "degenerator": "^3.0.2",
+        "ip": "^1.1.5",
+        "netmask": "^2.0.2"
+      }
+    },
+    "package-json-from-dist": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+      "dev": true
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/callsites/-/callsites-3.1.0.tgz",
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+          "dev": true
+        }
+      }
+    },
+    "parse-node-version": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/parse-node-version/download/parse-node-version-1.0.1.tgz",
+      "integrity": "sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+    },
+    "path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true
+    },
+    "path-scurry": {
+      "version": "1.11.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-scurry/-/path-scurry-1.11.1.tgz",
+      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "^10.2.0",
+        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "10.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-10.4.3.tgz",
+          "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+          "dev": true
+        }
+      }
+    },
+    "pause-stream": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz",
+      "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
+      "requires": {
+        "through": "~2.3"
+      }
+    },
+    "picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+      "dev": true,
+      "optional": true
+    },
+    "platform": {
+      "version": "1.3.6",
+      "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
+      "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
+    },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
+    "postcss": {
+      "version": "8.5.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
+      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+      "requires": {
+        "nanoid": "^3.3.11",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "dependencies": {
+        "source-map-js": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
+          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
+        }
+      }
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
+    },
+    "proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/proxy-agent/-/proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
+      "requires": {
+        "agent-base": "^6.0.0",
+        "debug": "4",
+        "http-proxy-agent": "^4.0.0",
+        "https-proxy-agent": "^5.0.0",
+        "lru-cache": "^5.1.1",
+        "pac-proxy-agent": "^5.0.0",
+        "proxy-from-env": "^1.0.0",
+        "socks-proxy-agent": "^5.0.0"
+      }
+    },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true,
+      "optional": true
+    },
+    "psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.nlark.com/psl/download/psl-1.8.0.tgz",
+      "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ="
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
+    },
+    "qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/querystringify/download/querystringify-2.2.0.tgz",
+      "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y="
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.2.3.tgz?cache=0&sync_timestamp=1616391548624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqueue-microtask%2Fdownload%2Fqueue-microtask-1.2.3.tgz",
+      "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz",
+      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.nlark.com/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
+      "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs="
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
+      "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
+      "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "rollup": {
+      "version": "3.29.5",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz",
+      "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+      "dev": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.2.0.tgz?cache=0&sync_timestamp=1612925912322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-parallel%2Fdownload%2Frun-parallel-1.2.0.tgz",
+      "integrity": "sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "sass": {
+      "version": "1.80.3",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.80.3.tgz",
+      "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==",
+      "dev": true,
+      "requires": {
+        "@parcel/watcher": "^2.4.1",
+        "chokidar": "^4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "dependencies": {
+        "chokidar": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz",
+          "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+          "dev": true,
+          "requires": {
+            "readdirp": "^4.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
+          "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+          "dev": true
+        }
+      }
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.nlark.com/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
+    },
+    "sdk-base": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz",
+      "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==",
+      "requires": {
+        "get-ready": "~1.0.0"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.1.tgz",
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
+    },
+    "shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^3.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "dev": true
+    },
+    "smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
+    },
+    "socks": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz",
+      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+      "requires": {
+        "ip": "^2.0.0",
+        "smart-buffer": "^4.2.0"
+      },
+      "dependencies": {
+        "ip": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz",
+          "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+        }
+      }
+    },
+    "socks-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
+      "requires": {
+        "agent-base": "^6.0.2",
+        "debug": "4",
+        "socks": "^2.3.3"
+      }
+    },
+    "source-map": {
+      "version": "0.7.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.7.6.tgz",
+      "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+      "dev": true
+    },
+    "source-map-js": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/source-map-js/download/source-map-js-0.6.2.tgz",
+      "integrity": "sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=",
+      "dev": true
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.nlark.com/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+    },
+    "stream-http": {
+      "version": "2.8.2",
+      "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz",
+      "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-wormhole": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz",
+      "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew=="
+    },
+    "string-width": {
+      "version": "5.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "dev": true,
+      "requires": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "9.2.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/emoji-regex/-/emoji-regex-9.2.2.tgz",
+          "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+          "dev": true
+        }
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "7.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-7.1.2.tgz",
+      "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^6.0.1"
+      }
+    },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "stylus": {
+      "version": "0.64.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/stylus/-/stylus-0.64.0.tgz",
+      "integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==",
+      "dev": true,
+      "requires": {
+        "@adobe/css-tools": "~4.3.3",
+        "debug": "^4.3.2",
+        "glob": "^10.4.5",
+        "sax": "~1.4.1",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-2.0.2.tgz",
+          "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "10.5.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob/-/glob-10.5.0.tgz",
+          "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+          "dev": true,
+          "requires": {
+            "foreground-child": "^3.1.0",
+            "jackspeak": "^3.1.2",
+            "minimatch": "^9.0.4",
+            "minipass": "^7.1.2",
+            "package-json-from-dist": "^1.0.0",
+            "path-scurry": "^1.11.1"
+          }
+        },
+        "minimatch": {
+          "version": "9.0.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-9.0.5.tgz",
+          "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "sax": {
+          "version": "1.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/sax/-/sax-1.4.3.tgz",
+          "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
+          "dev": true
+        }
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz",
+      "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
+    },
+    "tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz",
+      "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+      "requires": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      }
+    },
+    "tslib": {
+      "version": "2.0.3",
+      "resolved": "https://registry.nlark.com/tslib/download/tslib-2.0.3.tgz",
+      "integrity": "sha1-jgdBrEX8DCJuWKF7/D5kubxsphw="
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "unescape": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz",
+      "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
+      "requires": {
+        "extend-shallow": "^2.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "resolved": "https://registry.nlark.com/is-extendable/download/is-extendable-0.1.1.tgz",
+          "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+        }
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz",
+      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237530009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz",
+      "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "url-parse": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz",
+      "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "urllib": {
+      "version": "2.40.0",
+      "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.40.0.tgz",
+      "integrity": "sha512-XDZjoijtzsbkXTXgM+A/sJM002nwoYsc46YOYr6MNH2jUUw1nCBf2ywT1WaPsVEWJX4Yr+9isGmYj4+yofFn9g==",
+      "requires": {
+        "any-promise": "^1.3.0",
+        "content-type": "^1.0.2",
+        "debug": "^2.6.9",
+        "default-user-agent": "^1.0.0",
+        "digest-header": "^1.0.0",
+        "ee-first": "~1.1.1",
+        "formstream": "^1.1.0",
+        "humanize-ms": "^1.2.0",
+        "iconv-lite": "^0.4.15",
+        "ip": "^1.1.5",
+        "proxy-agent": "^5.0.0",
+        "pump": "^3.0.0",
+        "qs": "^6.4.0",
+        "statuses": "^1.3.1",
+        "utility": "^1.16.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "utility": {
+      "version": "1.17.0",
+      "resolved": "https://registry.npmmirror.com/utility/-/utility-1.17.0.tgz",
+      "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==",
+      "requires": {
+        "copy-to": "^2.0.1",
+        "escape-html": "^1.0.3",
+        "mkdirp": "^0.5.1",
+        "mz": "^2.7.0",
+        "unescape": "^1.0.1"
+      }
+    },
+    "vite": {
+      "version": "4.5.14",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.14.tgz",
+      "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.18.10",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      }
+    },
+    "vm2": {
+      "version": "3.9.14",
+      "resolved": "https://registry.npmmirror.com/vm2/-/vm2-3.9.14.tgz",
+      "integrity": "sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==",
+      "requires": {
+        "acorn": "^8.7.0",
+        "acorn-walk": "^8.2.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.8.2",
+          "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
+          "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
+        },
+        "acorn-walk": {
+          "version": "8.2.0",
+          "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz",
+          "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
+        }
+      }
+    },
+    "vue": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+      "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.37",
+        "@vue/compiler-sfc": "3.2.37",
+        "@vue/runtime-dom": "3.2.37",
+        "@vue/server-renderer": "3.2.37",
+        "@vue/shared": "3.2.37"
+      },
+      "dependencies": {
+        "@vue/compiler-sfc": {
+          "version": "3.2.37",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+          "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+          "requires": {
+            "@babel/parser": "^7.16.4",
+            "@vue/compiler-core": "3.2.37",
+            "@vue/compiler-dom": "3.2.37",
+            "@vue/compiler-ssr": "3.2.37",
+            "@vue/reactivity-transform": "3.2.37",
+            "@vue/shared": "3.2.37",
+            "estree-walker": "^2.0.2",
+            "magic-string": "^0.25.7",
+            "postcss": "^8.1.10",
+            "source-map": "^0.6.1"
+          }
+        },
+        "magic-string": {
+          "version": "0.25.9",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
+          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        }
+      }
+    },
+    "vue-barcode": {
+      "version": "1.3.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-barcode/-/vue-barcode-1.3.0.tgz",
+      "integrity": "sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==",
+      "requires": {
+        "jsbarcode": "^3.5.8"
+      }
+    },
+    "vue-draggable-next": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/vue-draggable-next/download/vue-draggable-next-2.0.1.tgz",
+      "integrity": "sha1-u2TvswLHuOdZ/T8hQnhxeJtiTGc="
+    },
+    "vue-qrcode": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-qrcode/-/vue-qrcode-2.2.2.tgz",
+      "integrity": "sha512-SbrXq/mSb1g2tbDyXPe9gy9KiMYsvxWKRErlpij1BqiFoHwQckheZV63CTw6yRLLUVG2RXAVlX+APkpdCK7SQQ==",
+      "requires": {
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.8.1",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
+          "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+        }
+      }
+    },
+    "vue-router": {
+      "version": "4.0.10",
+      "resolved": "https://registry.nlark.com/vue-router/download/vue-router-4.0.10.tgz?cache=0&sync_timestamp=1624286995690&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-4.0.10.tgz",
+      "integrity": "sha1-7I/aAylJsqMdMnMXD483bobrUqw=",
+      "requires": {
+        "@vue/devtools-api": "^6.0.0-beta.14"
+      }
+    },
+    "vuex": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/vuex/download/vuex-4.0.2.tgz",
+      "integrity": "sha1-+Jbb1b8qDpY/AMZ+m2EN50nMrMk=",
+      "requires": {
+        "@vue/devtools-api": "^6.0.0-beta.11"
+      }
+    },
+    "which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "win-release": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
+      "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==",
+      "requires": {
+        "semver": "^5.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        }
+      }
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/word-wrap/download/word-wrap-1.2.3.tgz",
+      "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w="
+    },
+    "wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
+          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.0",
+          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
+          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+          "requires": {
+            "ansi-regex": "^5.0.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "ws": {
+      "version": "7.5.3",
+      "resolved": "https://registry.nlark.com/ws/download/ws-7.5.3.tgz?cache=0&sync_timestamp=1625897053615&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-7.5.3.tgz",
+      "integrity": "sha1-Fgg1tjx9l7+rQY/BuKn87SrAGnQ="
+    },
+    "xml2js": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+      "requires": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      }
+    },
+    "xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+    },
+    "xregexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-2.0.0.tgz",
+      "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA=="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q="
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/y18n/download/y18n-4.0.3.tgz",
+      "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8="
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.nlark.com/yallist/download/yallist-3.1.1.tgz",
+      "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0="
+    },
+    "yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true
+    },
+    "zrender": {
+      "version": "5.0.4",
+      "resolved": "https://registry.nlark.com/zrender/download/zrender-5.0.4.tgz",
+      "integrity": "sha1-icNVr5CLn2SjAbOPdRt5UfLIqVo=",
+      "requires": {
+        "tslib": "2.0.3"
+      }
+    }
+  }
+}
diff --git a/Code Management/WIDESEA_WCSClient/package.json b/Code Management/WCS/WIDESEA_WCSClient/package.json
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/package.json
rename to Code Management/WCS/WIDESEA_WCSClient/package.json
diff --git a/Code Management/WIDESEA_WCSClient/public/index.html b/Code Management/WCS/WIDESEA_WCSClient/public/index.html
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/public/index.html
rename to Code Management/WCS/WIDESEA_WCSClient/public/index.html
diff --git a/Code Management/WIDESEA_WCSClient/public/static/login_bg.png b/Code Management/WCS/WIDESEA_WCSClient/public/static/login_bg.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/public/static/login_bg.png
rename to Code Management/WCS/WIDESEA_WCSClient/public/static/login_bg.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/public/wcslogo.png b/Code Management/WCS/WIDESEA_WCSClient/public/wcslogo.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/public/wcslogo.png
rename to Code Management/WCS/WIDESEA_WCSClient/public/wcslogo.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/public/webconfig.js b/Code Management/WCS/WIDESEA_WCSClient/public/webconfig.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/public/webconfig.js
rename to Code Management/WCS/WIDESEA_WCSClient/public/webconfig.js
diff --git a/Code Management/WIDESEA_WCSClient/public/wms_d.png b/Code Management/WCS/WIDESEA_WCSClient/public/wms_d.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/public/wms_d.png
rename to Code Management/WCS/WIDESEA_WCSClient/public/wms_d.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/App.vue b/Code Management/WCS/WIDESEA_WCSClient/src/App.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/App.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/App.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/api/http.js b/Code Management/WCS/WIDESEA_WCSClient/src/api/http.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/api/http.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/api/http.js
diff --git a/Code Management/WIDESEA_WCSClient/src/api/permission.js b/Code Management/WCS/WIDESEA_WCSClient/src/api/permission.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/api/permission.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/api/permission.js
diff --git a/Code Management/WIDESEA_WCSClient/src/api/useTest.js b/Code Management/WCS/WIDESEA_WCSClient/src/api/useTest.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/api/useTest.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/api/useTest.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/css/common.less b/Code Management/WCS/WIDESEA_WCSClient/src/assets/css/common.less
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/css/common.less
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/css/common.less
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf b/Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff b/Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/icon.css b/Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/icon.css
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/element-icon/icon.css
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/element-icon/icon.css
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/error-img.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error-img.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/imgs/error-img.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error-img.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/error.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/imgs/error.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/error.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_d.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_d.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_d.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_d.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_x.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_x.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_x.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/imgs/wms_x.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/logo.png b/Code Management/WCS/WIDESEA_WCSClient/src/assets/logo.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/logo.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/logo.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/common.js b/Code Management/WCS/WIDESEA_WCSClient/src/assets/script/common.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/script/common.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/script/common.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/extend.js b/Code Management/WCS/WIDESEA_WCSClient/src/assets/script/extend.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/script/extend.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/script/extend.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/testFormExtend.js b/Code Management/WCS/WIDESEA_WCSClient/src/assets/script/testFormExtend.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/assets/script/testFormExtend.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/assets/script/testFormExtend.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Audit.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Audit.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/Audit.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Audit.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Empty.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Empty.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/Empty.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Empty.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Icons.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Icons.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/Icons.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/Icons.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolBox.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolBox.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolBox.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolBox.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolForm.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolForm.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolHeader.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolHeader.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolHeader.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolHeader.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolTable.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolTable.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolUpload.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolUpload.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/basic/VolUpload.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/basic/VolUpload.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/401.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/401.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/redirect/401.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/401.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/404.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/404.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/redirect/404.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/404.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/Message.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/Message.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/redirect/Message.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/Message.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/coding.vue b/Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/coding.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/components/redirect/coding.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/components/redirect/coding.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/basicinfo/extend/addrouters.vue b/Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/addrouters.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/basicinfo/extend/addrouters.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/addrouters.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/basicinfo/extend/routerview.vue b/Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/routerview.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/basicinfo/extend/routerview.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/extend/routerview.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/basicinfo/router.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/router.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/basicinfo/router.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/basicinfo/router.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceInfo.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceInfo.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceInfo.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceInfo.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocol.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocol.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocol.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocol.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocolDetail.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocolDetail.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocolDetail.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/deviceProtocolDetail.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/quartzJob/dispatchInfo.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/dispatchInfo.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/quartzJob/dispatchInfo.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/dispatchInfo.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/quartzJob/extend/importDevicePro.vue b/Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/extend/importDevicePro.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/quartzJob/extend/importDevicePro.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/quartzJob/extend/importDevicePro.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Log.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Log.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Log.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Log.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Role.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Role.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Role1.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role1.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Role1.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_Role1.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_User.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_User.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/taskinfo/extend/taskExecuteDetail.vue b/Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/extend/taskExecuteDetail.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/taskinfo/extend/taskExecuteDetail.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/extend/taskExecuteDetail.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/taskinfo/task.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/taskinfo/task.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/taskinfo/task_Hty.js b/Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task_Hty.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/extension/taskinfo/task_Hty.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/extension/taskinfo/task_Hty.js
diff --git a/Code Management/WIDESEA_WCSClient/src/main.js b/Code Management/WCS/WIDESEA_WCSClient/src/main.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/main.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/main.js
diff --git a/Code Management/WIDESEA_WCSClient/src/router/charts.js b/Code Management/WCS/WIDESEA_WCSClient/src/router/charts.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/router/charts.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/router/charts.js
diff --git a/Code Management/WIDESEA_WCSClient/src/router/index.js b/Code Management/WCS/WIDESEA_WCSClient/src/router/index.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/router/index.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/router/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/router/redirect.js b/Code Management/WCS/WIDESEA_WCSClient/src/router/redirect.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/router/redirect.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/router/redirect.js
diff --git a/Code Management/WIDESEA_WCSClient/src/router/viewGird.js b/Code Management/WCS/WIDESEA_WCSClient/src/router/viewGird.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/router/viewGird.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/router/viewGird.js
diff --git a/Code Management/WIDESEA_WCSClient/src/store/index.js b/Code Management/WCS/WIDESEA_WCSClient/src/store/index.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/store/index.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/store/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/uitils/common.js b/Code Management/WCS/WIDESEA_WCSClient/src/uitils/common.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/uitils/common.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/uitils/common.js
diff --git a/Code Management/WIDESEA_WCSClient/src/uitils/eventBus.js b/Code Management/WCS/WIDESEA_WCSClient/src/uitils/eventBus.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/uitils/eventBus.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/uitils/eventBus.js
diff --git a/Code Management/WIDESEA_WCSClient/src/uitils/signalr.js b/Code Management/WCS/WIDESEA_WCSClient/src/uitils/signalr.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/uitils/signalr.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/uitils/signalr.js
diff --git a/Code Management/WIDESEA_WCSClient/src/uitils/websocket.js b/Code Management/WCS/WIDESEA_WCSClient/src/uitils/websocket.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/uitils/websocket.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/uitils/websocket.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/Home.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/Home.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/Home.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/Home.vue
diff --git a/Code Management/WCS/WIDESEA_WCSClient/src/views/Index.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/Index.vue
new file mode 100644
index 0000000..18ce9c5
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSClient/src/views/Index.vue
@@ -0,0 +1,720 @@
+<template>
+  <div id="vol-container" :class="['vol-theme-' + theme]">
+    <div class="vol-aside" :style="{ width: menuWidth + 'px' }">
+      <div class="header" :style="{ width: menuWidth - 1 + 'px' }">
+        <!-- <img v-show="!isCollapse" v-bind:src="logo" /> -->
+        <i @click="toggleLeft" class="el-icon-s-fold collapse-menu" />
+      </div>
+      <div class="vol-menu">
+        <el-scrollbar style="height: 100%">
+          <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false"
+            :isCollapse="isCollapse" :list="menuOptions"></VolMenu>
+        </el-scrollbar>
+      </div>
+    </div>
+    <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
+      <div class="vol-header">
+        <div class="project-name">WIDESEA_WCS</div>
+        <div class="header-text">
+          <!-- <div class="h-link">
+            <a
+              href="javascript:void(0)"
+              @click="to(item)"
+              v-for="(item, index) in links.filter((c) => {
+                return !c.icon;
+              })"
+              :key="index"
+            >
+              <span v-if="!item.icon"> {{ item.text }}</span>
+              <i v-else :class="item.icon"></i>
+            </a>
+          </div> -->
+        </div>
+        <div class="header-info">
+          <div class="h-link">
+            <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+              return c.icon;
+            })" :key="index">
+              <span> {{ item.text }}</span>
+            </a>
+
+          </div>
+          <div>
+            <img class="user-header" :src="userImg" :onerror="errorImg" />
+          </div>
+          <div class="user">
+            <span>{{ userName }}</span>
+            <span id="index-date"></span>
+          </div>
+          <div class="settings">
+            <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" />
+          </div>
+        </div>
+      </div>
+      <div class="vol-path">
+        <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)"
+          type="border-card" class="header-navigation" v-model="selectId" :strtch="false">
+          <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0"
+            :key="navIndex" :label="item.name">
+            <span style="display: none">{{ navIndex }}</span>
+          </el-tab-pane>
+        </el-tabs>
+        <!-- 鍙抽敭鑿滃崟 -->
+        <div v-show="contextMenuVisible">
+          <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu">
+            <li v-show="visibleItem.all">
+              <el-button link @click="closeTabs()">
+                <i class="el-icon-close"></i>
+                {{
+                  navigation.length == 2 ? "鍏抽棴鑿滃崟" : "鍏抽棴鎵�鏈�"
+                }}</el-button>
+            </li>
+            <li v-show="visibleItem.left">
+              <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>鍏抽棴宸﹁竟</el-button>
+            </li>
+            <li v-show="visibleItem.right">
+              <el-button link @click="closeTabs('right')">
+                <i class="el-icon-right"></i>鍏抽棴鍙宠竟</el-button>
+            </li>
+            <li v-show="visibleItem.other">
+              <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>鍏抽棴鍏朵粬
+              </el-button>
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div class="vol-main" id="vol-main">
+        <el-scrollbar style="height: 100%" v-if="permissionInited">
+          <loading v-show="$store.getters.isLoading()"></loading>
+          <router-view v-slot="{ Component }">
+            <keep-alive>
+              <component :is="Component" :key="$route.name"
+                v-if="!$route.meta || ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" />
+            </keep-alive>
+            <component :is="Component" :key="$route.name" v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" />
+          </router-view>
+        </el-scrollbar>
+      </div>
+    </div>
+    <el-drawer title="閫夋嫨涓婚" v-model="drawer_model" direction="rtl" destroy-on-close>
+      <div class="theme-selector">
+        <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index"
+          :style="{ background: item.color }">
+          <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px"
+            class="t-left"></div>
+          <div class="t-right"></div>
+        </div>
+      </div>
+    </el-drawer>
+
+    <el-drawer title="娑堟伅鍒楄〃" v-model="messageModel" direction="rtl" destroy-on-close>
+      <Message :list="messageList"></Message>
+    </el-drawer>
+  </div>
+</template>
+<style lang="less" scoped>
+@import "./index/index.less";
+</style>
+<script>
+import loading from "@/components/basic/RouterLoading.vue";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import Message from "./index/Message.vue";
+import MessageConfig from "./index/MessageConfig.js";
+import imgUrl from "@/assets/imgs/wcs_x.png";
+var $this;
+var $interval;
+var $indexDate;
+import {
+  defineComponent,
+  reactive,
+  ref,
+  watch,
+  onMounted,
+  getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "../api/http";
+import useSignalr from '../uitils/signalr.js';
+export default defineComponent({
+  components: {
+    VolMenu,
+    loading,
+    Message,
+  },
+
+  data() {
+    return {
+      allTabs: true,
+      leftTabs: true,
+      rightTabs: true,
+      otherTabs: true,
+      menuLeft: 0,
+      menuTop: 0,
+      //  contextMenuVisible: false, // 鍙抽敭鍏抽棴鏄�/闅�
+    };
+  },
+  setup(props, context) {
+    // 鑾峰彇鍏ㄥ眬灞炴�у拰鏂规硶
+    const { proxy } = getCurrentInstance();
+
+    // 鑿滃崟瀵艰埅榛樿瀹藉害
+    const menuWidth = ref(200);
+    const contextMenuVisible = ref(false);
+    const isCollapse = ref(false);
+    const drawer_model = ref(false);
+    const messageModel = ref(false);
+    const theme_color = ref([
+      { name: "blue", color: "rgb(45, 140, 240)" },
+      { name: "blue2", color: "rgb(45, 140, 240)", leftColor: "#0068d6" },
+      { name: "red", color: "rgb(237, 64, 20)" },
+      { name: "red2", color: "rgb(237, 64, 20)", leftColor: "#a90000" },
+      { name: "dark", color: "#272929" },
+      { name: "orange", color: "#ff9900" },
+      { name: "orange2", color: "#ff9900", leftColor: "rgb(232 141 5)" },
+      { name: "green", color: "rgb(25, 190, 107)" },
+      { name: "green2", color: "rgb(25, 190, 107)", leftColor: "#019e4f" },
+      { name: "white", color: "#fff" },
+    ]);
+    const links = ref([
+      // {
+      //   text: "妗嗘灦瑙嗛",
+      //   path: "https://www.cctalk.com/m/group/90268531",
+      //   id: -3,
+      // },
+      // { text: "澶у睆鏁版嵁", path: "/bigdata", id: -3 },
+      // {
+      //   text: "妗嗘灦鏂囨。",
+      //   path: "http://v2.volcore.xyz/document/guide",
+      //   id: -2,
+      // },   {
+      //   text: "妗嗘灦浼佷笟鐗�",
+      //   path: "http://pro.volcore.xyz/",
+      //   id: 10,
+      // },
+      { text: "涓汉涓績", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
+      {
+        text: "瀹夊叏閫�鍑�",
+        path: "/login",
+        id: -4,
+        icon: "el-icon-switch-button",
+      },
+    ]);
+    const errorImg = ref(
+      'this.src="' + new URL("@/assets/imgs/error-img.png", import.meta.url).href + '"'
+    );
+    const selectId = ref("1");
+    // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
+    const selectMenuIndex = ref("0");
+    //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
+    const currentMenuId = ref(0);
+    const userName = ref("--");
+    const userInfo = ref({});
+    const visibleItem = reactive({
+      left: false,
+      right: false,
+      all: false,
+      other: false,
+    });
+    const userImg = ref("");
+    const navigation = reactive([
+      { orderNo: "0", id: "1", name: "棣栭〉", path: "/home" },
+    ]);
+    const logo = ref(imgUrl);
+    const theme = ref("blue2");
+    const menuOptions = ref([]);
+    const permissionInited = ref(false);
+    const messageList = reactive([]);
+    let _config = getCurrentInstance().appContext.config.globalProperties;
+    let router = useRouter();
+    const toggleLeft = () => {
+      isCollapse.value = !isCollapse.value;
+      menuWidth.value = isCollapse.value ? 63 : 200;
+    };
+    //2021.08.28寮�鏀炬墜鍔ㄦ姌鍙犺彍鍗曟柟娉�
+    _config.menu = {
+      show() {
+        toggleLeft();
+      },
+      hide() {
+        toggleLeft();
+      },
+    };
+    const changeTheme = (name) => {
+      if (theme.value != name) {
+        theme.value = name;
+      }
+      localStorage.setItem("vol3_theme", name);
+    };
+    const to = (item) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      if (item.path.indexOf("http") != -1) {
+        window.open(item.path);
+        return;
+      }
+      if (typeof item == "string" || item.path == "/login") {
+        if (item == "/login" || item.path == "/login") {
+          //纭鏄惁閫�鍑�
+          store.commit("clearUserInfo", "");
+          window.location.href = "/";
+          return;
+        }
+        router.push({ path: item });
+        return;
+      }
+      if (item.path == "#") return;
+      open(item);
+    };
+    const open = (item, useRoute) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let _index = navigation.findIndex((x) => {
+        return x.path == item.path;
+      });
+      if (_index == -1) {
+        navigation.push({
+          //  orderNo: String(navigation.length),// 搴忓彿
+          id: item.id + "",
+          name: item.name || item.text || "鏃犳爣棰�",
+          path: item.path,
+          query: item.query, //2021.03.20淇鑷畾涔変簩娆℃墦寮�$tabs鏃跺弬鏁颁涪澶辩殑闂
+        });
+        //鏂版墦寮�鐨則ab绉昏嚦鏈�鍚庝竴涓�夐」
+        selectId.value = navigation.length - 1 + "";
+      } else {
+        selectId.value = _index + "";
+      }
+      if (useRoute === undefined) {
+        //闈炴爣鍑嗚彍鍗曪紝璁板綍鏈�鍚庝竴娆¤烦杞殑椤甸潰锛岀敤浜庡埛鏂�
+        setItem(item);
+        router.push(item);
+        // this.$router.push(item);
+      }
+      currentMenuId.value = item.id * 1;
+      // tab鑿滃崟缁戝畾鍙抽敭浜嬩欢
+      proxy.$nextTick(function (e) {
+        proxy.bindRightClickMenu(true);
+      });
+    };
+    const close = (path) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let index = navigation.findIndex((x) => {
+        return x.path == path;
+      });
+      if (index == -1) {
+        return _config.$Message.error("鏈壘鍒拌彍鍗�");
+      }
+      removeNav(index);
+    };
+    const setItem = (item) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      localStorage.setItem(
+        window.location.origin + "_tabs",
+        JSON.stringify(item)
+      );
+    };
+    const getItem = () => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let nav = localStorage.getItem(window.location.origin + "_tabs");
+      return nav ? JSON.parse(nav) : null;
+    };
+    const selectNav = (item) => {
+      //鍗囩骇element姝e紡鐗堜慨鏀�
+      selectId.value = item.props.name;
+      let _path = navigation[item.index].path;
+      currentMenuId.value = (
+        menuOptions.value.find((c) => {
+          return c.path == _path;
+        }) || { id: 0 }
+      ).id;
+
+      router.push({
+        path: navigation[item.index].path,
+        query: navigation[item.index].query,
+      });
+    };
+
+    const removeNav = (_index) => {
+      return new Promise(() => {
+        //鍏抽棴鐨勫綋鍓嶉」,璺宠浆鍒板墠涓�涓〉闈�
+        if (selectId.value == _index + "") {
+          console.log(navigation[_index - 1]);
+          setItem(navigation[_index - 1]);
+          router.push({
+            path: navigation[_index - 1].path,
+            //2022.06.27淇tabs浜屾鍒囨崲鍚庡弬鏁颁涪澶辩殑闂
+            query: navigation[_index - 1].query,
+          });
+          navigation.splice(_index, 1);
+          selectId.value = selectId.value - 1 + "";
+          return;
+        }
+        if (_index < selectId.value) {
+          selectId.value = selectId.value - 1 + "";
+        }
+        navigation.splice(_index, 1);
+        currentMenuId.value = (
+          menuOptions.value.find((c) => {
+            return c.path == navigation[selectId.value * 1].path;
+          }) || { id: 0 }
+        ).id;
+      });
+    };
+
+    const getSelectMenuName = (id) => {
+      return menuOptions.value.find(function (x) {
+        return x.id == id;
+      });
+    };
+    const onSelect = (treeId) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      var item = getSelectMenuName(treeId);
+      open(item, false);
+    };
+
+    /**
+     * 鏄剧ず鍙抽敭鑿滃崟
+     * @param {*} e 浜嬩欢瀵硅薄
+     */
+    const openTabsMenu = function (e) {
+      e.preventDefault(); // 闃叉榛樿鑿滃崟寮瑰嚭
+      let tabId = e.target.id.split("-")[1] * 1;
+
+      //璁板綍褰撳墠閫変腑鐨勮彍鍗昳ndex
+      selectMenuIndex.value =
+        document.getElementById("pane-" + tabId).children[0].textContent * 1;
+      //鍙湁棣栭〉鏃朵笉鏄剧ず
+      if (navigation.length == 1) {
+        return;
+      }
+
+      //棣栭〉璁剧疆鏄剧ず鍏抽棴鍙宠竟鑿滃崟
+      if (!selectMenuIndex.value) {
+        visibleItem.all = false;
+        visibleItem.right = true;
+        visibleItem.left = false;
+        visibleItem.other = false;
+      } else {
+        visibleItem.all = true;
+        //涓嶆槸鏈�鍚庝竴涓樉绀哄叧闂彸杈硅彍鍗�
+        visibleItem.right = selectMenuIndex.value != navigation.length - 1;
+        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴宸﹁竟
+        visibleItem.left = navigation.length != 2;
+        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴鍏朵粬
+        visibleItem.other = navigation.length != 2;
+      }
+      contextMenuVisible.value = true;
+      // 璁剧疆鍙抽敭鑿滃崟鏄剧ず鐨勪綅缃�
+      proxy.menuLeft =
+        e.target.getBoundingClientRect().left - (isCollapse.value ? 63 : 198); //-e.target.clientWidth
+      proxy.menuTop = 36;
+    };
+
+    /**
+     * 鍏抽棴鍙抽敭鑿滃崟
+     */
+    const closeTabsMenu = () => {
+      contextMenuVisible.value = false;
+    };
+    const toHome = () => {
+      open({
+        text: navigation[0].name,
+        path: navigation[0].path,
+      });
+    };
+    /**
+     * 鍏抽棴鍏跺畠鏍囩椤�
+     * @param {*} par 鍏抽棴绫诲瀷(left,right,other)
+     */
+    const closeTabs = (value) => {
+      let _menuId = navigation[selectId.value * 1].id;
+      let currnetIndex = selectId.value * 1; // navigation.findIndex(c => { return c.id == selectId.value });
+      switch (value) {
+        case "left": {
+          // 鍒犻櫎宸︿晶tab鏍囩
+          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+          break;
+        }
+        case "right": {
+          // 鍒犻櫎鍙充晶tab鏍囩
+          if (selectMenuIndex.value == 0) {
+            navigation.splice(currnetIndex); // 鍒犻櫎鍙充晶tab鏍囩
+            toHome();
+          } else {
+            navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩
+            if (selectMenuIndex.value < currnetIndex) {
+              navigation.splice(
+                selectMenuIndex.value,
+                currnetIndex - selectMenuIndex.value
+              );
+            }
+          }
+          break;
+        }
+        case "other": {
+          // 鍒犻櫎鍏朵粬鎵�鏈塼ab鏍囩
+          navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩(杩欓噷蹇呴』鎸夌収鍙斥啋宸﹂『搴忓垹闄�)
+          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+          break;
+        }
+        default: {
+          //鍏抽棴鎵�鏈�
+          navigation.splice(1, navigation.length);
+          toHome();
+          break;
+        }
+      }
+      selectId.value =
+        navigation.findIndex((c) => {
+          return c.id == _menuId;
+        }) + "";
+      closeTabsMenu();
+    };
+
+    watch(
+      () => contextMenuVisible.value,
+      (newVal, oldVal) => {
+        // 鐩戣
+        if (newVal) {
+          document.body.addEventListener("click", closeTabsMenu);
+        } else {
+          document.body.removeEventListener("click", closeTabsMenu);
+        }
+      }
+    );
+
+    /**
+     * 绯荤粺鍒涘缓寮�濮�
+     */
+    const created = () => {
+      let _theme = localStorage.getItem("vol3_theme");
+      if (_theme) {
+        theme.value = _theme;
+      }
+
+      let _userInfo = store.getters.getUserInfo();
+      if (_userInfo) {
+        userName.value = _userInfo.userName;
+        if (_userInfo.img) {
+          userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
+        }
+      }
+      Object.assign(_config.$tabs, { open: open, close: close });
+
+      http.get("api/Sys_Menu/getTreeMenu", {}, true).then((data) => {
+        data.push({ id: "1", name: "棣栭〉", url: "/home" }); // 涓轰簡鑾峰彇閫変腑id浣跨敤
+        data.forEach((d) => {
+          d.path = (d.url || "").replace("/Manager", "");
+          d.to = (d.url || "").replace("/Manager", "");
+          if (!d.icon || d.icon.substring(0, 3) != "el-") {
+            d.icon = "el-icon-menu";
+          }
+        });
+        store.dispatch("setPermission", data);
+        menuOptions.value = data;
+        permissionInited.value = true;
+
+        //寮�鍚秷鎭帹閫侊紙main.js涓缃槸鍚﹀紑鍚痵ignalR锛�2022.05.05
+        if (_config.$global.signalR) {
+          MessageConfig(http, (result) => {
+            messageList.unshift(result);
+            //    console.log(result)
+          });
+        }
+
+        const { startSignalr } = useSignalr()
+        startSignalr()
+
+        //褰撳墠鍒锋柊鏄笉鏄椤�
+        if (router.currentRoute.value.path != navigation[0].path) {
+          //鏌ユ壘绯荤粺鑿滃崟
+          let item = menuOptions.value.find((x) => {
+            return x.path == router.currentRoute.value.path; //this.$route.path;
+          });
+          if (item) return onSelect(item.id);
+          //鏌ユ壘椤堕儴蹇嵎杩炴帴
+          item = links.value.find((x) => {
+            return x.path == router.currentRoute.value.path; //this.$route.path;
+          });
+          //鏌ユ壘鏈�鍚庝竴娆¤烦杞殑椤甸潰
+          if (!item) {
+            item = getItem();
+          }
+          if (item) {
+            return open(item, false);
+          }
+        }
+        selectId.value = "1";
+      });
+    };
+    created();
+    return {
+      menuWidth,
+      isCollapse,
+      drawer_model,
+      theme_color,
+      errorImg,
+      userInfo,
+      userName,
+      userImg,
+      selectId,
+      selectMenuIndex,
+      navigation,
+      links,
+      onSelect,
+      openTabsMenu,
+      selectNav,
+      getSelectMenuName,
+      removeNav,
+      logo,
+      theme,
+      menuOptions,
+      permissionInited,
+      changeTheme,
+      to,
+      toggleLeft,
+      messageModel,
+      messageList,
+      contextMenuVisible,
+      visibleItem,
+      closeTabsMenu,
+      closeTabs,
+      currentMenuId,
+    };
+  },
+  /**
+   * 鎸傝浇閽╁瓙鍑芥暟
+   */
+  mounted() {
+    let _date = showTime();
+    $indexDate = document.getElementById("index-date");
+    $indexDate.innerText = _date;
+    $interval = setInterval(function () {
+      $indexDate.innerText = showTime();
+    }, 1000);
+
+    this.bindRightClickMenu(true);
+  },
+
+  methods: {
+    /**
+     * 缁戝畾鍙抽敭浜嬩欢
+     * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+     * @param {*} $event 浜嬩欢
+     */
+    bindRightClickMenu(enable) {
+      if (!enable) return;
+      let that = this;
+      // 浣跨敤鍘熺敓js 涓哄崟涓猟om缁戝畾榧犳爣鍙冲嚮浜嬩欢
+      that.$nextTick(() => {
+        let tab_top_dom = Object.assign(
+          [],
+          document.getElementsByClassName("el-tabs__item is-top")
+        );
+        tab_top_dom.forEach((item, index) => {
+          item.oncontextmenu = that.openTabsMenu;
+        });
+      });
+    },
+  },
+
+  /**
+   * 閿�姣侀挬瀛愬嚱鏁�
+   */
+  destroyed() {
+    $this = null;
+    clearInterval($interval);
+  },
+});
+const week = new Array(
+  "鏄熸湡涓�",
+  "鏄熸湡浜�",
+  "鏄熸湡涓�",
+  "鏄熸湡鍥�",
+  "鏄熸湡浜�",
+  "鏄熸湡鍏�",
+  "鏄熸湡鏃�"
+);
+function showTime() {
+  let date = new Date();
+  let year = date.getFullYear();
+  let month = date.getMonth() + 1;
+  let day = date.getDate();
+  let hour = date.getHours();
+  let minutes = date.getMinutes();
+  let second = date.getSeconds();
+
+  return (
+    year +
+    "." +
+    (month < 10 ? "0" + month : month) +
+    "." +
+    (day < 10 ? "0" + day : day) + //202.08.08淇鏃ユ湡澶╂暟灏忎簬10鏃舵坊鍔�0
+    "" +
+    " " +
+    (hour < 10 ? "0" + hour : hour) +
+    ":" +
+    (minutes < 10 ? "0" + minutes : minutes) +
+    ":" +
+    (second < 10 ? "0" + second : second) +
+    " " + //2020.08.30淇棣栭〉鏃ユ湡鏄熸湡澶╀笉鏄剧ず鐨勯棶棰�
+    (week[date.getDay() - 1] || week[6])
+  );
+}
+</script>
+
+<style lang="less" scoped>
+.vol-container .vol-path ::v-deep(.el-tabs__content) {
+  padding: 0;
+}
+
+.contextMenu {
+  width: 120px;
+  margin: 0;
+  border: 1px solid #eaeaea;
+  background: #fff;
+  z-index: 30000;
+  position: absolute;
+  list-style-type: none;
+  padding: 5px 0;
+  border-radius: 4px;
+  font-size: 14px;
+  color: #333;
+  box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%);
+
+  i,
+  button {
+    font-size: 14px !important;
+  }
+}
+
+.contextMenu li {
+  margin: 0;
+  padding: 5px 17px;
+}
+
+.contextMenu li:hover {
+  background: #fafafa;
+  cursor: pointer;
+}
+
+.contextMenu li button {
+  color: #626060;
+  font-size: 14px;
+  letter-spacing: 1px;
+}
+
+.el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child,
+.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) {
+  padding: 0;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-top) {
+  padding: 0 15px;
+}
+</style>
+<style>
+.horizontal-collapse-transition {
+  transition: 0s width ease-in-out, 0s padding-left ease-in-out,
+    0s padding-right ease-in-out;
+}
+</style>
diff --git a/Code Management/WIDESEA_WCSClient/src/views/Login.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/Login.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/Login.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/Login.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/basicinfo/router.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/basicinfo/router.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/basicinfo/router.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/basicinfo/router.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/builder/builderData.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/builder/builderData.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/builder/builderData.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/builder/builderData.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/builder/coder.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/builder/coder.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/builder/coder.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/builder/coder.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/chart.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chart.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/chart.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chart.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/chartOptions.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chartOptions.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/chartOptions.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/chartOptions.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/flex.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/flex.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/flex.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/flex.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/formChart.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formChart.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/formChart.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formChart.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/formOptions.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formOptions.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/charts/formOptions.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/charts/formOptions.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/home/home-chart-options.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/home/home-chart-options.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/home/home-chart-options.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/home/home-chart-options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/Message.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/index/Message.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/index/Message.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/index/Message.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/MessageConfig.js b/Code Management/WCS/WIDESEA_WCSClient/src/views/index/MessageConfig.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/index/MessageConfig.js
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/index/MessageConfig.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/index.less b/Code Management/WCS/WIDESEA_WCSClient/src/views/index/index.less
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/index/index.less
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/index/index.less
diff --git a/Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceInfo.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceInfo.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceInfo.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceInfo.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocol.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocol.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocol.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocol.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocolDetail.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocolDetail.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocolDetail.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/deviceProtocolDetail.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/quartzJob/dispatchInfo.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/dispatchInfo.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/quartzJob/dispatchInfo.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/quartzJob/dispatchInfo.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Permission.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Permission.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Dictionary.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Dictionary.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Dictionary.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Dictionary.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Log.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Log.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Log.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Log.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Menu.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Menu.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Menu.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Menu.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_User.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_User.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/Sys_User.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/Sys_User.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/UserInfo.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/UserInfo.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/UserInfo.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/UserInfo.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/test.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/system/test.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/system/test.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/system/test.vue
diff --git a/Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task.vue
new file mode 100644
index 0000000..b926d36
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task.vue
@@ -0,0 +1,244 @@
+
+<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/task.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "taskId",
+      footer: "Foots",
+      cnName: "浠诲姟淇℃伅",
+      name: "task",
+      url: "/Task/",
+      sortName: "CreateDate",
+    });
+    const editFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      taskType: "",
+      taskState: "",
+      wMSId: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+      grade: "",
+    });
+    const editFormOptions = ref([[{ title: "浼樺厛绾�", field: "grade", type: "int" },]]);
+    const searchFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "text" },
+        {
+          title: "浠诲姟绫诲瀷",
+          field: "taskType",
+          type: "selectList",
+          dataKey: "taskType",
+          data: [],
+        },
+        {
+          title: "浠诲姟鐘舵��",
+          field: "taskState",
+          type: "selectList",
+          dataKey: "taskState",
+          data: [],
+        },
+      ],
+      [
+        { title: "璧峰鍦板潃", field: "sourceAddress", type: "text" },
+        { title: "鐩爣鍦板潃", field: "targetAddress", type: "text" },
+        { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "text" },
+        { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "text" },
+      ],
+      [
+        { title: "宸烽亾鍙�", field: "roadway", type: "text" },
+        { title: "鍒涘缓浜�", field: "creater", type: "text" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", 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: 90,
+        align: "left",
+      },
+      {
+        field: "palletCode",
+        title: "鎵樼洏缂栧彿",
+        type: "string",
+        width: 160,
+        align: "left",
+      },
+      {
+        field: "roadway",
+        title: "宸烽亾鍙�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "taskType",
+        title: "浠诲姟绫诲瀷",
+        type: "int",
+        width: 120,
+        align: "left",
+        bind: { key: "taskType", data: [] },
+      },
+      {
+        field: "taskState",
+        title: "浠诲姟鐘舵��",
+        type: "int",
+        width: 150,
+        align: "left",
+        bind: { key: "taskState", data: [] },
+      },
+      {
+        field: "sourceAddress",
+        title: "璧峰鍦板潃",
+        type: "int",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "targetAddress",
+        title: "鐩爣鍦板潃",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "currentAddress",
+        title: "褰撳墠浣嶇疆",
+        type: "string",
+        width: 110,
+        align: "left",
+      },
+      {
+        field: "nextAddress",
+        title: "涓嬩竴浣嶇疆",
+        type: "string",
+        width: 110,
+        align: "left",
+      },
+      {
+        field: "exceptionMessage",
+        title: "寮傚父淇℃伅",
+        type: "string",
+        width: 90,
+        align: "left",
+
+      },
+      {
+        field: "grade",
+        title: "浼樺厛绾�",
+        type: "int",
+        width: 60,
+        align: "left",
+      },
+      {
+        field: "dispatchertime",
+        title: "浠诲姟涓嬪彂鏃堕棿",
+        type: "datetime",
+        width: 110,
+        align: "left",
+      },
+      {
+        field: "wMSId",
+        title: "WMS浠诲姟涓婚敭",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+
+      {
+        field: "createDate",
+        title: "鍒涘缓鏃堕棿",
+        type: "datetime",
+        width: 150,
+        align: "left",
+      },
+
+      {
+        field: "modifyDate",
+        title: "淇敼鏃堕棿",
+        type: "datetime",
+        width: 160,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "modifier",
+        title: "淇敼浜�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "remark",
+        title: "澶囨敞",
+        type: "string",
+        width: 100,
+        align: "left",
+        hidden: true,
+      },
+    ]);
+    const detail = ref({
+      cnName: "",
+      table: "",
+      columns: [],
+      sortName: "",
+      key: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+  
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/src/views/taskinfo/task_Hty.vue b/Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task_Hty.vue
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/src/views/taskinfo/task_Hty.vue
rename to Code Management/WCS/WIDESEA_WCSClient/src/views/taskinfo/task_Hty.vue
diff --git a/Code Management/WIDESEA_WCSClient/tests/unit/example.spec.js b/Code Management/WCS/WIDESEA_WCSClient/tests/unit/example.spec.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/tests/unit/example.spec.js
rename to Code Management/WCS/WIDESEA_WCSClient/tests/unit/example.spec.js
diff --git a/Code Management/WIDESEA_WCSClient/vite.config.js b/Code Management/WCS/WIDESEA_WCSClient/vite.config.js
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/vite.config.js
rename to Code Management/WCS/WIDESEA_WCSClient/vite.config.js
diff --git a/Code Management/WIDESEA_WCSClient/yarn.lock b/Code Management/WCS/WIDESEA_WCSClient/yarn.lock
similarity index 100%
rename from Code Management/WIDESEA_WCSClient/yarn.lock
rename to Code Management/WCS/WIDESEA_WCSClient/yarn.lock
diff --git a/Code Management/WIDESEA_WCSServer/.editorconfig b/Code Management/WCS/WIDESEA_WCSServer/.editorconfig
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/.editorconfig
rename to Code Management/WCS/WIDESEA_WCSServer/.editorconfig
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db
new file mode 100644
index 0000000..4fe75c8
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db
Binary files differ
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
new file mode 100644
index 0000000..df4ba66
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
Binary files differ
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
new file mode 100644
index 0000000..898f3d2
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
Binary files differ
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
new file mode 100644
index 0000000..3efccec
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
Binary files differ
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
new file mode 100644
index 0000000..361359f
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
Binary files differ
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
new file mode 100644
index 0000000..281d75a
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/config/applicationhost.config b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/config/applicationhost.config
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/config/applicationhost.config
rename to Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/config/applicationhost.config
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..0018b30
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
@@ -0,0 +1,156 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\loghelper\\loglock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\loghelper\\loglock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 0,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "Sys_DictionaryController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ViewState": "AgIAADAAAAAAAAAAAAAYwD4AAAAnAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:56:46.613Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "Task_HtyController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:53:51.112Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:53:21.484Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAIMAAAAAAAAAAAAowJoAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:57.383Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "LogLock.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:56.751Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAB8AAAAAAAAAAAAmwEYAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:23.584Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAACgAAAAAAAAAAAAQwD0AAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:54:41.878Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "appsettings.json",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\appsettings.json",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\appsettings.json",
+              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxcAAAAPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2026-04-02T02:54:26.101Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
new file mode 100644
index 0000000..88147ba
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
@@ -0,0 +1,156 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\loghelper\\loglock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\loghelper\\loglock.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{BFFDD936-2E61-4D3A-ABFE-7CF77FE0B184}|WIDESEAWCS_Core\\WIDESEAWCS_Core.csproj|solutionrelative:wideseawcs_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\wcs\\widesea_wcsserver\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}",
+      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 0,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "Sys_DictionaryController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs*",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_DictionaryController.cs*",
+              "ViewState": "AgIAAE4AAAAAAAAAAAAYwG0AAAAtAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:56:46.613Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "Task_HtyController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\Task_HtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvw0AAABXAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:53:51.112Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:53:21.484Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAIMAAAAAAAAAAAAowJoAAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:57.383Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "LogLock.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\LogHelper\\LogLock.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:56.751Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAB8AAAAAAAAAAAAmwEYAAAAMAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:23.584Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEAWCS_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAACgAAAAAAAAAAAAQwD0AAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:54:41.878Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "appsettings.json",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\appsettings.json",
+              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WCS\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\appsettings.json",
+              "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxcAAAAPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2026-04-02T02:54:26.101Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/.vscode/launch.json b/Code Management/WCS/WIDESEA_WCSServer/.vscode/launch.json
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/.vscode/launch.json
rename to Code Management/WCS/WIDESEA_WCSServer/.vscode/launch.json
diff --git a/Code Management/WIDESEA_WCSServer/LogLibrary/Log/LogFactory.cs b/Code Management/WCS/WIDESEA_WCSServer/LogLibrary/Log/LogFactory.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/LogLibrary/Log/LogFactory.cs
rename to Code Management/WCS/WIDESEA_WCSServer/LogLibrary/Log/LogFactory.cs
diff --git a/Code Management/WIDESEA_WCSServer/LogLibrary/LogLibrary.csproj b/Code Management/WCS/WIDESEA_WCSServer/LogLibrary/LogLibrary.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/LogLibrary/LogLibrary.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/LogLibrary/LogLibrary.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/Dt_StationManagerRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/Dt_StationManagerRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/Dt_StationManagerRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/Dt_StationManagerRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoRepository/WIDESEAWCS_BasicInfoRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/Dt_StationManagerService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/Dt_StationManagerService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/Dt_StationManagerService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/Dt_StationManagerService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_BasicInfoService/WIDESEAWCS_BasicInfoService.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/AreaInfo.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/AreaInfo.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/AreaInfo.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/AreaInfo.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/CateGoryConst.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/CateGoryConst.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/CateGoryConst.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/CateGoryConst.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Const/SysConfigKeyConst.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Log/WriteLog.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Log/WriteLog.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/Log/WriteLog.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/Log/WriteLog.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/StaticVariable.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/StaticVariable.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/StaticVariable.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/StaticVariable.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskEnumHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusEnum.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusGroup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusGroup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusGroup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskStatusGroup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeEnum.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeGroup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeGroup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeGroup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/TaskEnum/TaskTypeGroup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WIDESEAWCS_Common.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/WMSResponse.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WMSResponse.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Common/WMSResponse.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Common/WMSResponse.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/BaseCommunicator.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/BaseCommunicator.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/BaseCommunicator.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/BaseCommunicator.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/CommunicationException.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/CommunicationException.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/CommunicationException.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/CommunicationException.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Modbus/ModbusTcpCommunicator.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensDBDataType.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensDBDataType.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensDBDataType.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensDBDataType.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/Siemens/SiemensS7Communicator.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Communicator/WIDESEAWCS_Communicator.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/LogAOP.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/LogAOP.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/LogAOP.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/LogAOP.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/SqlSugarAop.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/SqlSugarAop.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/SqlSugarAop.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/AOP/SqlSugarAop.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/App.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/App.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/App.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/App.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Attributes/ModelValidateAttribute.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Attributes/ModelValidateAttribute.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Attributes/ModelValidateAttribute.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Attributes/ModelValidateAttribute.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationResponse.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationResponse.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationResponse.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationResponse.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/AuthorizationSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/JwtHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/JwtHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/JwtHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Authorization/JwtHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseController/ApiBaseController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseController/ApiBaseController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseController/ApiBaseController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseController/ApiBaseController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageDataOptions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageDataOptions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageDataOptions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageDataOptions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageGridData.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageGridData.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageGridData.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/PageGridData.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/Permissions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/Permissions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/Permissions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/Permissions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/SaveModel.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/SaveModel.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/SaveModel.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/SaveModel.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/WebResponseContent.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/WebResponseContent.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/WebResponseContent.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseModels/WebResponseContent.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/IRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/RepositoryBase.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/IService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/IService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/IService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/IService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceBase.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceBase.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceBase.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceBase.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceFunFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceFunFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceFunFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/BaseServices/ServiceFunFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/Caching.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/Caching.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/Caching.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/Caching.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICacheService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICacheService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICacheService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICacheService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICaching.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICaching.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICaching.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/ICaching.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/MemoryCacheService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Caches/MemoryCacheService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/AppSecret.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/AppSecret.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/AppSecret.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/AppSecret.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/CacheConst.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/CacheConst.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/CacheConst.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/CacheConst.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/ErrorMsgConst.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/ErrorMsgConst.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/ErrorMsgConst.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/ErrorMsgConst.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/HtmlElementType.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/HtmlElementType.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/HtmlElementType.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/HtmlElementType.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/SqlDbTypeName.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/SqlDbTypeName.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/SqlDbTypeName.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/SqlDbTypeName.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantConst.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantConst.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantConst.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantConst.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantStatus.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantStatus.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantStatus.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Const/TenantStatus.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/ConfigurableOptions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/ConfigurableOptions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/ConfigurableOptions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/ConfigurableOptions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/IConfigurableOptions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/IConfigurableOptions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/IConfigurableOptions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/IConfigurableOptions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/InternalApp.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/InternalApp.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/InternalApp.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Core/InternalApp.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/BaseDBConfig.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/BaseDBConfig.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/BaseDBConfig.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/BaseDBConfig.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/MainDb.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/MainDb.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/MainDb.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/MainDb.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/BaseEntity.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/BaseEntity.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/BaseEntity.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/Models/BaseEntity.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/RepositorySetting.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/RepositorySetting.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/RepositorySetting.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/DB/RepositorySetting.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/EnumHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/EnumHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/EnumHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/EnumHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/LinqExpressionType.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/LinqExpressionType.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/LinqExpressionType.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/LinqExpressionType.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/RouterInOutType.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/RouterInOutType.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/RouterInOutType.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Enums/RouterInOutType.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AllOptionRegister.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AllOptionRegister.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AllOptionRegister.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AllOptionRegister.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/ApplicationSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/ApplicationSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/ApplicationSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/ApplicationSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AutofacModuleRegister.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AutofacModuleRegister.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AutofacModuleRegister.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/AutofacModuleRegister.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/CorsSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/CorsSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/CorsSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/CorsSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/DbSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/DbSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/DbSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/DbSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextExtension.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextExtension.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextExtension.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextExtension.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/HttpContextSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/InitializationHostServiceSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/InitializationHostServiceSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/InitializationHostServiceSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/InitializationHostServiceSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/IpPolicyRateLimitSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/IpPolicyRateLimitSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/IpPolicyRateLimitSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/IpPolicyRateLimitSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MemoryCacheSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MemoryCacheSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MemoryCacheSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MemoryCacheSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MiniProfilerSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MiniProfilerSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MiniProfilerSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/MiniProfilerSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SqlsugarSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerContextExtension.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerContextExtension.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerContextExtension.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerContextExtension.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Extensions/SwaggerSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ActionExecuteFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ActionExecuteFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ActionExecuteFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ActionExecuteFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ApiAuthorizeFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ApiAuthorizeFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ApiAuthorizeFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ApiAuthorizeFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ExporterHeaderFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ExporterHeaderFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ExporterHeaderFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/ExporterHeaderFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/GlobalExceptionsFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/GlobalExceptionsFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/GlobalExceptionsFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/GlobalExceptionsFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/UseServiceDIAttribute.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/UseServiceDIAttribute.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/UseServiceDIAttribute.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Filter/UseServiceDIAttribute.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/AppSettings.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/AppSettings.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/AppSettings.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/AppSettings.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ConsoleHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ConsoleHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ConsoleHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ConsoleHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ExportHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ExportHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ExportHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ExportHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/FileHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/FileHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/FileHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/FileHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpContextHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpContextHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpContextHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpContextHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/HttpHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/MethodInfoExtensions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/MethodInfoExtensions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/MethodInfoExtensions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/MethodInfoExtensions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ObjectExtension.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ObjectExtension.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ObjectExtension.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/ObjectExtension.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/RuntimeExtension.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/RuntimeExtension.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/RuntimeExtension.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/RuntimeExtension.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/SecurityEncDecryptHelper.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/SecurityEncDecryptHelper.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/SecurityEncDecryptHelper.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/SecurityEncDecryptHelper.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/UtilConvert.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/UtilConvert.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/UtilConvert.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Helper/UtilConvert.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HostedService/SeedDataHostedService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HostedService/SeedDataHostedService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HostedService/SeedDataHostedService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HostedService/SeedDataHostedService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/AspNetUser.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/IUser.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/IUser.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/IUser.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/HttpContextUser/IUser.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/IDependency.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/IDependency.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/IDependency.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/IDependency.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogAPI.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogAPI.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogAPI.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogAPI.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogLock.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogLock.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogLock.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/LogLock.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/Logger.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/Logger.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/Logger.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/Logger.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/QuartzLogger.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/QuartzLogger.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/QuartzLogger.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/QuartzLogger.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ApiLogMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ExceptionHandlerMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ExceptionHandlerMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ExceptionHandlerMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/ExceptionHandlerMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/HttpRequestMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/HttpRequestMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/HttpRequestMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/HttpRequestMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/IpLimitMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/IpLimitMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/IpLimitMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/IpLimitMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/JwtTokenAuthMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/JwtTokenAuthMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/JwtTokenAuthMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/JwtTokenAuthMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/MiddlewareHelpers.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/MiddlewareHelpers.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/MiddlewareHelpers.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/MiddlewareHelpers.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerAuthMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerAuthMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerAuthMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerAuthMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerMiddleware.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerMiddleware.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerMiddleware.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Middlewares/SwaggerMiddleware.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBContext.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBContext.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBContext.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBContext.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBSeed.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBSeed.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBSeed.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/DBSeed.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/FrameSeed.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/FrameSeed.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/FrameSeed.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Seed/FrameSeed.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/ITenantEntity.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/ITenantEntity.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/ITenantEntity.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/ITenantEntity.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/MultiTenantAttribute.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/MultiTenantAttribute.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/MultiTenantAttribute.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/MultiTenantAttribute.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/TenantUtil.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/TenantUtil.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/TenantUtil.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Tenants/TenantUtil.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/EntityProperties.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/EntityProperties.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/EntityProperties.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/EntityProperties.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/LambdaExtensions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/LambdaExtensions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/LambdaExtensions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/LambdaExtensions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/ModelValidate.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/ModelValidate.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/ModelValidate.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/ModelValidate.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/VierificationCode.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/VierificationCode.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/VierificationCode.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/Utilities/VierificationCode.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core - Backup.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Core/WIDESEAWCS_Core.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AGVReceiveDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/AgvRespone.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/AGV/SendTask.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/MES/MESTaskDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/MES/MESTaskDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/MES/MESTaskDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/MES/MESTaskDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/StackerCarneTaskDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/MenuDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/MenuDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/MenuDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/MenuDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/VueDictionaryDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/TaskInfo/WMSTaskDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WIDESEAWCS_DTO.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_DTO/WMS/RequestTaskDto.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/IDt_StationManagerRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoRepository/WIDESEAWCS_IBasicInfoRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/IDt_StationManagerService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_IBasicInfoService/WIDESEAWCS_IBasicInfoService.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_ConfigRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DelLogRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DelLogRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DelLogRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DelLogRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryListRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryListRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryListRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryListRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_DictionaryRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_LogRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_LogRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_LogRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_LogRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_MenuRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleAuthRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleAuthRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleAuthRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleAuthRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_RoleRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_TenantRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_TenantRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_TenantRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_TenantRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_UserRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_UserRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_UserRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/ISys_UserRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemRepository/WIDESEAWCS_ISystemRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_ConfigService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DelLogService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DelLogService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DelLogService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DelLogService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryListService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryListService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryListService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryListService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_DictionaryService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_LogService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_LogService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_LogService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_LogService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_MenuService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_MenuService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleAuthService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleAuthService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleAuthService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleAuthService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_RoleService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_TenantService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_TenantService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_TenantService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_TenantService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_UserService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_UserService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_UserService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/ISys_UserService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ISystemServices/WIDESEAWCS_ISystemServices.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskExecuteDetailRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskExecuteDetailRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskExecuteDetailRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskExecuteDetailRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITaskRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITask_HtyRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITask_HtyRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITask_HtyRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/ITask_HtyRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoRepository/WIDESEAWCS_ITaskInfoRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskExecuteDetailService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITaskService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITask_HtyService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITask_HtyService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITask_HtyService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/ITask_HtyService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_ITaskInfoService/WIDESEAWCS_ITaskInfoService.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/LoginInfo.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/LoginInfo.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/LoginInfo.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/LoginInfo.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManager.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManager.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManager.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/BasicInfo/Dt_StationManager.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleAuthor.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleAuthor.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleAuthor.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleAuthor.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleNodes.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleNodes.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleNodes.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/RoleNodes.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Actions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Actions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Actions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Actions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Config.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Config.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Config.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Config.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DelLog.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DelLog.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DelLog.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DelLog.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Department.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Department.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Department.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Department.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Dictionary.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Dictionary.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Dictionary.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Dictionary.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_DictionaryList.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Log.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Log.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Log.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Log.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Menu.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Menu.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Menu.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Menu.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Role.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Role.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Role.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Role.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_RoleAuth.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_RoleAuth.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_RoleAuth.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_RoleAuth.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Tenant.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Tenant.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Tenant.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_Tenant.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_User.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_User.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_User.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/Sys_User.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/UserPermissions.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/UserPermissions.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/UserPermissions.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/System/UserPermissions.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskExecuteDetail.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskExecuteDetail.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskExecuteDetail.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_TaskExecuteDetail.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/Models/TaskInfo/Dt_Task_Hty.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Model/WIDESEAWCS_Model.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_After.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_BZ.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_BZ.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_BZ.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_BZ.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_GW.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_GW.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_GW.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/CommonConveyorLine_GW.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/Enum/ConveyorLineStatus.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/Enum/ConveyorLineStatus.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/Enum/ConveyorLineStatus.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/Enum/ConveyorLineStatus.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/IConveyorLine.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/IConveyorLine.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/IConveyorLine.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ConveyorLine/IConveyorLine.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/CustomException/QuartzJobException.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/CustomException/QuartzJobException.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/CustomException/QuartzJobException.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/CustomException/QuartzJobException.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceInfoDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceInfoDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceInfoDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceInfoDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProtocolDetailDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProtocolDetailDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProtocolDetailDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DeviceProtocolDetailDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchInfoDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchInfoDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchInfoDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchInfoDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchStatusDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchStatusDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchStatusDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/DispatchStatusDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DTO/RoutersAddDTO.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/CustomException/StackerCraneException.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/CustomException/StackerCraneException.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/CustomException/StackerCraneException.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/CustomException/StackerCraneException.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DataLengthAttribute.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DataLengthAttribute.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DataLengthAttribute.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DataLengthAttribute.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceCommand.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceCommand.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceCommand.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceCommand.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceStatus.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceStatus.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceStatus.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/DeviceStatus.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceBase/IDevice.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceEnum/DeviceStatus.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceEnum/DeviceStatus.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceEnum/DeviceStatus.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/DeviceEnum/DeviceStatus.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevator.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevator.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevator.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevator.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevatorNew.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevatorNew.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevatorNew.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/CommonElevatorNew.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/ICommonElevator.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/ICommonElevator.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/ICommonElevator.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Elevator/ICommonElevator.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/JobBase.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/JobBase.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/JobBase.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/JobBase.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceInfo.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceInfo.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceInfo.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceInfo.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocol.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocol.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocol.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocol.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocolDetail.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocolDetail.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocolDetail.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DeviceProtocolDetail.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DispatchInfo.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DispatchInfo.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DispatchInfo.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_DispatchInfo.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Models/Dt_Router.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/IOtherDevice.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/IOtherDevice.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/IOtherDevice.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/IOtherDevice.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/OtherDevice.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/OtherDevice.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/OtherDevice.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/OtherDevices/OtherDevice.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/JobSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/JobSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/JobSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/JobSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobAutofacModuleRegister.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobAutofacModuleRegister.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobAutofacModuleRegister.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobAutofacModuleRegister.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobDataTableHostedService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobDataTableHostedService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobDataTableHostedService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobDataTableHostedService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobHostedService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobHostedService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobHostedService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzExtensions/QuartzJobHostedService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/ISchedulerCenter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/ISchedulerCenter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/ISchedulerCenter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/ISchedulerCenter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/JobFactory.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/QuartzNet/SchedulerCenterServer.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/CommonRGV.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/CommonRGV.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/CommonRGV.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/CommonRGV.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/RGV/ICommonRGV.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceInfoRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceInfoRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceInfoRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceInfoRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolDetailRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolDetailRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolDetailRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolDetailRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DeviceProtocolRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DispatchInfoRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DispatchInfoRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DispatchInfoRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/DispatchInfoRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceInfoRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceInfoRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceInfoRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceInfoRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolDetailRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolDetailRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolDetailRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolDetailRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDeviceProtocolRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDispatchInfoRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDispatchInfoRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDispatchInfoRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IDispatchInfoRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/IRouterRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Repository/RouterRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Seed/QuartzJobCreateDataTabel.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Seed/QuartzJobCreateDataTabel.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Seed/QuartzJobCreateDataTabel.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Seed/QuartzJobCreateDataTabel.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceInfoService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolDetailService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolDetailService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolDetailService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolDetailService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DeviceProtocolService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/DispatchInfoService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceInfoService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolDetailService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolDetailService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolDetailService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolDetailService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDeviceProtocolService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IDispatchInfoService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IRouterService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/IRouterService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/RouterService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/RouterService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/RouterService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Service/RouterService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/IShuttleCar.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/IShuttleCar.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/IShuttleCar.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/IShuttleCar.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/ShuttleCar.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/ShuttleCar.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/ShuttleCar.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/ShuttleCar/ShuttleCar.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerCrane.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerStationCrane.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerStationCrane.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerStationCrane.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Common/CommonStackerStationCrane.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Enum/StackerCraneStatus.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Enum/StackerCraneStatus.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Enum/StackerCraneStatus.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Enum/StackerCraneStatus.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/IStackerCrane.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/IStackerCrane.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/IStackerCrane.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/IStackerCrane.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Spec/SpeStackerCrane.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Spec/SpeStackerCrane.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Spec/SpeStackerCrane.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/Spec/SpeStackerCrane.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/StackerCraneTaskCompletedEventArgs.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/StackerCraneTaskCompletedEventArgs.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/StackerCraneTaskCompletedEventArgs.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/StackerCrane/StackerCraneTaskCompletedEventArgs.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Storage.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Storage.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Storage.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Storage.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/WIDESEAWCS_QuartzJob.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server.sln b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server.sln
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server.sln
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server.sln
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/.config/dotnet-tools.json b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/.config/dotnet-tools.json
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/.config/dotnet-tools.json
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/.config/dotnet-tools.json
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/AGV/AGVController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/Dt_StationManagerController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/Dt_StationManagerController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/Dt_StationManagerController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/Dt_StationManagerController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/BasicInfo/RouterController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceInfoController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolDetailController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolDetailController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolDetailController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DeviceProtocolDetailController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/QuartzJob/DispatchInfoController.cs
diff --git a/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
new file mode 100644
index 0000000..a03b8df
--- /dev/null
+++ b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
@@ -0,0 +1,499 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.DependencyModel;
+using Newtonsoft.Json;
+using System.Reflection;
+using WIDESEAWCS_Core.BaseController;
+using WIDESEAWCS_Core.Helper;
+using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_Model.Models;
+using System.IO;
+using WIDESEAWCS_QuartzJob.DeviceBase;
+using WIDESEAWCS_DTO.System;
+using System.ComponentModel;
+using System.Collections.Generic;
+using WIDESEAWCS_Communicator;
+using Quartz;
+using WIDESEAWCS_QuartzJob;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using WIDESEAWCS_Core.Enums;
+using WIDESEAWCS_Core.Caches;
+using WIDESEAWCS_QuartzJob.DeviceEnum;
+using WIDESEAWCS_Common.TaskEnum;
+
+namespace WIDESEAWCS_WCSServer.Controllers.System
+{
+    [Route("api/Sys_Dictionary")]
+    [ApiController]
+    public class Sys_DictionaryController : ApiBaseController<ISys_DictionaryService, Sys_Dictionary>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly ICacheService _cacheService;
+
+        public Sys_DictionaryController(ISys_DictionaryService service, IHttpContextAccessor httpContextAccessor, ICacheService cacheService) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _cacheService = cacheService;
+        }
+
+        [HttpPost, Route("GetVueDictionary"), AllowAnonymous]
+        public IActionResult GetVueDictionary([FromBody] string[] dicNos)
+        {
+            List<VueDictionaryDTO> vueDictionaryDTOs = Service.GetVueDictionary(dicNos);
+            try
+            {
+                // 浣跨敤 HashSet 鏉ヨ窡韪凡娣诲姞鐨勬暟鎹紝閬垮厤閲嶅
+                HashSet<string> addedDicNos = new HashSet<string>();
+                List<string> cacheDicNos = new List<string>();
+
+                // 鍏堜粠缂撳瓨涓幏鍙栨暟鎹�
+                foreach (string n in dicNos)
+                {
+                    string str = _cacheService.Get(n);
+                    if (!string.IsNullOrEmpty(str))
+                    {
+                        VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                        if (vueDictionary != null && !addedDicNos.Contains(vueDictionary.DicNo))
+                        {
+                            vueDictionaryDTOs.Add(vueDictionary);
+                            cacheDicNos.Add(n);
+                            addedDicNos.Add(vueDictionary.DicNo);
+                        }
+                    }
+                }
+
+                // 澶勭悊鏈粠缂撳瓨鑾峰彇鍒扮殑鏁版嵁
+                List<string> dicList = dicNos.ToList();
+                if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
+                {
+                    string str = AppSettings.Configuration["dics"];
+                    if (!string.IsNullOrEmpty(str))
+                    {
+                        List<string> cusDics = new List<string>();
+                        List<string> dics = str.Split(",").ToList();
+
+                        foreach (var item in dics)
+                        {
+                            dicList.Remove(item);
+                            cusDics.Add(item);
+                        }
+
+                        foreach (var item in cusDics)
+                        {
+                            // 妫�鏌ユ槸鍚﹀凡缁忔坊鍔犺繃
+                            if (!addedDicNos.Contains(item.Trim()))
+                            {
+                                VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
+                                if (vueDictionaryDTO != null && !addedDicNos.Contains(vueDictionaryDTO.DicNo))
+                                {
+                                    vueDictionaryDTOs.Add(vueDictionaryDTO);
+                                    addedDicNos.Add(vueDictionaryDTO.DicNo);
+
+                                    if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache)
+                                    {
+                                        _cacheService.Add(item, vueDictionaryDTO.Serialize());
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                // 寤鸿璁板綍鏃ュ織锛岃�屼笉鏄┖catch
+                // _logger.LogError(ex, "鑾峰彇VueDictionary澶辫触");
+            }
+            return Json(vueDictionaryDTOs);
+        }
+
+        private VueDictionaryDTO? GetVueDictionary(string key)
+        {
+            VueDictionaryDTO? result = null;
+            try
+            {
+                switch (key)
+                {
+                    case "deviceType":
+                        {
+                            Type type = typeof(IDevice);
+                            var basePath = AppContext.BaseDirectory;
+                            //string path = Path.Combine("", Assembly.GetAssembly(type).GetName());
+                            Assembly assembly = Assembly.GetAssembly(type);
+                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
+                            List<object> data = new List<object>();
+                            foreach (var deviceType in types)
+                            {
+                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = deviceType.Name, value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = deviceType.Name, value = deviceType.Name });
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "jobAssembly":
+                        {
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = new List<object>() { new { key = "WIDESEAWCS_Tasks", value = "WIDESEAWCS_Tasks" } } };
+
+                        }
+                        break;
+                    case "jobClassName":
+                        {
+                            Type type = typeof(IJob);
+                            var basePath = AppContext.BaseDirectory;
+                            string path = Path.Combine(basePath, $"WIDESEAWCS_Tasks");
+                            Assembly assembly = Assembly.LoadFrom(path);
+                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = types.Select(x => new { key = x.Name, value = x.Name }) };
+                        }
+                        break;
+                    case "deviceStatus":
+                        {
+                            List<object> data = new List<object>();
+                            Type type = typeof(DeviceStatusEnum);
+                            List<int> enums = Enum.GetValues(type).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = type.GetField(((DeviceStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "taskType":
+                        {
+                            List<object> data = new List<object>();
+
+                            #region TaskInboundTypeEnum
+                            {
+                                Type type = typeof(TaskInboundTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskOutboundTypeEnum
+                            {
+                                Type type = typeof(TaskOutboundTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskRelocationTypeEnum
+                            {
+                                Type type = typeof(TaskRelocationTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskOtherTypeEnum
+                            {
+                                Type type = typeof(TaskOtherTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskAGVCarryTypeEnum
+                            {
+                                Type type = typeof(TaskAGVCarryTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskAGVCarryTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskAGVCarryTypeEnum).GetField(((TaskAGVCarryTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskAcrossFloorTypeEnum
+                            {
+                                Type type = typeof(TaskAcrossFloorTypeEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorTypeEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskAcrossFloorTypeEnum).GetField(((TaskAcrossFloorTypeEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "taskState":
+                        {
+                            List<object> data = new List<object>();
+
+                            #region TaskInStatusEnum
+                            {
+                                Type type = typeof(TaskInStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskOutStatusEnum
+                            {
+                                Type type = typeof(TaskOutStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskRelocationStatusEnum
+                            {
+                                Type type = typeof(TaskRelocationStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskRelocationStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskRelocationStatusEnum).GetField(((TaskRelocationStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskAGVCarryStatusEnum
+                            {
+                                Type type = typeof(TaskAGVCarryStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskAGVCarryStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskAGVCarryStatusEnum).GetField(((TaskAGVCarryStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            #region TaskAcrossFloorStatusEnum
+                            {
+                                Type type = typeof(TaskAcrossFloorStatusEnum);
+                                List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorStatusEnum)).Cast<int>().ToList();
+                                int index = 0;
+                                foreach (var item in enums)
+                                {
+                                    FieldInfo? fieldInfo = typeof(TaskAcrossFloorStatusEnum).GetField(((TaskAcrossFloorStatusEnum)item).ToString());
+                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                    if (description != null)
+                                    {
+                                        data.Add(new { key = item.ToString(), value = description.Description });
+                                    }
+                                    else
+                                    {
+                                        data.Add(new { key = item.ToString(), value = item.ToString() });
+                                    }
+                                    index++;
+                                }
+                            }
+                            #endregion
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+
+                    case "devicePlcType":
+                        {
+                            Type type = typeof(BaseCommunicator);
+                            var basePath = AppContext.BaseDirectory;
+                            string path = Path.Combine(basePath, $"WIDESEAWCS_Communicator.dll");
+                            Assembly assembly = Assembly.LoadFrom(path);
+                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
+                            List<object> data = new List<object>();
+                            foreach (var deviceType in types)
+                            {
+                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = deviceType.Name, value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = deviceType.Name, value = deviceType.Name });
+                                }
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                    case "inOutType":
+                        {
+                            List<object> data = new List<object>();
+                            Type type = typeof(RouterInOutType);
+                            List<int> enums = Enum.GetValues(typeof(RouterInOutType)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(RouterInOutType).GetField(((RouterInOutType)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+
+                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                        }
+                        break;
+                }
+                return result;
+            }
+            catch (Exception ex)
+            {
+                return null;
+            }
+        }
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryListController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryListController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryListController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryListController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_LogController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_LogController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_LogController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_LogController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_MenuController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleAuthController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleAuthController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleAuthController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleAuthController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_RoleController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_TenantController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_TenantController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_TenantController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_TenantController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_UserController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_UserController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_UserController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_UserController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskExecuteDetailController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskExecuteDetailController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskExecuteDetailController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/TaskExecuteDetailController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/Task_HtyController.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/Task_HtyController.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/Task_HtyController.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/Task/Task_HtyController.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperConfig.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperConfig.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperConfig.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperConfig.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutoMapperSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutofacPropertityModuleReg.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutofacPropertityModuleReg.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutofacPropertityModuleReg.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/AutofacPropertityModuleReg.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomAuthorizeFilter.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomAuthorizeFilter.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomAuthorizeFilter.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomAuthorizeFilter.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomProfile.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomProfile.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomProfile.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Filter/CustomProfile.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/HostedService/WebSocketSetup.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/HostedService/WebSocketSetup.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/HostedService/WebSocketSetup.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/HostedService/WebSocketSetup.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Program.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Program.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Program.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Program.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile1.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile6.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile6.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile6.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile6.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/launchSettings.json b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/launchSettings.json
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/launchSettings.json
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/launchSettings.json
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/WIDESEAWCS_Server.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.json b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.json
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.json
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.json
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/index.html b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/index.html
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/index.html
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/index.html
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceInfo.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceInfo.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceInfo.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceInfo.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocol.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocol.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocol.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocol.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocolDetail.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocolDetail.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocolDetail.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DeviceProtocolDetail.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DispatchInfo.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DispatchInfo.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DispatchInfo.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_DispatchInfo.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Router.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Router.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Router.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Router.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Task.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Task.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Task.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_Task.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_TaskExecuteDetail.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_TaskExecuteDetail.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_TaskExecuteDetail.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Dt_TaskExecuteDetail.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Dictionary.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Dictionary.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Dictionary.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Dictionary.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_DictionaryList.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_DictionaryList.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_DictionaryList.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_DictionaryList.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Menu.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Menu.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Menu.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Menu.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Role.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Role.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Role.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_Role.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_RoleAuth.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_RoleAuth.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_RoleAuth.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_RoleAuth.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_User.tsv b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_User.tsv
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_User.tsv
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/WIDESEAWCS_DB.DBSeed.Json/Sys_User.tsv
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/favicon.ico b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/favicon.ico
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/favicon.ico
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/favicon.ico
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/logo.jpg.jpg
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/swg-login.html b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/swg-login.html
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/swg-login.html
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/swg-login.html
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/GlobalUsing.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/GlobalUsing.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/GlobalUsing.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/GlobalUsing.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/ISimpleHub.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/ISimpleHub.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/ISimpleHub.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/ISimpleHub.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/SimpleHub.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/SimpleHub.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/SimpleHub.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Hub/SimpleHub.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Provider/UserIdProvider.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Provider/UserIdProvider.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Provider/UserIdProvider.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Provider/UserIdProvider.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/INoticeService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/INoticeService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/INoticeService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/INoticeService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/SignalrNoticeService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/SignalrNoticeService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/SignalrNoticeService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/Service/SignalrNoticeService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SignalR/WIDESEAWCS_SignalR.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_ConfigRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DelLogRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DelLogRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DelLogRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DelLogRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryListRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryListRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryListRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryListRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_DictionaryRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_LogRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_LogRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_LogRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_LogRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_MenuRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleAuthRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleAuthRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleAuthRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleAuthRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_RoleRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_TenantRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_TenantRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_TenantRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_TenantRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_UserRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_UserRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_UserRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/Sys_UserRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemRepository/WIDESEAWCS_SystemRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_ConfigService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_ConfigService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_ConfigService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_ConfigService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DelLogService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DelLogService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DelLogService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DelLogService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryListService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryListService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryListService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryListService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_DictionaryService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_LogService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_LogService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_LogService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_LogService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_MenuService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_MenuService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_MenuService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_MenuService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleAuthService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleAuthService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleAuthService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleAuthService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_RoleService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_TenantService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_TenantService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_TenantService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_TenantService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_UserService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_UserService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_UserService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/Sys_UserService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_SystemServices/WIDESEAWCS_SystemServices.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskExecuteDetailRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskExecuteDetailRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskExecuteDetailRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskExecuteDetailRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/TaskRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/Task_HtyRepository.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/Task_HtyRepository.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/Task_HtyRepository.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/Task_HtyRepository.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoRepository/WIDESEAWCS_TaskInfoRepository.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Properties/PublishProfiles/FolderProfile.pubxml
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskExecuteDetailService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/TaskService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Task_HtyService.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Task_HtyService.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Task_HtyService.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/Task_HtyService.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_TaskInfoService/WIDESEAWCS_TaskInfoService.csproj
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/AGVSignal.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/AGVSignal.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/AGVSignal.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/AGVSignal.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/CommonAGVJob.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/IAGVSignal.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/IAGVSignal.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/IAGVSignal.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/AGV/IAGVSignal.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/CommonConveyorLineJob.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineDBName.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineDBName.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineDBName.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineDBName.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/ConveyorLineJob/ConveyorLineTaskCommand.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/DeleteLog/CommonDeleteLogJob.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/DeleteLog/CommonDeleteLogJob.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/DeleteLog/CommonDeleteLogJob.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/DeleteLog/CommonDeleteLogJob.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/CommonOtherDevicesJob.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/CommonOtherDevicesJob.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/CommonOtherDevicesJob.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/CommonOtherDevicesJob.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/OtherDeviceDBName.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/OtherDeviceDBName.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/OtherDeviceDBName.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/OtherDeviceJob/OtherDeviceDBName.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneDBName.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/StackerCraneJob/StackerCraneTaskCommand.cs
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj b/Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
similarity index 100%
rename from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
rename to Code Management/WCS/WIDESEA_WCSServer/WIDESEAWCS_Tasks/WIDESEAWCS_Tasks.csproj
diff --git a/Code Management/WIDESEA_WCSClient/package-lock.json b/Code Management/WIDESEA_WCSClient/package-lock.json
deleted file mode 100644
index b3d87cd..0000000
--- a/Code Management/WIDESEA_WCSClient/package-lock.json
+++ /dev/null
@@ -1,3661 +0,0 @@
-{
-  "name": "wideseawcs",
-  "version": "0.1.0",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@adobe/css-tools": {
-      "version": "4.3.3",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@adobe/css-tools/-/css-tools-4.3.3.tgz",
-      "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==",
-      "dev": true
-    },
-    "@babel/helper-string-parser": {
-      "version": "7.27.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
-      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
-      "dev": true
-    },
-    "@babel/parser": {
-      "version": "7.18.11",
-      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz",
-      "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
-    },
-    "@ctrl/tinycolor": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
-      "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
-    },
-    "@element-plus/icons-vue": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
-      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA=="
-    },
-    "@esbuild/android-arm": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
-      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/android-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
-      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/android-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
-      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/darwin-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
-      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/darwin-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
-      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/freebsd-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
-      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/freebsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
-      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-arm": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
-      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
-      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-ia32": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
-      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-loong64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
-      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-mips64el": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
-      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-ppc64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
-      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-riscv64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
-      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-s390x": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
-      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/linux-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
-      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/netbsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
-      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/openbsd-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
-      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/sunos-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
-      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/win32-arm64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
-      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/win32-ia32": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
-      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
-      "dev": true,
-      "optional": true
-    },
-    "@esbuild/win32-x64": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
-      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@eslint-community/eslint-utils": {
-      "version": "4.9.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
-      "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
-      "dev": true,
-      "requires": {
-        "eslint-visitor-keys": "^3.4.3"
-      },
-      "dependencies": {
-        "eslint-visitor-keys": {
-          "version": "3.4.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-          "dev": true
-        }
-      }
-    },
-    "@eslint-community/regexpp": {
-      "version": "4.12.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
-      "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
-      "dev": true
-    },
-    "@eslint/eslintrc": {
-      "version": "2.1.4",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
-      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
-      "dev": true,
-      "requires": {
-        "ajv": "^6.12.4",
-        "debug": "^4.3.2",
-        "espree": "^9.6.0",
-        "globals": "^13.19.0",
-        "ignore": "^5.2.0",
-        "import-fresh": "^3.2.1",
-        "js-yaml": "^4.1.0",
-        "minimatch": "^3.1.2",
-        "strip-json-comments": "^3.1.1"
-      },
-      "dependencies": {
-        "argparse": {
-          "version": "2.0.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
-          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-          "dev": true
-        },
-        "globals": {
-          "version": "13.24.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
-          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "ignore": {
-          "version": "5.3.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
-          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-          "dev": true
-        },
-        "import-fresh": {
-          "version": "3.3.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/import-fresh/-/import-fresh-3.3.1.tgz",
-          "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
-          "dev": true,
-          "requires": {
-            "parent-module": "^1.0.0",
-            "resolve-from": "^4.0.0"
-          }
-        },
-        "js-yaml": {
-          "version": "4.1.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
-          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
-          "dev": true,
-          "requires": {
-            "argparse": "^2.0.1"
-          }
-        },
-        "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "resolve-from": {
-          "version": "4.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz",
-          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-          "dev": true
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
-          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-          "dev": true
-        }
-      }
-    },
-    "@eslint/js": {
-      "version": "8.57.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/js/-/js-8.57.1.tgz",
-      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
-      "dev": true
-    },
-    "@floating-ui/core": {
-      "version": "0.7.3",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz",
-      "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
-    },
-    "@floating-ui/dom": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz",
-      "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
-      "requires": {
-        "@floating-ui/core": "^0.7.3"
-      }
-    },
-    "@humanwhocodes/config-array": {
-      "version": "0.13.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
-      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
-      "dev": true,
-      "requires": {
-        "@humanwhocodes/object-schema": "^2.0.3",
-        "debug": "^4.3.1",
-        "minimatch": "^3.0.5"
-      },
-      "dependencies": {
-        "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        }
-      }
-    },
-    "@humanwhocodes/module-importer": {
-      "version": "1.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
-      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
-      "dev": true
-    },
-    "@humanwhocodes/object-schema": {
-      "version": "2.0.3",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
-      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
-      "dev": true
-    },
-    "@isaacs/cliui": {
-      "version": "8.0.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@isaacs/cliui/-/cliui-8.0.2.tgz",
-      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
-      "dev": true,
-      "requires": {
-        "string-width": "^5.1.2",
-        "string-width-cjs": "npm:string-width@^4.2.0",
-        "strip-ansi": "^7.0.1",
-        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
-        "wrap-ansi": "^8.1.0",
-        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-          "dev": true
-        },
-        "string-width-cjs": {
-          "version": "npm:string-width@4.2.3",
-          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
-          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.1"
-          },
-          "dependencies": {
-            "is-fullwidth-code-point": {
-              "version": "3.0.0",
-              "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-              "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-              "dev": true
-            },
-            "strip-ansi": {
-              "version": "6.0.1",
-              "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-              "dev": true,
-              "requires": {
-                "ansi-regex": "^5.0.1"
-              }
-            }
-          }
-        },
-        "strip-ansi-cjs": {
-          "version": "npm:strip-ansi@6.0.1",
-          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.1"
-          }
-        },
-        "wrap-ansi": {
-          "version": "8.1.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
-          "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^6.1.0",
-            "string-width": "^5.0.1",
-            "strip-ansi": "^7.0.1"
-          }
-        }
-      }
-    },
-    "@jridgewell/sourcemap-codec": {
-      "version": "1.5.5",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
-      "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
-      "dev": true
-    },
-    "@microsoft/signalr": {
-      "version": "6.0.4",
-      "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.4.tgz",
-      "integrity": "sha512-YeWRh4LxfYnq4I5CKw17/HOq8rY+ouTv6Bq+s55122StE3pK29j8j2OpP+1PA3D1ksHPfy7dFIgC33yr/E+01A==",
-      "requires": {
-        "abort-controller": "^3.0.0",
-        "eventsource": "^1.0.7",
-        "fetch-cookie": "^0.11.0",
-        "node-fetch": "^2.6.7",
-        "ws": "^7.4.5"
-      }
-    },
-    "@nodelib/fs.scandir": {
-      "version": "2.1.5",
-      "resolved": "https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz",
-      "integrity": "sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.stat": "2.0.5",
-        "run-parallel": "^1.1.9"
-      },
-      "dependencies": {
-        "@nodelib/fs.stat": {
-          "version": "2.0.5",
-          "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.5.tgz",
-          "integrity": "sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=",
-          "dev": true
-        }
-      }
-    },
-    "@nodelib/fs.walk": {
-      "version": "1.2.8",
-      "resolved": "https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625769855088&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz",
-      "integrity": "sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=",
-      "dev": true,
-      "requires": {
-        "@nodelib/fs.scandir": "2.1.5",
-        "fastq": "^1.6.0"
-      }
-    },
-    "@parcel/watcher": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.4.1.tgz",
-      "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
-      "dev": true,
-      "requires": {
-        "@parcel/watcher-android-arm64": "2.4.1",
-        "@parcel/watcher-darwin-arm64": "2.4.1",
-        "@parcel/watcher-darwin-x64": "2.4.1",
-        "@parcel/watcher-freebsd-x64": "2.4.1",
-        "@parcel/watcher-linux-arm-glibc": "2.4.1",
-        "@parcel/watcher-linux-arm64-glibc": "2.4.1",
-        "@parcel/watcher-linux-arm64-musl": "2.4.1",
-        "@parcel/watcher-linux-x64-glibc": "2.4.1",
-        "@parcel/watcher-linux-x64-musl": "2.4.1",
-        "@parcel/watcher-win32-arm64": "2.4.1",
-        "@parcel/watcher-win32-ia32": "2.4.1",
-        "@parcel/watcher-win32-x64": "2.4.1",
-        "detect-libc": "^1.0.3",
-        "is-glob": "^4.0.3",
-        "micromatch": "^4.0.5",
-        "node-addon-api": "^7.0.0"
-      },
-      "dependencies": {
-        "braces": {
-          "version": "3.0.3",
-          "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
-          "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
-          "dev": true,
-          "requires": {
-            "fill-range": "^7.1.1"
-          }
-        },
-        "fill-range": {
-          "version": "7.1.1",
-          "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
-          "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
-          "dev": true,
-          "requires": {
-            "to-regex-range": "^5.0.1"
-          }
-        },
-        "is-glob": {
-          "version": "4.0.3",
-          "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
-          "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-          "dev": true,
-          "requires": {
-            "is-extglob": "^2.1.1"
-          }
-        },
-        "is-number": {
-          "version": "7.0.0",
-          "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
-          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-          "dev": true
-        },
-        "micromatch": {
-          "version": "4.0.8",
-          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
-          "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
-          "dev": true,
-          "requires": {
-            "braces": "^3.0.3",
-            "picomatch": "^2.3.1"
-          }
-        },
-        "picomatch": {
-          "version": "2.3.1",
-          "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
-          "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
-          "dev": true
-        },
-        "to-regex-range": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
-          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
-          "dev": true,
-          "requires": {
-            "is-number": "^7.0.0"
-          }
-        }
-      }
-    },
-    "@parcel/watcher-android-arm64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
-      "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-darwin-arm64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
-      "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-darwin-x64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
-      "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-freebsd-x64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
-      "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-linux-arm-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
-      "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-linux-arm64-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
-      "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-linux-arm64-musl": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
-      "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-linux-x64-glibc": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
-      "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-linux-x64-musl": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
-      "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-win32-arm64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
-      "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-win32-ia32": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
-      "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
-      "dev": true,
-      "optional": true
-    },
-    "@parcel/watcher-win32-x64": {
-      "version": "2.4.1",
-      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
-      "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
-      "dev": true,
-      "optional": true
-    },
-    "@pkgjs/parseargs": {
-      "version": "0.11.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
-      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
-      "dev": true,
-      "optional": true
-    },
-    "@popperjs/core": {
-      "version": "npm:@sxzz/popperjs-es@2.11.8",
-      "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz",
-      "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ=="
-    },
-    "@tootallnate/once": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
-      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
-    },
-    "@types/lodash": {
-      "version": "4.14.184",
-      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz",
-      "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q=="
-    },
-    "@types/lodash-es": {
-      "version": "4.17.6",
-      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
-      "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
-      "requires": {
-        "@types/lodash": "*"
-      }
-    },
-    "@types/web-bluetooth": {
-      "version": "0.0.15",
-      "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz",
-      "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA=="
-    },
-    "@ungap/structured-clone": {
-      "version": "1.3.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
-      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
-      "dev": true
-    },
-    "@vitejs/plugin-vue": {
-      "version": "5.2.4",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
-      "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
-      "dev": true
-    },
-    "@vue/compiler-core": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
-      "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
-      "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/shared": "3.2.37",
-        "estree-walker": "^2.0.2",
-        "source-map": "^0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
-        }
-      }
-    },
-    "@vue/compiler-dom": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
-      "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
-      "requires": {
-        "@vue/compiler-core": "3.2.37",
-        "@vue/shared": "3.2.37"
-      }
-    },
-    "@vue/compiler-sfc": {
-      "version": "3.5.26",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
-      "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
-      "dev": true,
-      "requires": {
-        "@babel/parser": "^7.28.5",
-        "@vue/compiler-core": "3.5.26",
-        "@vue/compiler-dom": "3.5.26",
-        "@vue/compiler-ssr": "3.5.26",
-        "@vue/shared": "3.5.26",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.30.21",
-        "postcss": "^8.5.6",
-        "source-map-js": "^1.2.1"
-      },
-      "dependencies": {
-        "@babel/helper-validator-identifier": {
-          "version": "7.28.5",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
-          "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
-          "dev": true
-        },
-        "@babel/parser": {
-          "version": "7.28.5",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.28.5.tgz",
-          "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
-          "dev": true,
-          "requires": {
-            "@babel/types": "^7.28.5"
-          }
-        },
-        "@babel/types": {
-          "version": "7.28.5",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/types/-/types-7.28.5.tgz",
-          "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
-          "dev": true,
-          "requires": {
-            "@babel/helper-string-parser": "^7.27.1",
-            "@babel/helper-validator-identifier": "^7.28.5"
-          }
-        },
-        "@vue/compiler-core": {
-          "version": "3.5.26",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
-          "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
-          "dev": true,
-          "requires": {
-            "@babel/parser": "^7.28.5",
-            "@vue/shared": "3.5.26",
-            "entities": "^7.0.0",
-            "estree-walker": "^2.0.2",
-            "source-map-js": "^1.2.1"
-          }
-        },
-        "@vue/compiler-dom": {
-          "version": "3.5.26",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
-          "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
-          "dev": true,
-          "requires": {
-            "@vue/compiler-core": "3.5.26",
-            "@vue/shared": "3.5.26"
-          }
-        },
-        "@vue/compiler-ssr": {
-          "version": "3.5.26",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
-          "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
-          "dev": true,
-          "requires": {
-            "@vue/compiler-dom": "3.5.26",
-            "@vue/shared": "3.5.26"
-          }
-        },
-        "@vue/shared": {
-          "version": "3.5.26",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.5.26.tgz",
-          "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
-          "dev": true
-        },
-        "entities": {
-          "version": "7.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/entities/-/entities-7.0.0.tgz",
-          "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
-          "dev": true
-        },
-        "postcss": {
-          "version": "8.5.6",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
-          "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
-          "dev": true,
-          "requires": {
-            "nanoid": "^3.3.11",
-            "picocolors": "^1.1.1",
-            "source-map-js": "^1.2.1"
-          }
-        },
-        "source-map-js": {
-          "version": "1.2.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
-          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
-          "dev": true
-        }
-      }
-    },
-    "@vue/compiler-ssr": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
-      "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
-      "requires": {
-        "@vue/compiler-dom": "3.2.37",
-        "@vue/shared": "3.2.37"
-      }
-    },
-    "@vue/devtools-api": {
-      "version": "6.0.0-beta.15",
-      "resolved": "https://registry.nlark.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.15.tgz?cache=0&sync_timestamp=1624900514906&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fdevtools-api%2Fdownload%2F%40vue%2Fdevtools-api-6.0.0-beta.15.tgz",
-      "integrity": "sha1-rXyzhOBi8WW8+cg3MhJb/7wq2D0="
-    },
-    "@vue/reactivity": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
-      "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
-      "requires": {
-        "@vue/shared": "3.2.37"
-      }
-    },
-    "@vue/reactivity-transform": {
-      "version": "3.2.37",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
-      "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
-      "requires": {
-        "@babel/parser": "^7.16.4",
-        "@vue/compiler-core": "3.2.37",
-        "@vue/shared": "3.2.37",
-        "estree-walker": "^2.0.2",
-        "magic-string": "^0.25.7"
-      },
-      "dependencies": {
-        "magic-string": {
-          "version": "0.25.9",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
-          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        }
-      }
-    },
-    "@vue/runtime-core": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
-      "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
-      "requires": {
-        "@vue/reactivity": "3.2.37",
-        "@vue/shared": "3.2.37"
-      }
-    },
-    "@vue/runtime-dom": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
-      "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
-      "requires": {
-        "@vue/runtime-core": "3.2.37",
-        "@vue/shared": "3.2.37",
-        "csstype": "^2.6.8"
-      }
-    },
-    "@vue/server-renderer": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
-      "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
-      "requires": {
-        "@vue/compiler-ssr": "3.2.37",
-        "@vue/shared": "3.2.37"
-      }
-    },
-    "@vue/shared": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz",
-      "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
-    },
-    "@vueuse/core": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.0.tgz",
-      "integrity": "sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==",
-      "requires": {
-        "@types/web-bluetooth": "^0.0.15",
-        "@vueuse/metadata": "9.1.0",
-        "@vueuse/shared": "9.1.0",
-        "vue-demi": "*"
-      },
-      "dependencies": {
-        "vue-demi": {
-          "version": "0.13.8",
-          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
-          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
-        }
-      }
-    },
-    "@vueuse/metadata": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.0.tgz",
-      "integrity": "sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A=="
-    },
-    "@vueuse/shared": {
-      "version": "9.1.0",
-      "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.0.tgz",
-      "integrity": "sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==",
-      "requires": {
-        "vue-demi": "*"
-      },
-      "dependencies": {
-        "vue-demi": {
-          "version": "0.13.8",
-          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
-          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
-        }
-      }
-    },
-    "abort-controller": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
-      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
-      "requires": {
-        "event-target-shim": "^5.0.0"
-      }
-    },
-    "acorn-jsx": {
-      "version": "5.3.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
-      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-      "dev": true
-    },
-    "address": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz",
-      "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY="
-    },
-    "agent-base": {
-      "version": "6.0.2",
-      "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
-      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
-      "requires": {
-        "debug": "4"
-      }
-    },
-    "agentkeepalive": {
-      "version": "3.5.2",
-      "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
-      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
-      "requires": {
-        "humanize-ms": "^1.2.1"
-      }
-    },
-    "ajv": {
-      "version": "6.12.6",
-      "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz",
-      "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
-      "dev": true,
-      "requires": {
-        "fast-deep-equal": "^3.1.1",
-        "fast-json-stable-stringify": "^2.0.0",
-        "json-schema-traverse": "^0.4.1",
-        "uri-js": "^4.2.2"
-      }
-    },
-    "ali-oss": {
-      "version": "6.17.1",
-      "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.17.1.tgz",
-      "integrity": "sha512-v2oT3UhSJTH/LrsscVvi7iEGrnundydNaFzpYAKatqOl4JNcBV4UiwtlJU+ZHLys040JH2k+CutznA0GoE+P2w==",
-      "requires": {
-        "address": "^1.0.0",
-        "agentkeepalive": "^3.4.1",
-        "bowser": "^1.6.0",
-        "copy-to": "^2.0.1",
-        "dateformat": "^2.0.0",
-        "debug": "^2.2.0",
-        "destroy": "^1.0.4",
-        "end-or-error": "^1.0.1",
-        "get-ready": "^1.0.0",
-        "humanize-ms": "^1.2.0",
-        "is-type-of": "^1.0.0",
-        "js-base64": "^2.5.2",
-        "jstoxml": "^2.0.0",
-        "merge-descriptors": "^1.0.1",
-        "mime": "^2.4.5",
-        "mz-modules": "^2.1.0",
-        "platform": "^1.3.1",
-        "pump": "^3.0.0",
-        "sdk-base": "^2.0.1",
-        "stream-http": "2.8.2",
-        "stream-wormhole": "^1.0.4",
-        "urllib": "^2.33.1",
-        "utility": "^1.8.0",
-        "xml2js": "^0.4.16"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "ansi-regex": {
-      "version": "6.2.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-6.2.2.tgz",
-      "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
-      "dev": true
-    },
-    "ansi-styles": {
-      "version": "6.2.3",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-6.2.3.tgz",
-      "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
-      "dev": true
-    },
-    "any-promise": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
-      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
-    },
-    "ast-types": {
-      "version": "0.13.4",
-      "resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz",
-      "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
-      "requires": {
-        "tslib": "^2.0.1"
-      }
-    },
-    "async-validator": {
-      "version": "4.2.5",
-      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
-      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
-    },
-    "axios": {
-      "version": "0.21.1",
-      "resolved": "https://registry.nlark.com/axios/download/axios-0.21.1.tgz",
-      "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=",
-      "requires": {
-        "follow-redirects": "^1.10.0"
-      }
-    },
-    "balanced-match": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&sync_timestamp=1617714298273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
-      "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4="
-    },
-    "bowser": {
-      "version": "1.9.4",
-      "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz",
-      "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
-    },
-    "brace-expansion": {
-      "version": "1.1.11",
-      "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
-      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
-      "requires": {
-        "balanced-match": "^1.0.0",
-        "concat-map": "0.0.1"
-      }
-    },
-    "builtin-status-codes": {
-      "version": "3.0.0",
-      "resolved": "https://registry.nlark.com/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
-      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
-    },
-    "bytes": {
-      "version": "3.1.0",
-      "resolved": "https://registry.nlark.com/bytes/download/bytes-3.1.0.tgz",
-      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
-    },
-    "cliui": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880017635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz",
-      "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
-      "requires": {
-        "string-width": "^4.2.0",
-        "strip-ansi": "^6.0.0",
-        "wrap-ansi": "^6.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
-          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
-        },
-        "string-width": {
-          "version": "4.2.2",
-          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
-          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
-          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "dev": true,
-      "requires": {
-        "color-name": "~1.1.4"
-      }
-    },
-    "color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "dev": true
-    },
-    "concat-map": {
-      "version": "0.0.1",
-      "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
-    },
-    "content-type": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
-      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
-    },
-    "copy-anything": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npm.taobao.org/copy-anything/download/copy-anything-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-anything%2Fdownload%2Fcopy-anything-2.0.3.tgz",
-      "integrity": "sha1-hCQHugJGaw34RIGbvjuuu+XUXYc=",
-      "dev": true,
-      "requires": {
-        "is-what": "^3.12.0"
-      }
-    },
-    "copy-to": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz",
-      "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w=="
-    },
-    "core-util-is": {
-      "version": "1.0.2",
-      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
-      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
-    },
-    "cross-spawn": {
-      "version": "7.0.3",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
-      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
-      "dev": true,
-      "requires": {
-        "path-key": "^3.1.0",
-        "shebang-command": "^2.0.0",
-        "which": "^2.0.1"
-      }
-    },
-    "csstype": {
-      "version": "2.6.20",
-      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
-      "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
-    },
-    "data-uri-to-buffer": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
-      "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
-    },
-    "dateformat": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz",
-      "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw=="
-    },
-    "dayjs": {
-      "version": "1.11.5",
-      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
-      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
-    },
-    "debug": {
-      "version": "4.3.2",
-      "resolved": "https://registry.nlark.com/debug/download/debug-4.3.2.tgz",
-      "integrity": "sha1-8KScGKyHeeMdSgxgKd+3aHPHQos=",
-      "requires": {
-        "ms": "2.1.2"
-      }
-    },
-    "decamelize": {
-      "version": "1.2.0",
-      "resolved": "https://registry.nlark.com/decamelize/download/decamelize-1.2.0.tgz",
-      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
-    },
-    "deep-is": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
-    },
-    "default-user-agent": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz",
-      "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==",
-      "requires": {
-        "os-name": "~1.0.3"
-      }
-    },
-    "degenerator": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmmirror.com/degenerator/-/degenerator-3.0.2.tgz",
-      "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
-      "requires": {
-        "ast-types": "^0.13.2",
-        "escodegen": "^1.8.1",
-        "esprima": "^4.0.0",
-        "vm2": "^3.9.8"
-      }
-    },
-    "depd": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
-    },
-    "destroy": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
-      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
-    },
-    "detect-libc": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
-      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
-      "dev": true
-    },
-    "digest-header": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz",
-      "integrity": "sha512-sRTuakZ2PkOUCuAaVv+SLjhr/hRf8ldZP0XnGEQ69RFGxmll5fVaMsnRXWKKK4XsUTnJf8+eRPSFNgE/lWa9wQ==",
-      "requires": {
-        "utility": "^1.17.0"
-      }
-    },
-    "dijkstrajs": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
-      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
-    },
-    "doctrine": {
-      "version": "3.0.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/doctrine/-/doctrine-3.0.0.tgz",
-      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-      "dev": true,
-      "requires": {
-        "esutils": "^2.0.2"
-      }
-    },
-    "eastasianwidth": {
-      "version": "0.2.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
-      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
-      "dev": true
-    },
-    "echarts": {
-      "version": "5.0.2",
-      "resolved": "https://registry.nlark.com/echarts/download/echarts-5.0.2.tgz",
-      "integrity": "sha1-FybRelfPBdYs0FZ7QyXhIBpWuvY=",
-      "requires": {
-        "tslib": "2.0.3",
-        "zrender": "5.0.4"
-      }
-    },
-    "ee-first": {
-      "version": "1.1.1",
-      "resolved": "https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz",
-      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
-    },
-    "element-plus": {
-      "version": "2.2.14",
-      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.14.tgz",
-      "integrity": "sha512-V5Pis0OHhePg1RgVogZrcefaVl8vjVn4Pn9Qsh/t2CbFgjg9kKOYFqf/tuP3ObSXGm3X89hpe0W+nLVAsaFnpw==",
-      "requires": {
-        "@ctrl/tinycolor": "^3.4.1",
-        "@element-plus/icons-vue": "^2.0.6",
-        "@floating-ui/dom": "^0.5.4",
-        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
-        "@types/lodash": "^4.14.182",
-        "@types/lodash-es": "^4.17.6",
-        "@vueuse/core": "^9.1.0",
-        "async-validator": "^4.2.5",
-        "dayjs": "^1.11.3",
-        "escape-html": "^1.0.3",
-        "lodash": "^4.17.21",
-        "lodash-es": "^4.17.21",
-        "lodash-unified": "^1.0.2",
-        "memoize-one": "^6.0.0",
-        "normalize-wheel-es": "^1.2.0"
-      }
-    },
-    "emoji-regex": {
-      "version": "8.0.0",
-      "resolved": "https://registry.nlark.com/emoji-regex/download/emoji-regex-8.0.0.tgz",
-      "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
-    },
-    "end-of-stream": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
-      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
-      "requires": {
-        "once": "^1.4.0"
-      }
-    },
-    "end-or-error": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz",
-      "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ=="
-    },
-    "errno": {
-      "version": "0.1.8",
-      "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
-      "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "prr": "~1.0.1"
-      }
-    },
-    "esbuild": {
-      "version": "0.18.20",
-      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz",
-      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
-      "dev": true,
-      "requires": {
-        "@esbuild/android-arm": "0.18.20",
-        "@esbuild/android-arm64": "0.18.20",
-        "@esbuild/android-x64": "0.18.20",
-        "@esbuild/darwin-arm64": "0.18.20",
-        "@esbuild/darwin-x64": "0.18.20",
-        "@esbuild/freebsd-arm64": "0.18.20",
-        "@esbuild/freebsd-x64": "0.18.20",
-        "@esbuild/linux-arm": "0.18.20",
-        "@esbuild/linux-arm64": "0.18.20",
-        "@esbuild/linux-ia32": "0.18.20",
-        "@esbuild/linux-loong64": "0.18.20",
-        "@esbuild/linux-mips64el": "0.18.20",
-        "@esbuild/linux-ppc64": "0.18.20",
-        "@esbuild/linux-riscv64": "0.18.20",
-        "@esbuild/linux-s390x": "0.18.20",
-        "@esbuild/linux-x64": "0.18.20",
-        "@esbuild/netbsd-x64": "0.18.20",
-        "@esbuild/openbsd-x64": "0.18.20",
-        "@esbuild/sunos-x64": "0.18.20",
-        "@esbuild/win32-arm64": "0.18.20",
-        "@esbuild/win32-ia32": "0.18.20",
-        "@esbuild/win32-x64": "0.18.20"
-      }
-    },
-    "escape-html": {
-      "version": "1.0.3",
-      "resolved": "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz",
-      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
-    },
-    "escodegen": {
-      "version": "1.14.3",
-      "resolved": "https://registry.nlark.com/escodegen/download/escodegen-1.14.3.tgz",
-      "integrity": "sha1-TnuB+6YVgdyXWC7XjKt/Do1j9QM=",
-      "requires": {
-        "esprima": "^4.0.1",
-        "estraverse": "^4.2.0",
-        "esutils": "^2.0.2",
-        "optionator": "^0.8.1",
-        "source-map": "~0.6.1"
-      },
-      "dependencies": {
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
-          "optional": true
-        }
-      }
-    },
-    "eslint": {
-      "version": "8.57.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint/-/eslint-8.57.1.tgz",
-      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
-      "dev": true,
-      "requires": {
-        "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.6.1",
-        "@eslint/eslintrc": "^2.1.4",
-        "@eslint/js": "8.57.1",
-        "@humanwhocodes/config-array": "^0.13.0",
-        "@humanwhocodes/module-importer": "^1.0.1",
-        "@nodelib/fs.walk": "^1.2.8",
-        "@ungap/structured-clone": "^1.2.0",
-        "ajv": "^6.12.4",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.3.2",
-        "doctrine": "^3.0.0",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^7.2.2",
-        "eslint-visitor-keys": "^3.4.3",
-        "espree": "^9.6.1",
-        "esquery": "^1.4.2",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "find-up": "^5.0.0",
-        "glob-parent": "^6.0.2",
-        "globals": "^13.19.0",
-        "graphemer": "^1.4.0",
-        "ignore": "^5.2.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
-        "js-yaml": "^4.1.0",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.1.2",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
-        "text-table": "^0.2.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
-          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "argparse": {
-          "version": "2.0.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
-          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "4.1.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-4.1.2.tgz",
-          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-          "dev": true,
-          "requires": {
-            "ansi-styles": "^4.1.0",
-            "supports-color": "^7.1.0"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
-          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-          "dev": true,
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz",
-          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-          "dev": true
-        },
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-          "dev": true
-        },
-        "eslint-visitor-keys": {
-          "version": "3.4.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-          "dev": true
-        },
-        "find-up": {
-          "version": "5.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/find-up/-/find-up-5.0.0.tgz",
-          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
-          "dev": true,
-          "requires": {
-            "locate-path": "^6.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "glob-parent": {
-          "version": "6.0.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz",
-          "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
-          "dev": true,
-          "requires": {
-            "is-glob": "^4.0.3"
-          },
-          "dependencies": {
-            "is-glob": {
-              "version": "4.0.3",
-              "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz",
-              "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
-              "dev": true,
-              "requires": {
-                "is-extglob": "^2.1.1"
-              }
-            }
-          }
-        },
-        "globals": {
-          "version": "13.24.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
-          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
-          "dev": true,
-          "requires": {
-            "type-fest": "^0.20.2"
-          }
-        },
-        "has-flag": {
-          "version": "4.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
-          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-          "dev": true
-        },
-        "ignore": {
-          "version": "5.3.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
-          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
-          "dev": true
-        },
-        "is-path-inside": {
-          "version": "3.0.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-path-inside/-/is-path-inside-3.0.3.tgz",
-          "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-          "dev": true
-        },
-        "js-yaml": {
-          "version": "4.1.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
-          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
-          "dev": true,
-          "requires": {
-            "argparse": "^2.0.1"
-          }
-        },
-        "levn": {
-          "version": "0.4.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/levn/-/levn-0.4.1.tgz",
-          "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
-          "dev": true,
-          "requires": {
-            "prelude-ls": "^1.2.1",
-            "type-check": "~0.4.0"
-          }
-        },
-        "locate-path": {
-          "version": "6.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/locate-path/-/locate-path-6.0.0.tgz",
-          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
-          "dev": true,
-          "requires": {
-            "p-locate": "^5.0.0"
-          }
-        },
-        "minimatch": {
-          "version": "3.1.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
-          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^1.1.7"
-          }
-        },
-        "optionator": {
-          "version": "0.9.4",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/optionator/-/optionator-0.9.4.tgz",
-          "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
-          "dev": true,
-          "requires": {
-            "deep-is": "^0.1.3",
-            "fast-levenshtein": "^2.0.6",
-            "levn": "^0.4.1",
-            "prelude-ls": "^1.2.1",
-            "type-check": "^0.4.0",
-            "word-wrap": "^1.2.5"
-          }
-        },
-        "p-limit": {
-          "version": "3.1.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-limit/-/p-limit-3.1.0.tgz",
-          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
-          "dev": true,
-          "requires": {
-            "yocto-queue": "^0.1.0"
-          }
-        },
-        "p-locate": {
-          "version": "5.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-locate/-/p-locate-5.0.0.tgz",
-          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
-          "dev": true,
-          "requires": {
-            "p-limit": "^3.0.2"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
-          "dev": true
-        },
-        "prelude-ls": {
-          "version": "1.2.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz",
-          "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "6.0.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
-          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.1"
-          }
-        },
-        "supports-color": {
-          "version": "7.2.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz",
-          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-          "dev": true,
-          "requires": {
-            "has-flag": "^4.0.0"
-          }
-        },
-        "type-check": {
-          "version": "0.4.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-check/-/type-check-0.4.0.tgz",
-          "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
-          "dev": true,
-          "requires": {
-            "prelude-ls": "^1.2.1"
-          }
-        },
-        "type-fest": {
-          "version": "0.20.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
-          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
-          "dev": true
-        },
-        "word-wrap": {
-          "version": "1.2.5",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz",
-          "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
-          "dev": true
-        }
-      }
-    },
-    "eslint-scope": {
-      "version": "7.2.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-scope/-/eslint-scope-7.2.2.tgz",
-      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
-      "dev": true,
-      "requires": {
-        "esrecurse": "^4.3.0",
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.3.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
-          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-          "dev": true
-        }
-      }
-    },
-    "espree": {
-      "version": "9.6.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/espree/-/espree-9.6.1.tgz",
-      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
-      "dev": true,
-      "requires": {
-        "acorn": "^8.9.0",
-        "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^3.4.1"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "8.15.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn/-/acorn-8.15.0.tgz",
-          "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
-          "dev": true
-        },
-        "eslint-visitor-keys": {
-          "version": "3.4.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-          "dev": true
-        }
-      }
-    },
-    "esprima": {
-      "version": "4.0.1",
-      "resolved": "https://registry.nlark.com/esprima/download/esprima-4.0.1.tgz",
-      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
-    },
-    "esquery": {
-      "version": "1.6.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/esquery/-/esquery-1.6.0.tgz",
-      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.1.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.3.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
-          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
-          "dev": true
-        }
-      }
-    },
-    "esrecurse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz",
-      "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
-      "dev": true,
-      "requires": {
-        "estraverse": "^5.2.0"
-      },
-      "dependencies": {
-        "estraverse": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
-          "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
-          "dev": true
-        }
-      }
-    },
-    "estraverse": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz",
-      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0="
-    },
-    "estree-walker": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
-      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
-    },
-    "esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.nlark.com/esutils/download/esutils-2.0.3.tgz",
-      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q="
-    },
-    "event-target-shim": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
-      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
-    },
-    "eventsource": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041748498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz",
-      "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=",
-      "requires": {
-        "original": "^1.0.0"
-      }
-    },
-    "fast-deep-equal": {
-      "version": "3.1.3",
-      "resolved": "https://registry.nlark.com/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
-      "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=",
-      "dev": true
-    },
-    "fast-json-stable-stringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.nlark.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz?cache=0&sync_timestamp=1618847186091&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz",
-      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
-      "dev": true
-    },
-    "fast-levenshtein": {
-      "version": "2.0.6",
-      "resolved": "https://registry.nlark.com/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
-    },
-    "fastq": {
-      "version": "1.11.1",
-      "resolved": "https://registry.nlark.com/fastq/download/fastq-1.11.1.tgz",
-      "integrity": "sha1-XYF1quF9thlH+LFiz8f2MmTSKAc=",
-      "dev": true,
-      "requires": {
-        "reusify": "^1.0.4"
-      }
-    },
-    "fetch-cookie": {
-      "version": "0.11.0",
-      "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
-      "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
-      "requires": {
-        "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
-      }
-    },
-    "file-entry-cache": {
-      "version": "6.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
-      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
-      "dev": true,
-      "requires": {
-        "flat-cache": "^3.0.4"
-      }
-    },
-    "flat-cache": {
-      "version": "3.2.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flat-cache/-/flat-cache-3.2.0.tgz",
-      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
-      "dev": true,
-      "requires": {
-        "flatted": "^3.2.9",
-        "keyv": "^4.5.3",
-        "rimraf": "^3.0.2"
-      },
-      "dependencies": {
-        "rimraf": {
-          "version": "3.0.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/rimraf/-/rimraf-3.0.2.tgz",
-          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
-          "dev": true,
-          "requires": {
-            "glob": "^7.1.3"
-          }
-        }
-      }
-    },
-    "flatted": {
-      "version": "3.3.3",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flatted/-/flatted-3.3.3.tgz",
-      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
-      "dev": true
-    },
-    "follow-redirects": {
-      "version": "1.14.1",
-      "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555246888&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
-      "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M="
-    },
-    "foreground-child": {
-      "version": "3.3.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/foreground-child/-/foreground-child-3.3.1.tgz",
-      "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
-      "dev": true,
-      "requires": {
-        "cross-spawn": "^7.0.6",
-        "signal-exit": "^4.0.1"
-      },
-      "dependencies": {
-        "cross-spawn": {
-          "version": "7.0.6",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz",
-          "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
-          "dev": true,
-          "requires": {
-            "path-key": "^3.1.0",
-            "shebang-command": "^2.0.0",
-            "which": "^2.0.1"
-          }
-        }
-      }
-    },
-    "formstream": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.1.1.tgz",
-      "integrity": "sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==",
-      "requires": {
-        "destroy": "^1.0.4",
-        "mime": "^2.5.2",
-        "pause-stream": "~0.0.11"
-      }
-    },
-    "fs.realpath": {
-      "version": "1.0.0",
-      "resolved": "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz",
-      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
-    },
-    "fsevents": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
-      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "dev": true,
-      "optional": true
-    },
-    "ftp": {
-      "version": "0.3.10",
-      "resolved": "https://registry.npmmirror.com/ftp/-/ftp-0.3.10.tgz",
-      "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
-      "requires": {
-        "readable-stream": "1.1.x",
-        "xregexp": "2.0.0"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "0.0.1",
-          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz",
-          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
-        },
-        "readable-stream": {
-          "version": "1.1.14",
-          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz",
-          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
-          "requires": {
-            "core-util-is": "~1.0.0",
-            "inherits": "~2.0.1",
-            "isarray": "0.0.1",
-            "string_decoder": "~0.10.x"
-          }
-        },
-        "string_decoder": {
-          "version": "0.10.31",
-          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz",
-          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
-        }
-      }
-    },
-    "get-caller-file": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
-      "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34="
-    },
-    "get-ready": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz",
-      "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw=="
-    },
-    "get-uri": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmmirror.com/get-uri/-/get-uri-3.0.2.tgz",
-      "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
-      "requires": {
-        "@tootallnate/once": "1",
-        "data-uri-to-buffer": "3",
-        "debug": "4",
-        "file-uri-to-path": "2",
-        "fs-extra": "^8.1.0",
-        "ftp": "^0.3.10"
-      },
-      "dependencies": {
-        "file-uri-to-path": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
-          "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
-        },
-        "fs-extra": {
-          "version": "8.1.0",
-          "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
-          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-          "requires": {
-            "graceful-fs": "^4.2.0",
-            "jsonfile": "^4.0.0",
-            "universalify": "^0.1.0"
-          }
-        }
-      }
-    },
-    "glob": {
-      "version": "7.1.7",
-      "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&sync_timestamp=1620337498129&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
-      "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
-      "requires": {
-        "fs.realpath": "^1.0.0",
-        "inflight": "^1.0.4",
-        "inherits": "2",
-        "minimatch": "^3.0.4",
-        "once": "^1.3.0",
-        "path-is-absolute": "^1.0.0"
-      }
-    },
-    "graceful-fs": {
-      "version": "4.2.6",
-      "resolved": "https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.6.tgz",
-      "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4="
-    },
-    "graphemer": {
-      "version": "1.4.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/graphemer/-/graphemer-1.4.0.tgz",
-      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
-      "dev": true
-    },
-    "http-errors": {
-      "version": "1.7.2",
-      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
-      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
-      "requires": {
-        "depd": "~1.1.2",
-        "inherits": "2.0.3",
-        "setprototypeof": "1.1.1",
-        "statuses": ">= 1.5.0 < 2",
-        "toidentifier": "1.0.0"
-      },
-      "dependencies": {
-        "inherits": {
-          "version": "2.0.3",
-          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
-          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
-        }
-      }
-    },
-    "http-proxy-agent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
-      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
-      "requires": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4"
-      }
-    },
-    "https-proxy-agent": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
-      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
-      "requires": {
-        "agent-base": "6",
-        "debug": "4"
-      }
-    },
-    "humanize-ms": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz",
-      "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
-      "requires": {
-        "ms": "^2.0.0"
-      }
-    },
-    "iconv-lite": {
-      "version": "0.4.24",
-      "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
-      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
-      "requires": {
-        "safer-buffer": ">= 2.1.2 < 3"
-      }
-    },
-    "image-size": {
-      "version": "0.5.5",
-      "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1618422657851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz",
-      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
-      "dev": true,
-      "optional": true
-    },
-    "immutable": {
-      "version": "4.3.7",
-      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.7.tgz",
-      "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
-      "dev": true
-    },
-    "imurmurhash": {
-      "version": "0.1.4",
-      "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
-      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-      "dev": true
-    },
-    "inflight": {
-      "version": "1.0.6",
-      "resolved": "https://registry.nlark.com/inflight/download/inflight-1.0.6.tgz",
-      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
-      "requires": {
-        "once": "^1.3.0",
-        "wrappy": "1"
-      }
-    },
-    "inherits": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
-      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
-    },
-    "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.nlark.com/ip/download/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
-    },
-    "is-class-hotfix": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
-      "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
-    },
-    "is-extglob": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
-      "dev": true
-    },
-    "is-fullwidth-code-point": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-      "dev": true
-    },
-    "is-glob": {
-      "version": "4.0.1",
-      "resolved": "https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz",
-      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
-      "dev": true,
-      "requires": {
-        "is-extglob": "^2.1.1"
-      }
-    },
-    "is-type-of": {
-      "version": "1.2.1",
-      "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.2.1.tgz",
-      "integrity": "sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA==",
-      "requires": {
-        "core-util-is": "^1.0.2",
-        "is-class-hotfix": "~0.0.6",
-        "isstream": "~0.1.2"
-      }
-    },
-    "is-what": {
-      "version": "3.14.1",
-      "resolved": "https://registry.npm.taobao.org/is-what/download/is-what-3.14.1.tgz?cache=0&sync_timestamp=1615169735707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-what%2Fdownload%2Fis-what-3.14.1.tgz",
-      "integrity": "sha1-4SIvRt3ahd6tD9HJ3xMXYOd3VcE=",
-      "dev": true
-    },
-    "isarray": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
-    },
-    "isexe": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
-      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
-      "dev": true
-    },
-    "isstream": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
-    },
-    "jackspeak": {
-      "version": "3.4.3",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jackspeak/-/jackspeak-3.4.3.tgz",
-      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
-      "dev": true,
-      "requires": {
-        "@isaacs/cliui": "^8.0.2",
-        "@pkgjs/parseargs": "^0.11.0"
-      }
-    },
-    "js-base64": {
-      "version": "2.6.4",
-      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
-      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
-    },
-    "jsbarcode": {
-      "version": "3.12.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jsbarcode/-/jsbarcode-3.12.1.tgz",
-      "integrity": "sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ=="
-    },
-    "json-buffer": {
-      "version": "3.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz",
-      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
-      "dev": true
-    },
-    "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
-      "dev": true
-    },
-    "json-stable-stringify-without-jsonify": {
-      "version": "1.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
-      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
-      "dev": true
-    },
-    "jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161937969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
-      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
-      "requires": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
-    "jstoxml": {
-      "version": "2.2.9",
-      "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz",
-      "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw=="
-    },
-    "keyv": {
-      "version": "4.5.4",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/keyv/-/keyv-4.5.4.tgz",
-      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
-      "dev": true,
-      "requires": {
-        "json-buffer": "3.0.1"
-      }
-    },
-    "ko-sleep": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmmirror.com/ko-sleep/-/ko-sleep-1.1.4.tgz",
-      "integrity": "sha512-s05WGpvvzyTuRlRE8fM7ru2Z3O+InbJuBcckTWKg2W+2c1k6SnFa3IfiSSt0/peFrlYAXgNoxuJWWVNmWh+K/A==",
-      "requires": {
-        "ms": "*"
-      }
-    },
-    "less": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npm.taobao.org/less/download/less-4.1.1.tgz?cache=0&sync_timestamp=1612065808998&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-4.1.1.tgz",
-      "integrity": "sha1-Fb8lOpk5eR3GkIiMP/Qk8+bH7bo=",
-      "dev": true,
-      "requires": {
-        "copy-anything": "^2.0.1",
-        "errno": "^0.1.1",
-        "graceful-fs": "^4.1.2",
-        "image-size": "~0.5.0",
-        "make-dir": "^2.1.0",
-        "mime": "^1.4.1",
-        "needle": "^2.5.2",
-        "parse-node-version": "^1.0.1",
-        "source-map": "~0.6.0",
-        "tslib": "^1.10.0"
-      },
-      "dependencies": {
-        "make-dir": {
-          "version": "2.1.0",
-          "resolved": "https://registry.nlark.com/make-dir/download/make-dir-2.1.0.tgz",
-          "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "pify": "^4.0.1",
-            "semver": "^5.6.0"
-          }
-        },
-        "mime": {
-          "version": "1.6.0",
-          "resolved": "https://registry.nlark.com/mime/download/mime-1.6.0.tgz",
-          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
-          "dev": true,
-          "optional": true
-        },
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.nlark.com/semver/download/semver-5.7.1.tgz",
-          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
-          "dev": true,
-          "optional": true
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
-          "dev": true,
-          "optional": true
-        },
-        "tslib": {
-          "version": "1.14.1",
-          "resolved": "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz",
-          "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
-          "dev": true
-        }
-      }
-    },
-    "levn": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
-      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-      "requires": {
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2"
-      }
-    },
-    "lodash": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz",
-      "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
-    },
-    "lodash-es": {
-      "version": "4.17.21",
-      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
-      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
-    },
-    "lodash-unified": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz",
-      "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g=="
-    },
-    "lodash.merge": {
-      "version": "4.6.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz",
-      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
-      "dev": true
-    },
-    "lru-cache": {
-      "version": "5.1.1",
-      "resolved": "https://registry.nlark.com/lru-cache/download/lru-cache-5.1.1.tgz",
-      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
-      "requires": {
-        "yallist": "^3.0.2"
-      }
-    },
-    "magic-string": {
-      "version": "0.30.21",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.21.tgz",
-      "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
-      "dev": true,
-      "requires": {
-        "@jridgewell/sourcemap-codec": "^1.5.5"
-      }
-    },
-    "memoize-one": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
-      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
-    },
-    "merge-descriptors": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
-      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
-    },
-    "mime": {
-      "version": "2.5.2",
-      "resolved": "https://registry.nlark.com/mime/download/mime-2.5.2.tgz",
-      "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4="
-    },
-    "minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
-      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
-      "requires": {
-        "brace-expansion": "^1.1.7"
-      }
-    },
-    "minimist": {
-      "version": "1.2.5",
-      "resolved": "https://registry.nlark.com/minimist/download/minimist-1.2.5.tgz",
-      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
-    },
-    "minipass": {
-      "version": "7.1.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "dev": true
-    },
-    "mitt": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz",
-      "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
-    },
-    "mkdirp": {
-      "version": "0.5.5",
-      "resolved": "https://registry.nlark.com/mkdirp/download/mkdirp-0.5.5.tgz",
-      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
-      "requires": {
-        "minimist": "^1.2.5"
-      }
-    },
-    "ms": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
-      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
-    },
-    "mz": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
-      "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
-      "requires": {
-        "any-promise": "^1.0.0",
-        "object-assign": "^4.0.1",
-        "thenify-all": "^1.0.0"
-      }
-    },
-    "mz-modules": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmmirror.com/mz-modules/-/mz-modules-2.1.0.tgz",
-      "integrity": "sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog==",
-      "requires": {
-        "glob": "^7.1.2",
-        "ko-sleep": "^1.0.3",
-        "mkdirp": "^0.5.1",
-        "pump": "^3.0.0",
-        "rimraf": "^2.6.1"
-      }
-    },
-    "nanoid": {
-      "version": "3.3.11",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz",
-      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
-    },
-    "natural-compare": {
-      "version": "1.4.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz",
-      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
-      "dev": true
-    },
-    "needle": {
-      "version": "2.8.0",
-      "resolved": "https://registry.nlark.com/needle/download/needle-2.8.0.tgz",
-      "integrity": "sha1-HI75waLCncweg9c4Cde8aByAoEg=",
-      "dev": true,
-      "optional": true,
-      "requires": {
-        "debug": "^3.2.6",
-        "iconv-lite": "^0.4.4",
-        "sax": "^1.2.4"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "3.2.7",
-          "resolved": "https://registry.nlark.com/debug/download/debug-3.2.7.tgz",
-          "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "ms": "^2.1.1"
-          }
-        }
-      }
-    },
-    "netmask": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz",
-      "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
-    },
-    "node-addon-api": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
-      "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
-      "dev": true
-    },
-    "node-fetch": {
-      "version": "2.6.7",
-      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
-      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
-      "requires": {
-        "whatwg-url": "^5.0.0"
-      },
-      "dependencies": {
-        "tr46": {
-          "version": "0.0.3",
-          "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
-          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
-        },
-        "webidl-conversions": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
-          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
-        },
-        "whatwg-url": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
-          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
-          "requires": {
-            "tr46": "~0.0.3",
-            "webidl-conversions": "^3.0.0"
-          }
-        }
-      }
-    },
-    "normalize-wheel-es": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
-      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
-    },
-    "object-assign": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
-      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
-    },
-    "once": {
-      "version": "1.4.0",
-      "resolved": "https://registry.nlark.com/once/download/once-1.4.0.tgz",
-      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
-      "requires": {
-        "wrappy": "1"
-      }
-    },
-    "optionator": {
-      "version": "0.8.3",
-      "resolved": "https://registry.nlark.com/optionator/download/optionator-0.8.3.tgz",
-      "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
-      "requires": {
-        "deep-is": "~0.1.3",
-        "fast-levenshtein": "~2.0.6",
-        "levn": "~0.3.0",
-        "prelude-ls": "~1.1.2",
-        "type-check": "~0.3.2",
-        "word-wrap": "~1.2.3"
-      }
-    },
-    "original": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
-      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
-      "requires": {
-        "url-parse": "^1.4.3"
-      }
-    },
-    "os-name": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz",
-      "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==",
-      "requires": {
-        "osx-release": "^1.0.0",
-        "win-release": "^1.0.0"
-      }
-    },
-    "osx-release": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz",
-      "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==",
-      "requires": {
-        "minimist": "^1.1.0"
-      }
-    },
-    "p-limit": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz",
-      "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
-      "requires": {
-        "p-try": "^2.0.0"
-      }
-    },
-    "p-try": {
-      "version": "2.2.0",
-      "resolved": "https://registry.nlark.com/p-try/download/p-try-2.2.0.tgz",
-      "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY="
-    },
-    "pac-proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
-      "requires": {
-        "@tootallnate/once": "1",
-        "agent-base": "6",
-        "debug": "4",
-        "get-uri": "3",
-        "http-proxy-agent": "^4.0.1",
-        "https-proxy-agent": "5",
-        "pac-resolver": "^5.0.0",
-        "raw-body": "^2.2.0",
-        "socks-proxy-agent": "5"
-      }
-    },
-    "pac-resolver": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/pac-resolver/-/pac-resolver-5.0.1.tgz",
-      "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==",
-      "requires": {
-        "degenerator": "^3.0.2",
-        "ip": "^1.1.5",
-        "netmask": "^2.0.2"
-      }
-    },
-    "package-json-from-dist": {
-      "version": "1.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
-      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
-      "dev": true
-    },
-    "parent-module": {
-      "version": "1.0.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/parent-module/-/parent-module-1.0.1.tgz",
-      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
-      "requires": {
-        "callsites": "^3.0.0"
-      },
-      "dependencies": {
-        "callsites": {
-          "version": "3.1.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/callsites/-/callsites-3.1.0.tgz",
-          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-          "dev": true
-        }
-      }
-    },
-    "parse-node-version": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/parse-node-version/download/parse-node-version-1.0.1.tgz",
-      "integrity": "sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs=",
-      "dev": true
-    },
-    "path-is-absolute": {
-      "version": "1.0.1",
-      "resolved": "https://registry.nlark.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
-    },
-    "path-key": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
-      "dev": true
-    },
-    "path-scurry": {
-      "version": "1.11.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-scurry/-/path-scurry-1.11.1.tgz",
-      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
-      "dev": true,
-      "requires": {
-        "lru-cache": "^10.2.0",
-        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
-      },
-      "dependencies": {
-        "lru-cache": {
-          "version": "10.4.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-10.4.3.tgz",
-          "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
-          "dev": true
-        }
-      }
-    },
-    "pause-stream": {
-      "version": "0.0.11",
-      "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz",
-      "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
-      "requires": {
-        "through": "~2.3"
-      }
-    },
-    "picocolors": {
-      "version": "1.1.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz",
-      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
-    },
-    "pify": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
-      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
-      "dev": true,
-      "optional": true
-    },
-    "platform": {
-      "version": "1.3.6",
-      "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
-      "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
-    },
-    "pngjs": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
-      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
-    },
-    "postcss": {
-      "version": "8.5.6",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
-      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
-      "requires": {
-        "nanoid": "^3.3.11",
-        "picocolors": "^1.1.1",
-        "source-map-js": "^1.2.1"
-      },
-      "dependencies": {
-        "source-map-js": {
-          "version": "1.2.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
-          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
-        }
-      }
-    },
-    "prelude-ls": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
-    },
-    "process-nextick-args": {
-      "version": "2.0.1",
-      "resolved": "https://registry.nlark.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
-    },
-    "proxy-agent": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmmirror.com/proxy-agent/-/proxy-agent-5.0.0.tgz",
-      "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
-      "requires": {
-        "agent-base": "^6.0.0",
-        "debug": "4",
-        "http-proxy-agent": "^4.0.0",
-        "https-proxy-agent": "^5.0.0",
-        "lru-cache": "^5.1.1",
-        "pac-proxy-agent": "^5.0.0",
-        "proxy-from-env": "^1.0.0",
-        "socks-proxy-agent": "^5.0.0"
-      }
-    },
-    "proxy-from-env": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
-      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
-    },
-    "prr": {
-      "version": "1.0.1",
-      "resolved": "https://registry.nlark.com/prr/download/prr-1.0.1.tgz",
-      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
-      "dev": true,
-      "optional": true
-    },
-    "psl": {
-      "version": "1.8.0",
-      "resolved": "https://registry.nlark.com/psl/download/psl-1.8.0.tgz",
-      "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ="
-    },
-    "pump": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
-      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
-      "requires": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
-    "punycode": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
-      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
-    },
-    "qrcode": {
-      "version": "1.5.4",
-      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
-      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
-      "requires": {
-        "dijkstrajs": "^1.0.1",
-        "pngjs": "^5.0.0",
-        "yargs": "^15.3.1"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
-        },
-        "camelcase": {
-          "version": "5.3.1",
-          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
-          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-        },
-        "find-up": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
-          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
-          "requires": {
-            "locate-path": "^5.0.0",
-            "path-exists": "^4.0.0"
-          }
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
-        },
-        "locate-path": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
-          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
-          "requires": {
-            "p-locate": "^4.1.0"
-          }
-        },
-        "p-locate": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
-          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
-          "requires": {
-            "p-limit": "^2.2.0"
-          }
-        },
-        "path-exists": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
-          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-        },
-        "string-width": {
-          "version": "4.2.3",
-          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
-          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.1"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-          "requires": {
-            "ansi-regex": "^5.0.1"
-          }
-        },
-        "yargs": {
-          "version": "15.4.1",
-          "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
-          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
-          "requires": {
-            "cliui": "^6.0.0",
-            "decamelize": "^1.2.0",
-            "find-up": "^4.1.0",
-            "get-caller-file": "^2.0.1",
-            "require-directory": "^2.1.1",
-            "require-main-filename": "^2.0.0",
-            "set-blocking": "^2.0.0",
-            "string-width": "^4.2.0",
-            "which-module": "^2.0.0",
-            "y18n": "^4.0.0",
-            "yargs-parser": "^18.1.2"
-          }
-        },
-        "yargs-parser": {
-          "version": "18.1.3",
-          "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
-          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-          "requires": {
-            "camelcase": "^5.0.0",
-            "decamelize": "^1.2.0"
-          }
-        }
-      }
-    },
-    "qs": {
-      "version": "6.5.2",
-      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
-      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
-    },
-    "querystringify": {
-      "version": "2.2.0",
-      "resolved": "https://registry.nlark.com/querystringify/download/querystringify-2.2.0.tgz",
-      "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y="
-    },
-    "queue-microtask": {
-      "version": "1.2.3",
-      "resolved": "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.2.3.tgz?cache=0&sync_timestamp=1616391548624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqueue-microtask%2Fdownload%2Fqueue-microtask-1.2.3.tgz",
-      "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=",
-      "dev": true
-    },
-    "raw-body": {
-      "version": "2.4.0",
-      "resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
-      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
-      "requires": {
-        "bytes": "3.1.0",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
-        "unpipe": "1.0.0"
-      }
-    },
-    "readable-stream": {
-      "version": "2.3.7",
-      "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz",
-      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
-      "requires": {
-        "core-util-is": "~1.0.0",
-        "inherits": "~2.0.3",
-        "isarray": "~1.0.0",
-        "process-nextick-args": "~2.0.0",
-        "safe-buffer": "~5.1.1",
-        "string_decoder": "~1.1.1",
-        "util-deprecate": "~1.0.1"
-      }
-    },
-    "require-directory": {
-      "version": "2.1.1",
-      "resolved": "https://registry.nlark.com/require-directory/download/require-directory-2.1.1.tgz",
-      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
-    },
-    "require-main-filename": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
-      "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs="
-    },
-    "requires-port": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
-    },
-    "reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
-      "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
-      "dev": true
-    },
-    "rimraf": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
-      "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
-      "requires": {
-        "glob": "^7.1.3"
-      }
-    },
-    "rollup": {
-      "version": "3.29.5",
-      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz",
-      "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
-      "dev": true,
-      "requires": {
-        "fsevents": "~2.3.2"
-      }
-    },
-    "run-parallel": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.2.0.tgz?cache=0&sync_timestamp=1612925912322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-parallel%2Fdownload%2Frun-parallel-1.2.0.tgz",
-      "integrity": "sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=",
-      "dev": true,
-      "requires": {
-        "queue-microtask": "^1.2.2"
-      }
-    },
-    "safe-buffer": {
-      "version": "5.1.2",
-      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
-      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
-    },
-    "safer-buffer": {
-      "version": "2.1.2",
-      "resolved": "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz",
-      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
-    },
-    "sass": {
-      "version": "1.80.3",
-      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.80.3.tgz",
-      "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==",
-      "dev": true,
-      "requires": {
-        "@parcel/watcher": "^2.4.1",
-        "chokidar": "^4.0.0",
-        "immutable": "^4.0.0",
-        "source-map-js": ">=0.6.2 <2.0.0"
-      },
-      "dependencies": {
-        "chokidar": {
-          "version": "4.0.1",
-          "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz",
-          "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
-          "dev": true,
-          "requires": {
-            "readdirp": "^4.0.1"
-          }
-        },
-        "readdirp": {
-          "version": "4.0.2",
-          "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
-          "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
-          "dev": true
-        }
-      }
-    },
-    "sax": {
-      "version": "1.2.4",
-      "resolved": "https://registry.nlark.com/sax/download/sax-1.2.4.tgz",
-      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
-    },
-    "sdk-base": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz",
-      "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==",
-      "requires": {
-        "get-ready": "~1.0.0"
-      }
-    },
-    "set-blocking": {
-      "version": "2.0.0",
-      "resolved": "https://registry.nlark.com/set-blocking/download/set-blocking-2.0.0.tgz",
-      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
-    },
-    "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.1.tgz",
-      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
-    },
-    "shebang-command": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
-      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
-      "dev": true,
-      "requires": {
-        "shebang-regex": "^3.0.0"
-      }
-    },
-    "shebang-regex": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
-      "dev": true
-    },
-    "signal-exit": {
-      "version": "4.1.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-4.1.0.tgz",
-      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
-      "dev": true
-    },
-    "smart-buffer": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz",
-      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
-    },
-    "socks": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz",
-      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
-      "requires": {
-        "ip": "^2.0.0",
-        "smart-buffer": "^4.2.0"
-      },
-      "dependencies": {
-        "ip": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz",
-          "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
-        }
-      }
-    },
-    "socks-proxy-agent": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
-      "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
-      "requires": {
-        "agent-base": "^6.0.2",
-        "debug": "4",
-        "socks": "^2.3.3"
-      }
-    },
-    "source-map": {
-      "version": "0.7.6",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.7.6.tgz",
-      "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
-      "dev": true
-    },
-    "source-map-js": {
-      "version": "0.6.2",
-      "resolved": "https://registry.npm.taobao.org/source-map-js/download/source-map-js-0.6.2.tgz",
-      "integrity": "sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=",
-      "dev": true
-    },
-    "sourcemap-codec": {
-      "version": "1.4.8",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
-      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
-    },
-    "statuses": {
-      "version": "1.5.0",
-      "resolved": "https://registry.nlark.com/statuses/download/statuses-1.5.0.tgz",
-      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
-    },
-    "stream-http": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz",
-      "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
-      "requires": {
-        "builtin-status-codes": "^3.0.0",
-        "inherits": "^2.0.1",
-        "readable-stream": "^2.3.6",
-        "to-arraybuffer": "^1.0.0",
-        "xtend": "^4.0.0"
-      }
-    },
-    "stream-wormhole": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz",
-      "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew=="
-    },
-    "string-width": {
-      "version": "5.1.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/string-width/-/string-width-5.1.2.tgz",
-      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
-      "dev": true,
-      "requires": {
-        "eastasianwidth": "^0.2.0",
-        "emoji-regex": "^9.2.2",
-        "strip-ansi": "^7.0.1"
-      },
-      "dependencies": {
-        "emoji-regex": {
-          "version": "9.2.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/emoji-regex/-/emoji-regex-9.2.2.tgz",
-          "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
-          "dev": true
-        }
-      }
-    },
-    "string_decoder": {
-      "version": "1.1.1",
-      "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz",
-      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
-      "requires": {
-        "safe-buffer": "~5.1.0"
-      }
-    },
-    "strip-ansi": {
-      "version": "7.1.2",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-7.1.2.tgz",
-      "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
-      "dev": true,
-      "requires": {
-        "ansi-regex": "^6.0.1"
-      }
-    },
-    "strip-json-comments": {
-      "version": "3.1.1",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
-      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
-      "dev": true
-    },
-    "stylus": {
-      "version": "0.64.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/stylus/-/stylus-0.64.0.tgz",
-      "integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==",
-      "dev": true,
-      "requires": {
-        "@adobe/css-tools": "~4.3.3",
-        "debug": "^4.3.2",
-        "glob": "^10.4.5",
-        "sax": "~1.4.1",
-        "source-map": "^0.7.3"
-      },
-      "dependencies": {
-        "brace-expansion": {
-          "version": "2.0.2",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-2.0.2.tgz",
-          "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
-          "dev": true,
-          "requires": {
-            "balanced-match": "^1.0.0"
-          }
-        },
-        "glob": {
-          "version": "10.5.0",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob/-/glob-10.5.0.tgz",
-          "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
-          "dev": true,
-          "requires": {
-            "foreground-child": "^3.1.0",
-            "jackspeak": "^3.1.2",
-            "minimatch": "^9.0.4",
-            "minipass": "^7.1.2",
-            "package-json-from-dist": "^1.0.0",
-            "path-scurry": "^1.11.1"
-          }
-        },
-        "minimatch": {
-          "version": "9.0.5",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-9.0.5.tgz",
-          "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        },
-        "sax": {
-          "version": "1.4.3",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/sax/-/sax-1.4.3.tgz",
-          "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
-          "dev": true
-        }
-      }
-    },
-    "text-table": {
-      "version": "0.2.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/text-table/-/text-table-0.2.0.tgz",
-      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
-      "dev": true
-    },
-    "thenify": {
-      "version": "3.3.1",
-      "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz",
-      "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
-      "requires": {
-        "any-promise": "^1.0.0"
-      }
-    },
-    "thenify-all": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
-      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
-      "requires": {
-        "thenify": ">= 3.1.0 < 4"
-      }
-    },
-    "through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz",
-      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
-    },
-    "to-arraybuffer": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
-      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
-    },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.nlark.com/toidentifier/download/toidentifier-1.0.0.tgz",
-      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
-    },
-    "tough-cookie": {
-      "version": "2.5.0",
-      "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz",
-      "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
-      "requires": {
-        "psl": "^1.1.28",
-        "punycode": "^2.1.1"
-      }
-    },
-    "tslib": {
-      "version": "2.0.3",
-      "resolved": "https://registry.nlark.com/tslib/download/tslib-2.0.3.tgz",
-      "integrity": "sha1-jgdBrEX8DCJuWKF7/D5kubxsphw="
-    },
-    "type-check": {
-      "version": "0.3.2",
-      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
-      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-      "requires": {
-        "prelude-ls": "~1.1.2"
-      }
-    },
-    "unescape": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz",
-      "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
-      "requires": {
-        "extend-shallow": "^2.0.1"
-      },
-      "dependencies": {
-        "extend-shallow": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
-          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
-          "requires": {
-            "is-extendable": "^0.1.0"
-          }
-        },
-        "is-extendable": {
-          "version": "0.1.1",
-          "resolved": "https://registry.nlark.com/is-extendable/download/is-extendable-0.1.1.tgz",
-          "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
-        }
-      }
-    },
-    "universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz",
-      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
-    },
-    "unpipe": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
-    },
-    "uri-js": {
-      "version": "4.4.1",
-      "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237530009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz",
-      "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=",
-      "dev": true,
-      "requires": {
-        "punycode": "^2.1.0"
-      }
-    },
-    "url-parse": {
-      "version": "1.5.1",
-      "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz",
-      "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
-      "requires": {
-        "querystringify": "^2.1.1",
-        "requires-port": "^1.0.0"
-      }
-    },
-    "urllib": {
-      "version": "2.40.0",
-      "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.40.0.tgz",
-      "integrity": "sha512-XDZjoijtzsbkXTXgM+A/sJM002nwoYsc46YOYr6MNH2jUUw1nCBf2ywT1WaPsVEWJX4Yr+9isGmYj4+yofFn9g==",
-      "requires": {
-        "any-promise": "^1.3.0",
-        "content-type": "^1.0.2",
-        "debug": "^2.6.9",
-        "default-user-agent": "^1.0.0",
-        "digest-header": "^1.0.0",
-        "ee-first": "~1.1.1",
-        "formstream": "^1.1.0",
-        "humanize-ms": "^1.2.0",
-        "iconv-lite": "^0.4.15",
-        "ip": "^1.1.5",
-        "proxy-agent": "^5.0.0",
-        "pump": "^3.0.0",
-        "qs": "^6.4.0",
-        "statuses": "^1.3.1",
-        "utility": "^1.16.1"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "requires": {
-            "ms": "2.0.0"
-          }
-        },
-        "ms": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
-          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
-        }
-      }
-    },
-    "util-deprecate": {
-      "version": "1.0.2",
-      "resolved": "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
-    },
-    "utility": {
-      "version": "1.17.0",
-      "resolved": "https://registry.npmmirror.com/utility/-/utility-1.17.0.tgz",
-      "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==",
-      "requires": {
-        "copy-to": "^2.0.1",
-        "escape-html": "^1.0.3",
-        "mkdirp": "^0.5.1",
-        "mz": "^2.7.0",
-        "unescape": "^1.0.1"
-      }
-    },
-    "vite": {
-      "version": "4.5.14",
-      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.14.tgz",
-      "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
-      "dev": true,
-      "requires": {
-        "esbuild": "^0.18.10",
-        "fsevents": "~2.3.2",
-        "postcss": "^8.4.27",
-        "rollup": "^3.27.1"
-      }
-    },
-    "vm2": {
-      "version": "3.9.14",
-      "resolved": "https://registry.npmmirror.com/vm2/-/vm2-3.9.14.tgz",
-      "integrity": "sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==",
-      "requires": {
-        "acorn": "^8.7.0",
-        "acorn-walk": "^8.2.0"
-      },
-      "dependencies": {
-        "acorn": {
-          "version": "8.8.2",
-          "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
-          "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
-        },
-        "acorn-walk": {
-          "version": "8.2.0",
-          "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz",
-          "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
-        }
-      }
-    },
-    "vue": {
-      "version": "3.2.37",
-      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
-      "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
-      "requires": {
-        "@vue/compiler-dom": "3.2.37",
-        "@vue/compiler-sfc": "3.2.37",
-        "@vue/runtime-dom": "3.2.37",
-        "@vue/server-renderer": "3.2.37",
-        "@vue/shared": "3.2.37"
-      },
-      "dependencies": {
-        "@vue/compiler-sfc": {
-          "version": "3.2.37",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
-          "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
-          "requires": {
-            "@babel/parser": "^7.16.4",
-            "@vue/compiler-core": "3.2.37",
-            "@vue/compiler-dom": "3.2.37",
-            "@vue/compiler-ssr": "3.2.37",
-            "@vue/reactivity-transform": "3.2.37",
-            "@vue/shared": "3.2.37",
-            "estree-walker": "^2.0.2",
-            "magic-string": "^0.25.7",
-            "postcss": "^8.1.10",
-            "source-map": "^0.6.1"
-          }
-        },
-        "magic-string": {
-          "version": "0.25.9",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
-          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
-          "requires": {
-            "sourcemap-codec": "^1.4.8"
-          }
-        },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-        }
-      }
-    },
-    "vue-barcode": {
-      "version": "1.3.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-barcode/-/vue-barcode-1.3.0.tgz",
-      "integrity": "sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==",
-      "requires": {
-        "jsbarcode": "^3.5.8"
-      }
-    },
-    "vue-draggable-next": {
-      "version": "2.0.1",
-      "resolved": "https://registry.nlark.com/vue-draggable-next/download/vue-draggable-next-2.0.1.tgz",
-      "integrity": "sha1-u2TvswLHuOdZ/T8hQnhxeJtiTGc="
-    },
-    "vue-qrcode": {
-      "version": "2.2.2",
-      "resolved": "https://registry.npmmirror.com/vue-qrcode/-/vue-qrcode-2.2.2.tgz",
-      "integrity": "sha512-SbrXq/mSb1g2tbDyXPe9gy9KiMYsvxWKRErlpij1BqiFoHwQckheZV63CTw6yRLLUVG2RXAVlX+APkpdCK7SQQ==",
-      "requires": {
-        "tslib": "^2.6.2"
-      },
-      "dependencies": {
-        "tslib": {
-          "version": "2.8.1",
-          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
-          "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
-        }
-      }
-    },
-    "vue-router": {
-      "version": "4.0.10",
-      "resolved": "https://registry.nlark.com/vue-router/download/vue-router-4.0.10.tgz?cache=0&sync_timestamp=1624286995690&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-4.0.10.tgz",
-      "integrity": "sha1-7I/aAylJsqMdMnMXD483bobrUqw=",
-      "requires": {
-        "@vue/devtools-api": "^6.0.0-beta.14"
-      }
-    },
-    "vuex": {
-      "version": "4.0.2",
-      "resolved": "https://registry.nlark.com/vuex/download/vuex-4.0.2.tgz",
-      "integrity": "sha1-+Jbb1b8qDpY/AMZ+m2EN50nMrMk=",
-      "requires": {
-        "@vue/devtools-api": "^6.0.0-beta.11"
-      }
-    },
-    "which": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
-      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
-      "dev": true,
-      "requires": {
-        "isexe": "^2.0.0"
-      }
-    },
-    "which-module": {
-      "version": "2.0.0",
-      "resolved": "https://registry.nlark.com/which-module/download/which-module-2.0.0.tgz",
-      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
-    },
-    "win-release": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
-      "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==",
-      "requires": {
-        "semver": "^5.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "5.7.1",
-          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
-          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
-        }
-      }
-    },
-    "word-wrap": {
-      "version": "1.2.3",
-      "resolved": "https://registry.nlark.com/word-wrap/download/word-wrap-1.2.3.tgz",
-      "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w="
-    },
-    "wrap-ansi": {
-      "version": "6.2.0",
-      "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
-      "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
-      "requires": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.0",
-          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
-          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
-          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "color-convert": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
-          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
-          "requires": {
-            "color-name": "~1.1.4"
-          }
-        },
-        "color-name": {
-          "version": "1.1.4",
-          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
-          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
-        },
-        "is-fullwidth-code-point": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
-          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
-        },
-        "string-width": {
-          "version": "4.2.2",
-          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
-          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.0"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.0",
-          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
-          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
-          "requires": {
-            "ansi-regex": "^5.0.0"
-          }
-        }
-      }
-    },
-    "wrap-ansi-cjs": {
-      "version": "npm:wrap-ansi@7.0.0",
-      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
-      "dev": true,
-      "requires": {
-        "ansi-styles": "^4.0.0",
-        "string-width": "^4.1.0",
-        "strip-ansi": "^6.0.0"
-      },
-      "dependencies": {
-        "ansi-regex": {
-          "version": "5.0.1",
-          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
-          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-          "dev": true
-        },
-        "ansi-styles": {
-          "version": "4.3.0",
-          "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
-          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-          "dev": true,
-          "requires": {
-            "color-convert": "^2.0.1"
-          }
-        },
-        "string-width": {
-          "version": "4.2.3",
-          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
-          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
-          "dev": true,
-          "requires": {
-            "emoji-regex": "^8.0.0",
-            "is-fullwidth-code-point": "^3.0.0",
-            "strip-ansi": "^6.0.1"
-          }
-        },
-        "strip-ansi": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
-          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^5.0.1"
-          }
-        }
-      }
-    },
-    "wrappy": {
-      "version": "1.0.2",
-      "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz",
-      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
-    },
-    "ws": {
-      "version": "7.5.3",
-      "resolved": "https://registry.nlark.com/ws/download/ws-7.5.3.tgz?cache=0&sync_timestamp=1625897053615&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-7.5.3.tgz",
-      "integrity": "sha1-Fgg1tjx9l7+rQY/BuKn87SrAGnQ="
-    },
-    "xml2js": {
-      "version": "0.4.23",
-      "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
-      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
-      "requires": {
-        "sax": ">=0.6.0",
-        "xmlbuilder": "~11.0.0"
-      }
-    },
-    "xmlbuilder": {
-      "version": "11.0.1",
-      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
-      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
-    },
-    "xregexp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-2.0.0.tgz",
-      "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA=="
-    },
-    "xtend": {
-      "version": "4.0.2",
-      "resolved": "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz",
-      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q="
-    },
-    "y18n": {
-      "version": "4.0.3",
-      "resolved": "https://registry.nlark.com/y18n/download/y18n-4.0.3.tgz",
-      "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8="
-    },
-    "yallist": {
-      "version": "3.1.1",
-      "resolved": "https://registry.nlark.com/yallist/download/yallist-3.1.1.tgz",
-      "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0="
-    },
-    "yocto-queue": {
-      "version": "0.1.0",
-      "resolved": "https://mirrors.huaweicloud.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz",
-      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
-      "dev": true
-    },
-    "zrender": {
-      "version": "5.0.4",
-      "resolved": "https://registry.nlark.com/zrender/download/zrender-5.0.4.tgz",
-      "integrity": "sha1-icNVr5CLn2SjAbOPdRt5UfLIqVo=",
-      "requires": {
-        "tslib": "2.0.3"
-      }
-    }
-  }
-}
diff --git a/Code Management/WIDESEA_WCSClient/src/views/Index.vue b/Code Management/WIDESEA_WCSClient/src/views/Index.vue
deleted file mode 100644
index 953bcae..0000000
--- a/Code Management/WIDESEA_WCSClient/src/views/Index.vue
+++ /dev/null
@@ -1,720 +0,0 @@
-<template>
-  <div id="vol-container" :class="['vol-theme-' + theme]">
-    <div class="vol-aside" :style="{ width: menuWidth + 'px' }">
-      <div class="header" :style="{ width: menuWidth - 1 + 'px' }">
-        <!-- <img v-show="!isCollapse" v-bind:src="logo" /> -->
-        <i @click="toggleLeft" class="el-icon-s-fold collapse-menu" />
-      </div>
-      <div class="vol-menu">
-        <el-scrollbar style="height: 100%">
-          <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false"
-            :isCollapse="isCollapse" :list="menuOptions"></VolMenu>
-        </el-scrollbar>
-      </div>
-    </div>
-    <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
-      <div class="vol-header">
-        <div class="project-name">WIDESEA_WCS</div>
-        <div class="header-text">
-          <!-- <div class="h-link">
-            <a
-              href="javascript:void(0)"
-              @click="to(item)"
-              v-for="(item, index) in links.filter((c) => {
-                return !c.icon;
-              })"
-              :key="index"
-            >
-              <span v-if="!item.icon"> {{ item.text }}</span>
-              <i v-else :class="item.icon"></i>
-            </a>
-          </div> -->
-        </div>
-        <div class="header-info">
-          <div class="h-link">
-            <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
-              return c.icon;
-            })" :key="index">
-              <span> {{ item.text }}</span>
-            </a>
-
-          </div>
-          <div>
-            <img class="user-header" :src="userImg" :onerror="errorImg" />
-          </div>
-          <div class="user">
-            <span>{{ userName }}</span>
-            <span id="index-date"></span>
-          </div>
-          <div class="settings">
-            <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" />
-          </div>
-        </div>
-      </div>
-      <div class="vol-path">
-        <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)"
-          type="border-card" class="header-navigation" v-model="selectId" :strtch="false">
-          <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0"
-            :key="navIndex" :label="item.name">
-            <span style="display: none">{{ navIndex }}</span>
-          </el-tab-pane>
-        </el-tabs>
-        <!-- 鍙抽敭鑿滃崟 -->
-        <div v-show="contextMenuVisible">
-          <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu">
-            <li v-show="visibleItem.all">
-              <el-button link @click="closeTabs()">
-                <i class="el-icon-close"></i>
-                {{
-                  navigation.length == 2 ? "鍏抽棴鑿滃崟" : "鍏抽棴鎵�鏈�"
-                }}</el-button>
-            </li>
-            <li v-show="visibleItem.left">
-              <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>鍏抽棴宸﹁竟</el-button>
-            </li>
-            <li v-show="visibleItem.right">
-              <el-button link @click="closeTabs('right')">
-                <i class="el-icon-right"></i>鍏抽棴鍙宠竟</el-button>
-            </li>
-            <li v-show="visibleItem.other">
-              <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>鍏抽棴鍏朵粬
-              </el-button>
-            </li>
-          </ul>
-        </div>
-      </div>
-      <div class="vol-main" id="vol-main">
-        <el-scrollbar style="height: 100%" v-if="permissionInited">
-          <loading v-show="$store.getters.isLoading()"></loading>
-          <router-view v-slot="{ Component }">
-            <keep-alive>
-              <component :is="Component" :key="$route.name"
-                v-if="!$route.meta || ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))" />
-            </keep-alive>
-            <component :is="Component" :key="$route.name" v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" />
-          </router-view>
-        </el-scrollbar>
-      </div>
-    </div>
-    <el-drawer title="閫夋嫨涓婚" v-model="drawer_model" direction="rtl" destroy-on-close>
-      <div class="theme-selector">
-        <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index"
-          :style="{ background: item.color }">
-          <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px"
-            class="t-left"></div>
-          <div class="t-right"></div>
-        </div>
-      </div>
-    </el-drawer>
-
-    <el-drawer title="娑堟伅鍒楄〃" v-model="messageModel" direction="rtl" destroy-on-close>
-      <Message :list="messageList"></Message>
-    </el-drawer>
-  </div>
-</template>
-<style lang="less" scoped>
-@import "./index/index.less";
-</style>
-<script>
-import loading from "@/components/basic/RouterLoading.vue";
-import VolMenu from "@/components/basic/VolElementMenu.vue";
-import Message from "./index/Message.vue";
-import MessageConfig from "./index/MessageConfig.js";
-import imgUrl from "@/assets/imgs/wms_x.png";
-var $this;
-var $interval;
-var $indexDate;
-import {
-  defineComponent,
-  reactive,
-  ref,
-  watch,
-  onMounted,
-  getCurrentInstance,
-} from "vue";
-import { useRouter, useRoute } from "vue-router";
-import store from "../store/index";
-import http from "../api/http";
-import useSignalr from '../uitils/signalr.js';
-export default defineComponent({
-  components: {
-    VolMenu,
-    loading,
-    Message,
-  },
-
-  data() {
-    return {
-      allTabs: true,
-      leftTabs: true,
-      rightTabs: true,
-      otherTabs: true,
-      menuLeft: 0,
-      menuTop: 0,
-      //  contextMenuVisible: false, // 鍙抽敭鍏抽棴鏄�/闅�
-    };
-  },
-  setup(props, context) {
-    // 鑾峰彇鍏ㄥ眬灞炴�у拰鏂规硶
-    const { proxy } = getCurrentInstance();
-
-    // 鑿滃崟瀵艰埅榛樿瀹藉害
-    const menuWidth = ref(200);
-    const contextMenuVisible = ref(false);
-    const isCollapse = ref(false);
-    const drawer_model = ref(false);
-    const messageModel = ref(false);
-    const theme_color = ref([
-      { name: "blue", color: "rgb(45, 140, 240)" },
-      { name: "blue2", color: "rgb(45, 140, 240)", leftColor: "#0068d6" },
-      { name: "red", color: "rgb(237, 64, 20)" },
-      { name: "red2", color: "rgb(237, 64, 20)", leftColor: "#a90000" },
-      { name: "dark", color: "#272929" },
-      { name: "orange", color: "#ff9900" },
-      { name: "orange2", color: "#ff9900", leftColor: "rgb(232 141 5)" },
-      { name: "green", color: "rgb(25, 190, 107)" },
-      { name: "green2", color: "rgb(25, 190, 107)", leftColor: "#019e4f" },
-      { name: "white", color: "#fff" },
-    ]);
-    const links = ref([
-      // {
-      //   text: "妗嗘灦瑙嗛",
-      //   path: "https://www.cctalk.com/m/group/90268531",
-      //   id: -3,
-      // },
-      // { text: "澶у睆鏁版嵁", path: "/bigdata", id: -3 },
-      // {
-      //   text: "妗嗘灦鏂囨。",
-      //   path: "http://v2.volcore.xyz/document/guide",
-      //   id: -2,
-      // },   {
-      //   text: "妗嗘灦浼佷笟鐗�",
-      //   path: "http://pro.volcore.xyz/",
-      //   id: 10,
-      // },
-      { text: "涓汉涓績", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
-      {
-        text: "瀹夊叏閫�鍑�",
-        path: "/login",
-        id: -4,
-        icon: "el-icon-switch-button",
-      },
-    ]);
-    const errorImg = ref(
-      'this.src="' + new URL("@/assets/imgs/error-img.png", import.meta.url).href + '"'
-    );
-    const selectId = ref("1");
-    // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
-    const selectMenuIndex = ref("0");
-    //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
-    const currentMenuId = ref(0);
-    const userName = ref("--");
-    const userInfo = ref({});
-    const visibleItem = reactive({
-      left: false,
-      right: false,
-      all: false,
-      other: false,
-    });
-    const userImg = ref("");
-    const navigation = reactive([
-      { orderNo: "0", id: "1", name: "棣栭〉", path: "/home" },
-    ]);
-    const logo = ref(imgUrl);
-    const theme = ref("blue2");
-    const menuOptions = ref([]);
-    const permissionInited = ref(false);
-    const messageList = reactive([]);
-    let _config = getCurrentInstance().appContext.config.globalProperties;
-    let router = useRouter();
-    const toggleLeft = () => {
-      isCollapse.value = !isCollapse.value;
-      menuWidth.value = isCollapse.value ? 63 : 200;
-    };
-    //2021.08.28寮�鏀炬墜鍔ㄦ姌鍙犺彍鍗曟柟娉�
-    _config.menu = {
-      show() {
-        toggleLeft();
-      },
-      hide() {
-        toggleLeft();
-      },
-    };
-    const changeTheme = (name) => {
-      if (theme.value != name) {
-        theme.value = name;
-      }
-      localStorage.setItem("vol3_theme", name);
-    };
-    const to = (item) => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      if (item.path.indexOf("http") != -1) {
-        window.open(item.path);
-        return;
-      }
-      if (typeof item == "string" || item.path == "/login") {
-        if (item == "/login" || item.path == "/login") {
-          //纭鏄惁閫�鍑�
-          store.commit("clearUserInfo", "");
-          window.location.href = "/";
-          return;
-        }
-        router.push({ path: item });
-        return;
-      }
-      if (item.path == "#") return;
-      open(item);
-    };
-    const open = (item, useRoute) => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      let _index = navigation.findIndex((x) => {
-        return x.path == item.path;
-      });
-      if (_index == -1) {
-        navigation.push({
-          //  orderNo: String(navigation.length),// 搴忓彿
-          id: item.id + "",
-          name: item.name || item.text || "鏃犳爣棰�",
-          path: item.path,
-          query: item.query, //2021.03.20淇鑷畾涔変簩娆℃墦寮�$tabs鏃跺弬鏁颁涪澶辩殑闂
-        });
-        //鏂版墦寮�鐨則ab绉昏嚦鏈�鍚庝竴涓�夐」
-        selectId.value = navigation.length - 1 + "";
-      } else {
-        selectId.value = _index + "";
-      }
-      if (useRoute === undefined) {
-        //闈炴爣鍑嗚彍鍗曪紝璁板綍鏈�鍚庝竴娆¤烦杞殑椤甸潰锛岀敤浜庡埛鏂�
-        setItem(item);
-        router.push(item);
-        // this.$router.push(item);
-      }
-      currentMenuId.value = item.id * 1;
-      // tab鑿滃崟缁戝畾鍙抽敭浜嬩欢
-      proxy.$nextTick(function (e) {
-        proxy.bindRightClickMenu(true);
-      });
-    };
-    const close = (path) => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      let index = navigation.findIndex((x) => {
-        return x.path == path;
-      });
-      if (index == -1) {
-        return _config.$Message.error("鏈壘鍒拌彍鍗�");
-      }
-      removeNav(index);
-    };
-    const setItem = (item) => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      localStorage.setItem(
-        window.location.origin + "_tabs",
-        JSON.stringify(item)
-      );
-    };
-    const getItem = () => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      let nav = localStorage.getItem(window.location.origin + "_tabs");
-      return nav ? JSON.parse(nav) : null;
-    };
-    const selectNav = (item) => {
-      //鍗囩骇element姝e紡鐗堜慨鏀�
-      selectId.value = item.props.name;
-      let _path = navigation[item.index].path;
-      currentMenuId.value = (
-        menuOptions.value.find((c) => {
-          return c.path == _path;
-        }) || { id: 0 }
-      ).id;
-
-      router.push({
-        path: navigation[item.index].path,
-        query: navigation[item.index].query,
-      });
-    };
-
-    const removeNav = (_index) => {
-      return new Promise(() => {
-        //鍏抽棴鐨勫綋鍓嶉」,璺宠浆鍒板墠涓�涓〉闈�
-        if (selectId.value == _index + "") {
-          console.log(navigation[_index - 1]);
-          setItem(navigation[_index - 1]);
-          router.push({
-            path: navigation[_index - 1].path,
-            //2022.06.27淇tabs浜屾鍒囨崲鍚庡弬鏁颁涪澶辩殑闂
-            query: navigation[_index - 1].query,
-          });
-          navigation.splice(_index, 1);
-          selectId.value = selectId.value - 1 + "";
-          return;
-        }
-        if (_index < selectId.value) {
-          selectId.value = selectId.value - 1 + "";
-        }
-        navigation.splice(_index, 1);
-        currentMenuId.value = (
-          menuOptions.value.find((c) => {
-            return c.path == navigation[selectId.value * 1].path;
-          }) || { id: 0 }
-        ).id;
-      });
-    };
-
-    const getSelectMenuName = (id) => {
-      return menuOptions.value.find(function (x) {
-        return x.id == id;
-      });
-    };
-    const onSelect = (treeId) => {
-      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
-      var item = getSelectMenuName(treeId);
-      open(item, false);
-    };
-
-    /**
-     * 鏄剧ず鍙抽敭鑿滃崟
-     * @param {*} e 浜嬩欢瀵硅薄
-     */
-    const openTabsMenu = function (e) {
-      e.preventDefault(); // 闃叉榛樿鑿滃崟寮瑰嚭
-      let tabId = e.target.id.split("-")[1] * 1;
-
-      //璁板綍褰撳墠閫変腑鐨勮彍鍗昳ndex
-      selectMenuIndex.value =
-        document.getElementById("pane-" + tabId).children[0].textContent * 1;
-      //鍙湁棣栭〉鏃朵笉鏄剧ず
-      if (navigation.length == 1) {
-        return;
-      }
-
-      //棣栭〉璁剧疆鏄剧ず鍏抽棴鍙宠竟鑿滃崟
-      if (!selectMenuIndex.value) {
-        visibleItem.all = false;
-        visibleItem.right = true;
-        visibleItem.left = false;
-        visibleItem.other = false;
-      } else {
-        visibleItem.all = true;
-        //涓嶆槸鏈�鍚庝竴涓樉绀哄叧闂彸杈硅彍鍗�
-        visibleItem.right = selectMenuIndex.value != navigation.length - 1;
-        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴宸﹁竟
-        visibleItem.left = navigation.length != 2;
-        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴鍏朵粬
-        visibleItem.other = navigation.length != 2;
-      }
-      contextMenuVisible.value = true;
-      // 璁剧疆鍙抽敭鑿滃崟鏄剧ず鐨勪綅缃�
-      proxy.menuLeft =
-        e.target.getBoundingClientRect().left - (isCollapse.value ? 63 : 198); //-e.target.clientWidth
-      proxy.menuTop = 36;
-    };
-
-    /**
-     * 鍏抽棴鍙抽敭鑿滃崟
-     */
-    const closeTabsMenu = () => {
-      contextMenuVisible.value = false;
-    };
-    const toHome = () => {
-      open({
-        text: navigation[0].name,
-        path: navigation[0].path,
-      });
-    };
-    /**
-     * 鍏抽棴鍏跺畠鏍囩椤�
-     * @param {*} par 鍏抽棴绫诲瀷(left,right,other)
-     */
-    const closeTabs = (value) => {
-      let _menuId = navigation[selectId.value * 1].id;
-      let currnetIndex = selectId.value * 1; // navigation.findIndex(c => { return c.id == selectId.value });
-      switch (value) {
-        case "left": {
-          // 鍒犻櫎宸︿晶tab鏍囩
-          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
-          break;
-        }
-        case "right": {
-          // 鍒犻櫎鍙充晶tab鏍囩
-          if (selectMenuIndex.value == 0) {
-            navigation.splice(currnetIndex); // 鍒犻櫎鍙充晶tab鏍囩
-            toHome();
-          } else {
-            navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩
-            if (selectMenuIndex.value < currnetIndex) {
-              navigation.splice(
-                selectMenuIndex.value,
-                currnetIndex - selectMenuIndex.value
-              );
-            }
-          }
-          break;
-        }
-        case "other": {
-          // 鍒犻櫎鍏朵粬鎵�鏈塼ab鏍囩
-          navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩(杩欓噷蹇呴』鎸夌収鍙斥啋宸﹂『搴忓垹闄�)
-          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
-          break;
-        }
-        default: {
-          //鍏抽棴鎵�鏈�
-          navigation.splice(1, navigation.length);
-          toHome();
-          break;
-        }
-      }
-      selectId.value =
-        navigation.findIndex((c) => {
-          return c.id == _menuId;
-        }) + "";
-      closeTabsMenu();
-    };
-
-    watch(
-      () => contextMenuVisible.value,
-      (newVal, oldVal) => {
-        // 鐩戣
-        if (newVal) {
-          document.body.addEventListener("click", closeTabsMenu);
-        } else {
-          document.body.removeEventListener("click", closeTabsMenu);
-        }
-      }
-    );
-
-    /**
-     * 绯荤粺鍒涘缓寮�濮�
-     */
-    const created = () => {
-      let _theme = localStorage.getItem("vol3_theme");
-      if (_theme) {
-        theme.value = _theme;
-      }
-
-      let _userInfo = store.getters.getUserInfo();
-      if (_userInfo) {
-        userName.value = _userInfo.userName;
-        if (_userInfo.img) {
-          userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
-        }
-      }
-      Object.assign(_config.$tabs, { open: open, close: close });
-
-      http.get("api/Sys_Menu/getTreeMenu", {}, true).then((data) => {
-        data.push({ id: "1", name: "棣栭〉", url: "/home" }); // 涓轰簡鑾峰彇閫変腑id浣跨敤
-        data.forEach((d) => {
-          d.path = (d.url || "").replace("/Manager", "");
-          d.to = (d.url || "").replace("/Manager", "");
-          if (!d.icon || d.icon.substring(0, 3) != "el-") {
-            d.icon = "el-icon-menu";
-          }
-        });
-        store.dispatch("setPermission", data);
-        menuOptions.value = data;
-        permissionInited.value = true;
-
-        //寮�鍚秷鎭帹閫侊紙main.js涓缃槸鍚﹀紑鍚痵ignalR锛�2022.05.05
-        if (_config.$global.signalR) {
-          MessageConfig(http, (result) => {
-            messageList.unshift(result);
-            //    console.log(result)
-          });
-        }
-
-        const { startSignalr } = useSignalr()
-        startSignalr()
-
-        //褰撳墠鍒锋柊鏄笉鏄椤�
-        if (router.currentRoute.value.path != navigation[0].path) {
-          //鏌ユ壘绯荤粺鑿滃崟
-          let item = menuOptions.value.find((x) => {
-            return x.path == router.currentRoute.value.path; //this.$route.path;
-          });
-          if (item) return onSelect(item.id);
-          //鏌ユ壘椤堕儴蹇嵎杩炴帴
-          item = links.value.find((x) => {
-            return x.path == router.currentRoute.value.path; //this.$route.path;
-          });
-          //鏌ユ壘鏈�鍚庝竴娆¤烦杞殑椤甸潰
-          if (!item) {
-            item = getItem();
-          }
-          if (item) {
-            return open(item, false);
-          }
-        }
-        selectId.value = "1";
-      });
-    };
-    created();
-    return {
-      menuWidth,
-      isCollapse,
-      drawer_model,
-      theme_color,
-      errorImg,
-      userInfo,
-      userName,
-      userImg,
-      selectId,
-      selectMenuIndex,
-      navigation,
-      links,
-      onSelect,
-      openTabsMenu,
-      selectNav,
-      getSelectMenuName,
-      removeNav,
-      logo,
-      theme,
-      menuOptions,
-      permissionInited,
-      changeTheme,
-      to,
-      toggleLeft,
-      messageModel,
-      messageList,
-      contextMenuVisible,
-      visibleItem,
-      closeTabsMenu,
-      closeTabs,
-      currentMenuId,
-    };
-  },
-  /**
-   * 鎸傝浇閽╁瓙鍑芥暟
-   */
-  mounted() {
-    let _date = showTime();
-    $indexDate = document.getElementById("index-date");
-    $indexDate.innerText = _date;
-    $interval = setInterval(function () {
-      $indexDate.innerText = showTime();
-    }, 1000);
-
-    this.bindRightClickMenu(true);
-  },
-
-  methods: {
-    /**
-     * 缁戝畾鍙抽敭浜嬩欢
-     * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
-     * @param {*} $event 浜嬩欢
-     */
-    bindRightClickMenu(enable) {
-      if (!enable) return;
-      let that = this;
-      // 浣跨敤鍘熺敓js 涓哄崟涓猟om缁戝畾榧犳爣鍙冲嚮浜嬩欢
-      that.$nextTick(() => {
-        let tab_top_dom = Object.assign(
-          [],
-          document.getElementsByClassName("el-tabs__item is-top")
-        );
-        tab_top_dom.forEach((item, index) => {
-          item.oncontextmenu = that.openTabsMenu;
-        });
-      });
-    },
-  },
-
-  /**
-   * 閿�姣侀挬瀛愬嚱鏁�
-   */
-  destroyed() {
-    $this = null;
-    clearInterval($interval);
-  },
-});
-const week = new Array(
-  "鏄熸湡涓�",
-  "鏄熸湡浜�",
-  "鏄熸湡涓�",
-  "鏄熸湡鍥�",
-  "鏄熸湡浜�",
-  "鏄熸湡鍏�",
-  "鏄熸湡鏃�"
-);
-function showTime() {
-  let date = new Date();
-  let year = date.getFullYear();
-  let month = date.getMonth() + 1;
-  let day = date.getDate();
-  let hour = date.getHours();
-  let minutes = date.getMinutes();
-  let second = date.getSeconds();
-
-  return (
-    year +
-    "." +
-    (month < 10 ? "0" + month : month) +
-    "." +
-    (day < 10 ? "0" + day : day) + //202.08.08淇鏃ユ湡澶╂暟灏忎簬10鏃舵坊鍔�0
-    "" +
-    " " +
-    (hour < 10 ? "0" + hour : hour) +
-    ":" +
-    (minutes < 10 ? "0" + minutes : minutes) +
-    ":" +
-    (second < 10 ? "0" + second : second) +
-    " " + //2020.08.30淇棣栭〉鏃ユ湡鏄熸湡澶╀笉鏄剧ず鐨勯棶棰�
-    (week[date.getDay() - 1] || week[6])
-  );
-}
-</script>
-
-<style lang="less" scoped>
-.vol-container .vol-path ::v-deep(.el-tabs__content) {
-  padding: 0;
-}
-
-.contextMenu {
-  width: 120px;
-  margin: 0;
-  border: 1px solid #eaeaea;
-  background: #fff;
-  z-index: 30000;
-  position: absolute;
-  list-style-type: none;
-  padding: 5px 0;
-  border-radius: 4px;
-  font-size: 14px;
-  color: #333;
-  box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%);
-
-  i,
-  button {
-    font-size: 14px !important;
-  }
-}
-
-.contextMenu li {
-  margin: 0;
-  padding: 5px 17px;
-}
-
-.contextMenu li:hover {
-  background: #fafafa;
-  cursor: pointer;
-}
-
-.contextMenu li button {
-  color: #626060;
-  font-size: 14px;
-  letter-spacing: 1px;
-}
-
-.el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child,
-.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) {
-  padding: 0;
-}
-
-.header-navigation ::v-deep(.el-tabs__item.is-top) {
-  padding: 0 15px;
-}
-</style>
-<style>
-.horizontal-collapse-transition {
-  transition: 0s width ease-in-out, 0s padding-left ease-in-out,
-    0s padding-right ease-in-out;
-}
-</style>
diff --git a/Code Management/WIDESEA_WCSClient/src/views/taskinfo/task.vue b/Code Management/WIDESEA_WCSClient/src/views/taskinfo/task.vue
deleted file mode 100644
index 855e46f..0000000
--- a/Code Management/WIDESEA_WCSClient/src/views/taskinfo/task.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-
-<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/task.js";
-import { ref, defineComponent } from "vue";
-export default defineComponent({
-  setup() {
-    const table = ref({
-      key: "taskId",
-      footer: "Foots",
-      cnName: "浠诲姟淇℃伅",
-      name: "task",
-      url: "/Task/",
-      sortName: "CreateDate",
-    });
-    const editFormFields = ref({
-      taskNum: "",
-      palletCode: "",
-      roadway: "",
-      taskType: "",
-      taskState: "",
-      wMSId: "",
-      sourceAddress: "",
-      targetAddress: "",
-      currentAddress: "",
-      nextAddress: "",
-      creater: "",
-      createDate: "",
-      grade: "",
-      productionLine: ""
-    });
-    const editFormOptions = ref([[{ title: "浼樺厛绾�", field: "grade", type: "int" },]]);
-    const searchFormFields = ref({
-      taskNum: "",
-      palletCode: "",
-      roadway: "",
-      sourceAddress: "",
-      targetAddress: "",
-      currentAddress: "",
-      nextAddress: "",
-      creater: "",
-      createDate: "",
-    });
-    const searchFormOptions = ref([
-      [
-        { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
-        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "text" },
-        {
-          title: "浠诲姟绫诲瀷",
-          field: "taskType",
-          type: "selectList",
-          dataKey: "taskType",
-          data: [],
-        },
-        {
-          title: "浠诲姟鐘舵��",
-          field: "taskState",
-          type: "selectList",
-          dataKey: "taskState",
-          data: [],
-        },
-      ],
-      [
-        { title: "璧峰鍦板潃", field: "sourceAddress", type: "text" },
-        { title: "鐩爣鍦板潃", field: "targetAddress", type: "text" },
-        { title: "褰撳墠浣嶇疆", field: "currentAddress", type: "text" },
-        { title: "涓嬩竴浣嶇疆", field: "nextAddress", type: "text" },
-      ],
-      [
-        { title: "宸烽亾鍙�", field: "roadway", type: "text" },
-        { title: "鍒涘缓浜�", field: "creater", type: "text" },
-        { title: "鍒涘缓鏃堕棿", field: "createDate", 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: 90,
-        align: "left",
-      },
-      {
-        field: "palletCode",
-        title: "鎵樼洏缂栧彿",
-        type: "string",
-        width: 160,
-        align: "left",
-      },
-      {
-        field: "roadway",
-        title: "宸烽亾鍙�",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
-      {
-        field: "taskType",
-        title: "浠诲姟绫诲瀷",
-        type: "int",
-        width: 120,
-        align: "left",
-        bind: { key: "taskType", data: [] },
-      },
-      {
-        field: "taskState",
-        title: "浠诲姟鐘舵��",
-        type: "int",
-        width: 150,
-        align: "left",
-        bind: { key: "taskState", data: [] },
-      },
-      {
-        field: "sourceAddress",
-        title: "璧峰鍦板潃",
-        type: "int",
-        width: 120,
-        align: "left",
-      },
-      {
-        field: "targetAddress",
-        title: "鐩爣鍦板潃",
-        type: "string",
-        width: 150,
-        align: "left",
-      },
-      {
-        field: "currentAddress",
-        title: "褰撳墠浣嶇疆",
-        type: "string",
-        width: 110,
-        align: "left",
-      },
-      {
-        field: "nextAddress",
-        title: "涓嬩竴浣嶇疆",
-        type: "string",
-        width: 110,
-        align: "left",
-      },
-      {
-        field: "exceptionMessage",
-        title: "寮傚父淇℃伅",
-        type: "string",
-        width: 90,
-        align: "left",
-
-      },
-      {
-        field: "grade",
-        title: "浼樺厛绾�",
-        type: "int",
-        width: 60,
-        align: "left",
-      },
-      {
-        field: "dispatchertime",
-        title: "浠诲姟涓嬪彂鏃堕棿",
-        type: "datetime",
-        width: 110,
-        align: "left",
-      },
-      {
-        field: "wMSId",
-        title: "WMS浠诲姟涓婚敭",
-        type: "int",
-        width: 120,
-        align: "left",
-        hidden: true,
-      },
-
-      {
-        field: "createDate",
-        title: "鍒涘缓鏃堕棿",
-        type: "datetime",
-        width: 150,
-        align: "left",
-      },
-
-      {
-        field: "modifyDate",
-        title: "淇敼鏃堕棿",
-        type: "datetime",
-        width: 160,
-        align: "left",
-      },
-      {
-        field: "creater",
-        title: "鍒涘缓浜�",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
-      {
-        field: "modifier",
-        title: "淇敼浜�",
-        type: "string",
-        width: 90,
-        align: "left",
-      },
-      {
-        field: "remark",
-        title: "澶囨敞",
-        type: "string",
-        width: 100,
-        align: "left",
-        hidden: true,
-      },
-    ]);
-    const detail = ref({
-      cnName: "",
-      table: "",
-      columns: [],
-      sortName: "",
-      key: "",
-    });
-    return {
-      table,
-      extend,
-      editFormFields,
-      editFormOptions,
-      searchFormFields,
-      searchFormOptions,
-      columns,
-      detail,
-    };
-  },
-});
-</script>
-  
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db
deleted file mode 100644
index 8d1cfd4..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
deleted file mode 100644
index 8330d3f..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
deleted file mode 100644
index d2c0788..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
deleted file mode 100644
index e31041e..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
deleted file mode 100644
index b3a4d55..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
deleted file mode 100644
index 1ff98e4..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
+++ /dev/null
Binary files differ
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
deleted file mode 100644
index 893f35d..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.backup.json
+++ /dev/null
@@ -1,290 +0,0 @@
-{
-  "Version": 1,
-  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\",
-  "Documents": [
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\modbus\\modbustcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\modbus\\modbustcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\otherdevicejob\\commonotherdevicesjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\otherdevicejob\\commonotherdevicesjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\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:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\dto\\deviceprodto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\dto\\deviceprodto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskexecutedetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskexecutedetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\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:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    }
-  ],
-  "DocumentGroupContainers": [
-    {
-      "Orientation": 0,
-      "VerticalTabListWidth": 256,
-      "DocumentGroups": [
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": 2,
-          "Children": [
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "BaseCommunicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "ViewState": "AgIAAEkAAAAAAAAAAAAkwE4AAAAyAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T11:12:15.288Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "SiemensS7Communicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "ViewState": "AgIAAAMBAAAAAAAAAAAswB0BAAA9AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:57:48.617Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "ModbusTcpCommunicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "ViewState": "AgIAAAUBAAAAAAAAAAAhwDQBAAAJAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:19:42.63Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 11,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAABoAAAAAAAAAAAAqwCIAAABaAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:13:17.339Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "CommonOtherDevicesJob.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "ViewState": "AgIAAFAAAAAAAAAAAAAawGgAAAAmAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:27:07.759Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "OtherDevice.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ViewState": "AgIAAM0AAAAAAAAAAAAAwOMAAAB3AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:20:09.783Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "CommonStackerCraneJob.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ViewState": "AgIAADQBAAAAAAAAAAAqwO4AAABVAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:58:39.511Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 12,
-              "Title": "ITaskExecuteDetailService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAAAqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:14:48.051Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "ITaskService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAFYAAAA5AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:15:52.818Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "ViewState": "AgIAABYAAAAAAAAAAAAqwDEAAAA+AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:16.44Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "QuartzJobHostedService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ViewState": "AgIAADwAAAAAAAAAAAAmwFsAAAA7AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:56.149Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "Title": "DeviceProDTO.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "ViewState": "AgIAADQAAAAAAAAAAAAYwCcAAAASAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:23:29.264Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "TaskExecuteDetailController.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "ViewState": "AgIAAAUAAAAAAAAAAAAmwBsAAAA0AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:32.126Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 13,
-              "Title": "AGVSignal.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "ViewState": "AgIAABoAAAAAAAAAAAAmwCwAAABtAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:12:09.551Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 15,
-              "Title": "StackerCraneTaskCommand.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "ViewState": "AgIAAB0AAAAAAAAAAAAAAB8AAAATAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:49:16.959Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 14,
-              "Title": "StackerCraneDBName.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAAQAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:49:00.788Z"
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json b/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
deleted file mode 100644
index b8c6302..0000000
--- a/Code Management/WIDESEA_WCSServer/.vs/WIDESEAWCS_Server/v17/DocumentLayout.json
+++ /dev/null
@@ -1,290 +0,0 @@
-{
-  "Version": 1,
-  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\",
-  "Documents": [
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\modbus\\modbustcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\modbus\\modbustcpcommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\otherdevices\\otherdevice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\otherdevicejob\\commonotherdevicesjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\otherdevicejob\\commonotherdevicesjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\basecommunicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{861C4D0B-A478-48DB-A0FA-AE70F5BA210A}|WIDESEAWCS_Communicator\\WIDESEAWCS_Communicator.csproj|solutionrelative:wideseawcs_communicator\\siemens\\siemenss7communicator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\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:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\dto\\deviceprodto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\dto\\deviceprodto.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{6236BFFF-173D-44A8-9FC3-7C001EA30347}|WIDESEAWCS_QuartzJob\\WIDESEAWCS_QuartzJob.csproj|solutionrelative:wideseawcs_quartzjob\\quartzextensions\\quartzjobhostedservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskexecutedetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskexecutedetailcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\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:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\agv\\agvsignal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranedbname.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    },
-    {
-      "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\get\\fanggangagv\\code management\\widesea_wcsserver\\wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
-      "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\stackercranejob\\stackercranetaskcommand.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
-    }
-  ],
-  "DocumentGroupContainers": [
-    {
-      "Orientation": 0,
-      "VerticalTabListWidth": 256,
-      "DocumentGroups": [
-        {
-          "DockedWidth": 200,
-          "SelectedChildIndex": 2,
-          "Children": [
-            {
-              "$type": "Document",
-              "DocumentIndex": 3,
-              "Title": "BaseCommunicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\BaseCommunicator.cs",
-              "ViewState": "AgIAAEkAAAAAAAAAAAAkwE4AAAAyAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T11:12:15.288Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 4,
-              "Title": "SiemensS7Communicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\Siemens\\SiemensS7Communicator.cs",
-              "ViewState": "AgIAAAMBAAAAAAAAAAAswB0BAAA9AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:57:48.617Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 0,
-              "Title": "ModbusTcpCommunicator.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "RelativeToolTip": "WIDESEAWCS_Communicator\\Modbus\\ModbusTcpCommunicator.cs",
-              "ViewState": "AgIAAJUAAAAAAAAAAAAYwKwAAAAxAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:19:42.63Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 11,
-              "Title": "TaskService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs",
-              "ViewState": "AgIAABoAAAAAAAAAAAAqwCIAAABaAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:13:17.339Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 2,
-              "Title": "CommonOtherDevicesJob.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\OtherDeviceJob\\CommonOtherDevicesJob.cs",
-              "ViewState": "AgIAAFcAAAAAAAAAAAAawGgAAAApAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:27:07.759Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 1,
-              "Title": "OtherDevice.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\OtherDevices\\OtherDevice.cs",
-              "ViewState": "AgIAAM0AAAAAAAAAAAAWwOMAAAB5AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:20:09.783Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 5,
-              "Title": "CommonStackerCraneJob.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\CommonStackerCraneJob.cs",
-              "ViewState": "AgIAADQBAAAAAAAAAAAqwO4AAABVAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:58:39.511Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 12,
-              "Title": "ITaskExecuteDetailService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAAAqAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:14:48.051Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 10,
-              "Title": "ITaskService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskService.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAAFYAAAA5AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:15:52.818Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 9,
-              "Title": "TaskController.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskController.cs",
-              "ViewState": "AgIAABYAAAAAAAAAAAAqwDEAAAA+AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:16.44Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 7,
-              "Title": "QuartzJobHostedService.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\QuartzExtensions\\QuartzJobHostedService.cs",
-              "ViewState": "AgIAADwAAAAAAAAAAAAmwFsAAAA7AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:56.149Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 6,
-              "Title": "DeviceProDTO.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "RelativeToolTip": "WIDESEAWCS_QuartzJob\\DTO\\DeviceProDTO.cs",
-              "ViewState": "AgIAADQAAAAAAAAAAAAYwCcAAAASAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:23:29.264Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 8,
-              "Title": "TaskExecuteDetailController.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Task\\TaskExecuteDetailController.cs",
-              "ViewState": "AgIAAAUAAAAAAAAAAAAmwBsAAAA0AAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:16:32.126Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 13,
-              "Title": "AGVSignal.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\AGV\\AGVSignal.cs",
-              "ViewState": "AgIAABoAAAAAAAAAAAAmwCwAAABtAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T10:12:09.551Z",
-              "EditorCaption": ""
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 15,
-              "Title": "StackerCraneTaskCommand.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneTaskCommand.cs",
-              "ViewState": "AgIAAB0AAAAAAAAAAAAAAB8AAAATAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:49:16.959Z"
-            },
-            {
-              "$type": "Document",
-              "DocumentIndex": 14,
-              "Title": "StackerCraneDBName.cs",
-              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WIDESEA_WCSServer\\WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "RelativeToolTip": "WIDESEAWCS_Tasks\\StackerCraneJob\\StackerCraneDBName.cs",
-              "ViewState": "AgIAAAAAAAAAAAAAAAAAABoAAAAQAAAAAAAAAA==",
-              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
-              "WhenOpened": "2026-04-01T08:49:00.788Z"
-            }
-          ]
-        }
-      ]
-    }
-  ]
-}
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs b/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
deleted file mode 100644
index c92063c..0000000
--- a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Controllers/System/Sys_DictionaryController.cs
+++ /dev/null
@@ -1,486 +0,0 @@
-锘縰sing Autofac.Core;
-using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Http;
-using Microsoft.AspNetCore.Mvc;
-using Microsoft.Extensions.DependencyModel;
-using Newtonsoft.Json;
-using System.Reflection;
-using WIDESEAWCS_Core.BaseController;
-using WIDESEAWCS_Core.Helper;
-using WIDESEAWCS_ISystemServices;
-using WIDESEAWCS_Model.Models;
-using System.IO;
-using WIDESEAWCS_QuartzJob.DeviceBase;
-using WIDESEAWCS_DTO.System;
-using System.ComponentModel;
-using System.Collections.Generic;
-using WIDESEAWCS_Communicator;
-using Quartz;
-using WIDESEAWCS_QuartzJob;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
-using WIDESEAWCS_Core.Enums;
-using WIDESEAWCS_Core.Caches;
-using WIDESEAWCS_QuartzJob.DeviceEnum;
-using WIDESEAWCS_Common.TaskEnum;
-
-namespace WIDESEAWCS_WCSServer.Controllers.System
-{
-    [Route("api/Sys_Dictionary")]
-    [ApiController]
-    public class Sys_DictionaryController : ApiBaseController<ISys_DictionaryService, Sys_Dictionary>
-    {
-        private readonly IHttpContextAccessor _httpContextAccessor;
-        private readonly ICacheService _cacheService;
-
-        public Sys_DictionaryController(ISys_DictionaryService service, IHttpContextAccessor httpContextAccessor, ICacheService cacheService) : base(service)
-        {
-            _httpContextAccessor = httpContextAccessor;
-            _cacheService = cacheService;
-        }
-
-        [HttpPost, Route("GetVueDictionary"), AllowAnonymous]
-        public IActionResult GetVueDictionary([FromBody] string[] dicNos)
-        {
-            List<VueDictionaryDTO> vueDictionaryDTOs = Service.GetVueDictionary(dicNos);
-            try
-            {
-                List<string> cacheDicNos = new List<string>();
-                foreach (string n in dicNos)
-                {
-                    string str = _cacheService.Get(n);
-                    if (!string.IsNullOrEmpty(str))
-                    {
-                        VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
-
-                        if (vueDictionary != null)
-                        {
-                            vueDictionaryDTOs.Add(vueDictionary);
-                            cacheDicNos.Add(n);
-                        }
-                    }
-                }
-                List<string> dicList = dicNos.ToList();
-                if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
-                {
-                    string str = AppSettings.Configuration["dics"];
-                    if (!string.IsNullOrEmpty(str))
-                    {
-                        List<string> cusDics = new List<string>();
-
-                        List<string> dics = str.Split(",").ToList();
-
-                        foreach (var item in dics)
-                        {
-                            dicList.Remove(item);
-                            cusDics.Add(item);
-                        }
-
-                        foreach (var item in cusDics)
-                        {
-                            VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
-                            if (vueDictionaryDTO != null)
-                            {
-                                vueDictionaryDTOs.Add(vueDictionaryDTO);
-                                if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache)
-                                {
-                                    _cacheService.Add(item, vueDictionaryDTO.Serialize());
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            catch
-            {
-
-            }
-            return Json(vueDictionaryDTOs);
-        }
-
-        private VueDictionaryDTO? GetVueDictionary(string key)
-        {
-            VueDictionaryDTO? result = null;
-            try
-            {
-                switch (key)
-                {
-                    case "deviceType":
-                        {
-                            Type type = typeof(IDevice);
-                            var basePath = AppContext.BaseDirectory;
-                            //string path = Path.Combine("", Assembly.GetAssembly(type).GetName());
-                            Assembly assembly = Assembly.GetAssembly(type);
-                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
-                            List<object> data = new List<object>();
-                            foreach (var deviceType in types)
-                            {
-                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = deviceType.Name, value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = deviceType.Name, value = deviceType.Name });
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "jobAssembly":
-                        {
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = new List<object>() { new { key = "WIDESEAWCS_Tasks", value = "WIDESEAWCS_Tasks" } } };
-
-                        }
-                        break;
-                    case "jobClassName":
-                        {
-                            Type type = typeof(IJob);
-                            var basePath = AppContext.BaseDirectory;
-                            string path = Path.Combine(basePath, $"WIDESEAWCS_Tasks");
-                            Assembly assembly = Assembly.LoadFrom(path);
-                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = types.Select(x => new { key = x.Name, value = x.Name }) };
-                        }
-                        break;
-                    case "deviceStatus":
-                        {
-                            List<object> data = new List<object>();
-                            Type type = typeof(DeviceStatusEnum);
-                            List<int> enums = Enum.GetValues(type).Cast<int>().ToList();
-                            int index = 0;
-                            foreach (var item in enums)
-                            {
-                                FieldInfo? fieldInfo = type.GetField(((DeviceStatusEnum)item).ToString());
-                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = item.ToString(), value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = item.ToString(), value = item.ToString() });
-                                }
-                                index++;
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "taskType":
-                        {
-                            List<object> data = new List<object>();
-
-                            #region TaskInboundTypeEnum
-                            {
-                                Type type = typeof(TaskInboundTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskOutboundTypeEnum
-                            {
-                                Type type = typeof(TaskOutboundTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskRelocationTypeEnum
-                            {
-                                Type type = typeof(TaskRelocationTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskOtherTypeEnum
-                            {
-                                Type type = typeof(TaskOtherTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskAGVCarryTypeEnum
-                            {
-                                Type type = typeof(TaskAGVCarryTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskAGVCarryTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskAGVCarryTypeEnum).GetField(((TaskAGVCarryTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskAcrossFloorTypeEnum
-                            {
-                                Type type = typeof(TaskAcrossFloorTypeEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorTypeEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskAcrossFloorTypeEnum).GetField(((TaskAcrossFloorTypeEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "taskState":
-                        {
-                            List<object> data = new List<object>();
-
-                            #region TaskInStatusEnum
-                            {
-                                Type type = typeof(TaskInStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskOutStatusEnum
-                            {
-                                Type type = typeof(TaskOutStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskRelocationStatusEnum
-                            {
-                                Type type = typeof(TaskRelocationStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskRelocationStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskRelocationStatusEnum).GetField(((TaskRelocationStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskAGVCarryStatusEnum
-                            {
-                                Type type = typeof(TaskAGVCarryStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskAGVCarryStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskAGVCarryStatusEnum).GetField(((TaskAGVCarryStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            #region TaskAcrossFloorStatusEnum
-                            {
-                                Type type = typeof(TaskAcrossFloorStatusEnum);
-                                List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorStatusEnum)).Cast<int>().ToList();
-                                int index = 0;
-                                foreach (var item in enums)
-                                {
-                                    FieldInfo? fieldInfo = typeof(TaskAcrossFloorStatusEnum).GetField(((TaskAcrossFloorStatusEnum)item).ToString());
-                                    DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                    if (description != null)
-                                    {
-                                        data.Add(new { key = item.ToString(), value = description.Description });
-                                    }
-                                    else
-                                    {
-                                        data.Add(new { key = item.ToString(), value = item.ToString() });
-                                    }
-                                    index++;
-                                }
-                            }
-                            #endregion
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-
-                    case "devicePlcType":
-                        {
-                            Type type = typeof(BaseCommunicator);
-                            var basePath = AppContext.BaseDirectory;
-                            string path = Path.Combine(basePath, $"WIDESEAWCS_Communicator.dll");
-                            Assembly assembly = Assembly.LoadFrom(path);
-                            List<Type> types = assembly.GetTypes().Where(x => type.IsAssignableFrom(x) && !x.IsAbstract && !x.IsInterface).ToList();
-                            List<object> data = new List<object>();
-                            foreach (var deviceType in types)
-                            {
-                                DescriptionAttribute? description = deviceType.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = deviceType.Name, value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = deviceType.Name, value = deviceType.Name });
-                                }
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                    case "inOutType":
-                        {
-                            List<object> data = new List<object>();
-                            Type type = typeof(RouterInOutType);
-                            List<int> enums = Enum.GetValues(typeof(RouterInOutType)).Cast<int>().ToList();
-                            int index = 0;
-                            foreach (var item in enums)
-                            {
-                                FieldInfo? fieldInfo = typeof(RouterInOutType).GetField(((RouterInOutType)item).ToString());
-                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
-                                if (description != null)
-                                {
-                                    data.Add(new { key = item.ToString(), value = description.Description });
-                                }
-                                else
-                                {
-                                    data.Add(new { key = item.ToString(), value = item.ToString() });
-                                }
-                                index++;
-                            }
-
-                            result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
-                        }
-                        break;
-                }
-                return result;
-            }
-            catch (Exception ex)
-            {
-                return null;
-            }
-        }
-    }
-}
diff --git a/Code Management/WIDESEA_WCSClient/.gitignore b/Code Management/WMS/WIDESEA_WMSClient/.gitignore
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/.gitignore
copy to Code Management/WMS/WIDESEA_WMSClient/.gitignore
diff --git a/Code Management/WIDESEA_WCSClient/README.md b/Code Management/WMS/WIDESEA_WMSClient/README.md
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/README.md
copy to Code Management/WMS/WIDESEA_WMSClient/README.md
diff --git a/Code Management/WMS/WIDESEA_WMSClient/config/buttons.js b/Code Management/WMS/WIDESEA_WMSClient/config/buttons.js
new file mode 100644
index 0000000..88df9d5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/config/buttons.js
@@ -0,0 +1,113 @@
+
+let buttons = [{
+    name: "鏌� 璇�",
+    value: 'Search',
+    icon: 'el-icon-search',
+    class: '',
+    type: 'primary',
+    onClick: function () {
+        this.search();
+    }
+},
+{
+    name: "鏂� 寤�",
+    icon: 'el-icon-plus',
+    value: 'Add',
+    class: '',
+    //  plain:true,
+    type: 'success',
+    // plain:true,
+    onClick: function () {
+        this.add();
+    }
+},
+{
+    name: "缂� 杈�",
+    icon: 'el-icon-edit',
+    value: 'Update',
+    // plain:true,
+    class: '',
+    type: 'primary',
+    onClick: function () {
+        this.edit();
+    }
+},
+
+{
+    name: "鍒� 闄�",
+    icon: 'el-icon-delete',
+    class: '',
+    value: 'Delete',
+    type: 'danger',
+    onClick: function () {
+        this.del();
+    }
+},
+{
+    name: "瀹� 鏍�",
+    icon: 'el-icon-check',
+    class: '',
+    value: 'Audit',
+    plain: true,
+    type: 'primary',
+    onClick: function () {
+        this.audit();
+    }
+},
+{
+    name: "瀵� 鍏�",
+    icon: 'el-icon-top',
+    class: '',
+    type: 'success',
+    plain: true,
+    value: 'Import',
+    onClick: function () {
+        this.import();
+    }
+},
+{
+    name: "瀵� 鍑�",
+    icon: 'el-icon-bottom',
+    type: 'success',
+    plain: true,
+    value: 'Export',
+    onClick: function () {
+        this.export();
+    }
+},{
+    name: "鍚� 鐢�",
+    icon: '',
+    class: '',
+    value: 'Enable',
+    type: 'primary',
+    onClick: function () {
+    }
+},
+{
+    name: "绂� 鐢�",
+    icon: '',
+    class: '',
+    value: 'Disable',
+    type: 'danger',
+    onClick: function () {
+    }
+},
+{
+    name: "鎵� 鍔� 瀹� 鎴�",
+    icon: '',
+    class: '',
+    value: 'TaskHandCompleted',
+    onClick: function () {
+    }
+},
+{
+    name: "鍙� 娑� 浠� 鍔�",
+    icon: '',
+    class: '',
+    value: 'TaskHandCancel',
+    onClick: function () {
+    }
+}
+]
+
+export default buttons
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/index.html b/Code Management/WMS/WIDESEA_WMSClient/index.html
new file mode 100644
index 0000000..1d92549
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/index.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="">
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <meta name="keywords" content=".netccore,dotnet core,vue,element,element plus,vue3" />
+  <meta name="description" content="" />
+  <link rel="icon" href="/wms_d.png">
+  <title>WMS</title>
+  <script src="webconfig.js"></script>
+</head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but WMS doesn't work properly without JavaScript enabled.
+      Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <script type="module" src="/src/main.js"></script>
+</body>
+
+</html>
+<style>
+  html,
+  body {
+    margin: 0;
+    padding: 0;
+    height: 100%;
+    width: 100%;
+  }
+
+  * {
+    box-sizing: border-box;
+  }
+
+  .el-loading {
+    z-index: 999999;
+  }
+
+  .el-table th {
+    display: table-cell !important;
+  }
+
+  .el-loading .el-loading-spinner {
+    padding: 7px;
+    background: #ececec;
+    width: 200px;
+    color: red;
+    left: 0;
+    right: 0;
+    margin: 0 auto;
+    border-radius: 5px;
+    border: 1px solid #a0a0a0;
+
+  }
+
+  h1,
+  h2,
+  h3,
+  h4 {
+    margin: 0;
+  }
+
+  .v-dialog {
+    border-radius: 5px;
+    top: 50%;
+    /* margin-top: -220px !important; */
+  }
+
+  .v-dialog .el-dialog__header {
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    padding: 0px 13px;
+    line-height: 53px;
+    border-bottom: 1px solid #e2e2e2;
+    height: 50px;
+    color: white;
+    font-weight: bold;
+    font-size: 14px;
+    background-image: linear-gradient(135deg, #0cd7bd 10%, #50c3f7);
+  }
+
+  .v-dialog .el-dialog__header .el-dialog__headerbtn {
+    top: 3px;
+    right: 0px;
+  }
+
+  .v-dialog .el-dialog__header .el-dialog__headerbtn .el-dialog__close {
+    font-size: 19px;
+    color: white;
+  }
+
+  .v-dialog .el-dialog__body {
+    padding: 0;
+  }
+
+  .el-message {
+    z-index: 3500 !important;
+  }
+
+  .v-date-range .el-input__inner {
+    padding: 0 15px 0 8px
+  }
+
+  .v-date-range .el-input__suffix .el-input__icon {
+    display: table-caption;
+    background: white;
+    margin: 1px;
+    height: auto;
+    margin-right: -4px;
+    height: 33px;
+    width: 19px;
+    font-size: 13px;
+    border-top-right-radius: 3px;
+    border-bottom-right-radius: 3px;
+  }
+
+  .v-date-range .el-icon-circle-check {
+    display: none !important;
+  }
+
+  .v-dialog .el-dialog__header {
+    margin-right: 0;
+  }
+
+  .el-button {
+    font-size: 12px !important;
+  }
+
+  .el-button--small {
+    padding: 0px 15px !important;
+    height: 32px;
+  }
+</style>
diff --git a/Code Management/WIDESEA_WCSClient/jsconfig.json b/Code Management/WMS/WIDESEA_WMSClient/jsconfig.json
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/jsconfig.json
copy to Code Management/WMS/WIDESEA_WMSClient/jsconfig.json
diff --git a/Code Management/WMS/WIDESEA_WMSClient/package-lock.json b/Code Management/WMS/WIDESEA_WMSClient/package-lock.json
new file mode 100644
index 0000000..85534fa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/package-lock.json
@@ -0,0 +1,3646 @@
+{
+  "name": "wideseawcs",
+  "version": "0.1.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@adobe/css-tools": {
+      "version": "4.3.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@adobe/css-tools/-/css-tools-4.3.3.tgz",
+      "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==",
+      "dev": true
+    },
+    "@babel/helper-string-parser": {
+      "version": "7.27.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+      "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+      "dev": true
+    },
+    "@babel/parser": {
+      "version": "7.18.11",
+      "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.11.tgz",
+      "integrity": "sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ=="
+    },
+    "@ctrl/tinycolor": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
+      "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
+    },
+    "@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA=="
+    },
+    "@esbuild/android-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-mips64el": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ppc64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-riscv64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-s390x": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/netbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/openbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/sunos-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@eslint-community/eslint-utils": {
+      "version": "4.9.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+      "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+      "dev": true,
+      "requires": {
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "dependencies": {
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        }
+      }
+    },
+    "@eslint-community/regexpp": {
+      "version": "4.12.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+      "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+      "dev": true
+    },
+    "@eslint/eslintrc": {
+      "version": "2.1.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.6.0",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+          "dev": true
+        },
+        "globals": {
+          "version": "13.24.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
+          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "ignore": {
+          "version": "5.3.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
+          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+          "dev": true
+        },
+        "import-fresh": {
+          "version": "3.3.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/import-fresh/-/import-fresh-3.3.1.tgz",
+          "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+          "dev": true,
+          "requires": {
+            "parent-module": "^1.0.0",
+            "resolve-from": "^4.0.0"
+          }
+        },
+        "js-yaml": {
+          "version": "4.1.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
+          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+          "dev": true,
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "resolve-from": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/resolve-from/-/resolve-from-4.0.0.tgz",
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+          "dev": true
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        }
+      }
+    },
+    "@eslint/js": {
+      "version": "8.57.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@eslint/js/-/js-8.57.1.tgz",
+      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+      "dev": true
+    },
+    "@floating-ui/core": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.7.3.tgz",
+      "integrity": "sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg=="
+    },
+    "@floating-ui/dom": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.5.4.tgz",
+      "integrity": "sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==",
+      "requires": {
+        "@floating-ui/core": "^0.7.3"
+      }
+    },
+    "@humanwhocodes/config-array": {
+      "version": "0.13.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+      "dev": true,
+      "requires": {
+        "@humanwhocodes/object-schema": "^2.0.3",
+        "debug": "^4.3.1",
+        "minimatch": "^3.0.5"
+      },
+      "dependencies": {
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        }
+      }
+    },
+    "@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "dev": true
+    },
+    "@humanwhocodes/object-schema": {
+      "version": "2.0.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "dev": true
+    },
+    "@isaacs/cliui": {
+      "version": "8.0.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@isaacs/cliui/-/cliui-8.0.2.tgz",
+      "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+      "dev": true,
+      "requires": {
+        "string-width": "^5.1.2",
+        "string-width-cjs": "npm:string-width@^4.2.0",
+        "strip-ansi": "^7.0.1",
+        "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+        "wrap-ansi": "^8.1.0",
+        "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "string-width-cjs": {
+          "version": "npm:string-width@4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "dev": true,
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "6.0.1",
+              "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.1"
+              }
+            }
+          }
+        },
+        "strip-ansi-cjs": {
+          "version": "npm:strip-ansi@6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "wrap-ansi": {
+          "version": "8.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+          "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^6.1.0",
+            "string-width": "^5.0.1",
+            "strip-ansi": "^7.0.1"
+          }
+        },
+        "wrap-ansi-cjs": {
+          "version": "npm:wrap-ansi@7.0.0",
+          "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+          "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.0.0",
+            "string-width": "^4.1.0",
+            "strip-ansi": "^6.0.0"
+          },
+          "dependencies": {
+            "ansi-styles": {
+              "version": "4.3.0",
+              "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+              "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+              "dev": true,
+              "requires": {
+                "color-convert": "^2.0.1"
+              }
+            },
+            "string-width": {
+              "version": "4.2.3",
+              "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+              "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+              "dev": true,
+              "requires": {
+                "emoji-regex": "^8.0.0",
+                "is-fullwidth-code-point": "^3.0.0",
+                "strip-ansi": "^6.0.1"
+              }
+            },
+            "strip-ansi": {
+              "version": "6.0.1",
+              "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+              "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^5.0.1"
+              }
+            }
+          }
+        }
+      }
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.5.5",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+      "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+      "dev": true
+    },
+    "@microsoft/signalr": {
+      "version": "6.0.4",
+      "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.4.tgz",
+      "integrity": "sha512-YeWRh4LxfYnq4I5CKw17/HOq8rY+ouTv6Bq+s55122StE3pK29j8j2OpP+1PA3D1ksHPfy7dFIgC33yr/E+01A==",
+      "requires": {
+        "abort-controller": "^3.0.0",
+        "eventsource": "^1.0.7",
+        "fetch-cookie": "^0.11.0",
+        "node-fetch": "^2.6.7",
+        "ws": "^7.4.5"
+      }
+    },
+    "@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz",
+      "integrity": "sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "dependencies": {
+        "@nodelib/fs.stat": {
+          "version": "2.0.5",
+          "resolved": "https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.stat%2Fdownload%2F%40nodelib%2Ffs.stat-2.0.5.tgz",
+          "integrity": "sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=",
+          "dev": true
+        }
+      }
+    },
+    "@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625769855088&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz",
+      "integrity": "sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=",
+      "dev": true,
+      "requires": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      }
+    },
+    "@parcel/watcher": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.4.1.tgz",
+      "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==",
+      "dev": true,
+      "requires": {
+        "@parcel/watcher-android-arm64": "2.4.1",
+        "@parcel/watcher-darwin-arm64": "2.4.1",
+        "@parcel/watcher-darwin-x64": "2.4.1",
+        "@parcel/watcher-freebsd-x64": "2.4.1",
+        "@parcel/watcher-linux-arm-glibc": "2.4.1",
+        "@parcel/watcher-linux-arm64-glibc": "2.4.1",
+        "@parcel/watcher-linux-arm64-musl": "2.4.1",
+        "@parcel/watcher-linux-x64-glibc": "2.4.1",
+        "@parcel/watcher-linux-x64-musl": "2.4.1",
+        "@parcel/watcher-win32-arm64": "2.4.1",
+        "@parcel/watcher-win32-ia32": "2.4.1",
+        "@parcel/watcher-win32-x64": "2.4.1",
+        "detect-libc": "^1.0.3",
+        "is-glob": "^4.0.3",
+        "micromatch": "^4.0.5",
+        "node-addon-api": "^7.0.0"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "3.0.3",
+          "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz",
+          "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+          "dev": true,
+          "requires": {
+            "fill-range": "^7.1.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.1.1",
+          "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz",
+          "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+          "dev": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "is-glob": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+          "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true
+        },
+        "micromatch": {
+          "version": "4.0.8",
+          "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz",
+          "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+          "dev": true,
+          "requires": {
+            "braces": "^3.0.3",
+            "picomatch": "^2.3.1"
+          }
+        },
+        "picomatch": {
+          "version": "2.3.1",
+          "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+          "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+          "dev": true
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "dev": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "@parcel/watcher-android-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz",
+      "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-darwin-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz",
+      "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-darwin-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz",
+      "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-freebsd-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz",
+      "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz",
+      "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm64-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz",
+      "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-arm64-musl": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz",
+      "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-x64-glibc": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz",
+      "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-linux-x64-musl": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz",
+      "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-arm64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz",
+      "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-ia32": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz",
+      "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==",
+      "dev": true,
+      "optional": true
+    },
+    "@parcel/watcher-win32-x64": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz",
+      "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==",
+      "dev": true,
+      "optional": true
+    },
+    "@pkgjs/parseargs": {
+      "version": "0.11.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+      "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+      "dev": true,
+      "optional": true
+    },
+    "@tootallnate/once": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/@tootallnate/once/-/once-1.1.2.tgz",
+      "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
+    },
+    "@types/lodash": {
+      "version": "4.14.184",
+      "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz",
+      "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.6",
+      "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
+      "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
+    "@types/web-bluetooth": {
+      "version": "0.0.15",
+      "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.15.tgz",
+      "integrity": "sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA=="
+    },
+    "@ungap/structured-clone": {
+      "version": "1.3.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+      "dev": true
+    },
+    "@vitejs/plugin-vue": {
+      "version": "5.2.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
+      "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
+      "dev": true
+    },
+    "@vue/compiler-core": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.37.tgz",
+      "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/shared": "3.2.37",
+        "estree-walker": "^2.0.2",
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+        }
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz",
+      "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==",
+      "requires": {
+        "@vue/compiler-core": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.5.26",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.5.26.tgz",
+      "integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
+      "dev": true,
+      "requires": {
+        "@babel/parser": "^7.28.5",
+        "@vue/compiler-core": "3.5.26",
+        "@vue/compiler-dom": "3.5.26",
+        "@vue/compiler-ssr": "3.5.26",
+        "@vue/shared": "3.5.26",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.21",
+        "postcss": "^8.5.6",
+        "source-map-js": "^1.2.1"
+      },
+      "dependencies": {
+        "@babel/helper-validator-identifier": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+          "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+          "dev": true
+        },
+        "@babel/parser": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/parser/-/parser-7.28.5.tgz",
+          "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+          "dev": true,
+          "requires": {
+            "@babel/types": "^7.28.5"
+          }
+        },
+        "@babel/types": {
+          "version": "7.28.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@babel/types/-/types-7.28.5.tgz",
+          "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+          "dev": true,
+          "requires": {
+            "@babel/helper-string-parser": "^7.27.1",
+            "@babel/helper-validator-identifier": "^7.28.5"
+          }
+        },
+        "@vue/compiler-core": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-core/-/compiler-core-3.5.26.tgz",
+          "integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
+          "dev": true,
+          "requires": {
+            "@babel/parser": "^7.28.5",
+            "@vue/shared": "3.5.26",
+            "entities": "^7.0.0",
+            "estree-walker": "^2.0.2",
+            "source-map-js": "^1.2.1"
+          }
+        },
+        "@vue/compiler-dom": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-dom/-/compiler-dom-3.5.26.tgz",
+          "integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
+          "dev": true,
+          "requires": {
+            "@vue/compiler-core": "3.5.26",
+            "@vue/shared": "3.5.26"
+          }
+        },
+        "@vue/compiler-ssr": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-ssr/-/compiler-ssr-3.5.26.tgz",
+          "integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
+          "dev": true,
+          "requires": {
+            "@vue/compiler-dom": "3.5.26",
+            "@vue/shared": "3.5.26"
+          }
+        },
+        "@vue/shared": {
+          "version": "3.5.26",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/shared/-/shared-3.5.26.tgz",
+          "integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
+          "dev": true
+        },
+        "entities": {
+          "version": "7.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/entities/-/entities-7.0.0.tgz",
+          "integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
+          "dev": true
+        },
+        "postcss": {
+          "version": "8.5.6",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
+          "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+          "dev": true,
+          "requires": {
+            "nanoid": "^3.3.11",
+            "picocolors": "^1.1.1",
+            "source-map-js": "^1.2.1"
+          }
+        },
+        "source-map-js": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
+          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+          "dev": true
+        }
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz",
+      "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.0.0-beta.15",
+      "resolved": "https://registry.nlark.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.15.tgz?cache=0&sync_timestamp=1624900514906&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40vue%2Fdevtools-api%2Fdownload%2F%40vue%2Fdevtools-api-6.0.0-beta.15.tgz",
+      "integrity": "sha1-rXyzhOBi8WW8+cg3MhJb/7wq2D0="
+    },
+    "@vue/reactivity": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz",
+      "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==",
+      "requires": {
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.2.37",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz",
+      "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==",
+      "requires": {
+        "@babel/parser": "^7.16.4",
+        "@vue/compiler-core": "3.2.37",
+        "@vue/shared": "3.2.37",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.25.7"
+      },
+      "dependencies": {
+        "magic-string": {
+          "version": "0.25.9",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
+          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        }
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.37.tgz",
+      "integrity": "sha512-JPcd9kFyEdXLl/i0ClS7lwgcs0QpUAWj+SKX2ZC3ANKi1U4DOtiEr6cRqFXsPwY5u1L9fAjkinIdB8Rz3FoYNQ==",
+      "requires": {
+        "@vue/reactivity": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.37.tgz",
+      "integrity": "sha512-HimKdh9BepShW6YozwRKAYjYQWg9mQn63RGEiSswMbW+ssIht1MILYlVGkAGGQbkhSh31PCdoUcfiu4apXJoPw==",
+      "requires": {
+        "@vue/runtime-core": "3.2.37",
+        "@vue/shared": "3.2.37",
+        "csstype": "^2.6.8"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.37.tgz",
+      "integrity": "sha512-kLITEJvaYgZQ2h47hIzPh2K3jG8c1zCVbp/o/bzQOyvzaKiCquKS7AaioPI28GNxIsE/zSx+EwWYsNxDCX95MA==",
+      "requires": {
+        "@vue/compiler-ssr": "3.2.37",
+        "@vue/shared": "3.2.37"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz",
+      "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw=="
+    },
+    "@vueuse/core": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.1.0.tgz",
+      "integrity": "sha512-BIroqvXEqt826aE9r3K5cox1zobuPuAzdYJ36kouC2TVhlXvFKIILgFVWrpp9HZPwB3aLzasmG3K87q7TSyXZg==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.15",
+        "@vueuse/metadata": "9.1.0",
+        "@vueuse/shared": "9.1.0",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.8",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
+          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
+        }
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.1.0.tgz",
+      "integrity": "sha512-8OEhlog1iaAGTD3LICZ8oBGQdYeMwByvXetOtAOZCJOzyCRSwqwdggTsmVZZ1rkgYIEqgUBk942AsAPwM21s6A=="
+    },
+    "@vueuse/shared": {
+      "version": "9.1.0",
+      "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.1.0.tgz",
+      "integrity": "sha512-pB/3njQu4tfJJ78ajELNda0yMG6lKfpToQW7Soe09CprF1k3QuyoNi1tBNvo75wBDJWD+LOnr+c4B5HZ39jY/Q==",
+      "requires": {
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.13.8",
+          "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.8.tgz",
+          "integrity": "sha512-Vy1zbZhCOdsmvGR6tJhAvO5vhP7eiS8xkbYQSoVa7o6KlIy3W8Rc53ED4qI4qpeRDjv3mLfXSEpYU6Yq4pgXRg=="
+        }
+      }
+    },
+    "abort-controller": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
+      "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+      "requires": {
+        "event-target-shim": "^5.0.0"
+      }
+    },
+    "acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "dev": true
+    },
+    "address": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/address/download/address-1.1.2.tgz",
+      "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY="
+    },
+    "agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmmirror.com/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "requires": {
+        "debug": "4"
+      }
+    },
+    "agentkeepalive": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
+      "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
+      "requires": {
+        "humanize-ms": "^1.2.1"
+      }
+    },
+    "ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz",
+      "integrity": "sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=",
+      "dev": true,
+      "requires": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ali-oss": {
+      "version": "6.17.1",
+      "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.17.1.tgz",
+      "integrity": "sha512-v2oT3UhSJTH/LrsscVvi7iEGrnundydNaFzpYAKatqOl4JNcBV4UiwtlJU+ZHLys040JH2k+CutznA0GoE+P2w==",
+      "requires": {
+        "address": "^1.0.0",
+        "agentkeepalive": "^3.4.1",
+        "bowser": "^1.6.0",
+        "copy-to": "^2.0.1",
+        "dateformat": "^2.0.0",
+        "debug": "^2.2.0",
+        "destroy": "^1.0.4",
+        "end-or-error": "^1.0.1",
+        "get-ready": "^1.0.0",
+        "humanize-ms": "^1.2.0",
+        "is-type-of": "^1.0.0",
+        "js-base64": "^2.5.2",
+        "jstoxml": "^2.0.0",
+        "merge-descriptors": "^1.0.1",
+        "mime": "^2.4.5",
+        "mz-modules": "^2.1.0",
+        "platform": "^1.3.1",
+        "pump": "^3.0.0",
+        "sdk-base": "^2.0.1",
+        "stream-http": "2.8.2",
+        "stream-wormhole": "^1.0.4",
+        "urllib": "^2.33.1",
+        "utility": "^1.8.0",
+        "xml2js": "^0.4.16"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        }
+      }
+    },
+    "ansi-regex": {
+      "version": "6.2.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-6.2.2.tgz",
+      "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "6.2.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-6.2.3.tgz",
+      "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+      "dev": true
+    },
+    "any-promise": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz",
+      "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8="
+    },
+    "ast-types": {
+      "version": "0.13.4",
+      "resolved": "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz",
+      "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+      "requires": {
+        "tslib": "^2.0.1"
+      }
+    },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "axios": {
+      "version": "0.21.1",
+      "resolved": "https://registry.nlark.com/axios/download/axios-0.21.1.tgz",
+      "integrity": "sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=",
+      "requires": {
+        "follow-redirects": "^1.10.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.2.tgz?cache=0&sync_timestamp=1617714298273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbalanced-match%2Fdownload%2Fbalanced-match-1.0.2.tgz",
+      "integrity": "sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4="
+    },
+    "bowser": {
+      "version": "1.9.4",
+      "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz",
+      "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz",
+      "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.nlark.com/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug="
+    },
+    "bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.nlark.com/bytes/download/bytes-3.1.0.tgz",
+      "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
+    },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-6.0.0.tgz?cache=0&sync_timestamp=1604880017635&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-6.0.0.tgz",
+      "integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
+          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.0",
+          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
+          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+          "requires": {
+            "ansi-regex": "^5.0.0"
+          }
+        }
+      }
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
+      "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
+    },
+    "copy-anything": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npm.taobao.org/copy-anything/download/copy-anything-2.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcopy-anything%2Fdownload%2Fcopy-anything-2.0.3.tgz",
+      "integrity": "sha1-hCQHugJGaw34RIGbvjuuu+XUXYc=",
+      "dev": true,
+      "requires": {
+        "is-what": "^3.12.0"
+      }
+    },
+    "copy-to": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz",
+      "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w=="
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "cross-spawn": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+      "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+      "dev": true,
+      "requires": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      }
+    },
+    "csstype": {
+      "version": "2.6.20",
+      "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz",
+      "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
+    },
+    "data-uri-to-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz",
+      "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og=="
+    },
+    "dateformat": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz",
+      "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw=="
+    },
+    "dayjs": {
+      "version": "1.11.5",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
+      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+    },
+    "debug": {
+      "version": "4.3.2",
+      "resolved": "https://registry.nlark.com/debug/download/debug-4.3.2.tgz",
+      "integrity": "sha1-8KScGKyHeeMdSgxgKd+3aHPHQos=",
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.nlark.com/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+    },
+    "default-user-agent": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz",
+      "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==",
+      "requires": {
+        "os-name": "~1.0.3"
+      }
+    },
+    "degenerator": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/degenerator/-/degenerator-3.0.2.tgz",
+      "integrity": "sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ==",
+      "requires": {
+        "ast-types": "^0.13.2",
+        "escodegen": "^1.8.1",
+        "esprima": "^4.0.0",
+        "vm2": "^3.9.8"
+      }
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
+    },
+    "detect-libc": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz",
+      "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+      "dev": true
+    },
+    "digest-header": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.0.0.tgz",
+      "integrity": "sha512-sRTuakZ2PkOUCuAaVv+SLjhr/hRf8ldZP0XnGEQ69RFGxmll5fVaMsnRXWKKK4XsUTnJf8+eRPSFNgE/lWa9wQ==",
+      "requires": {
+        "utility": "^1.17.0"
+      }
+    },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
+    "doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2"
+      }
+    },
+    "eastasianwidth": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+      "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+      "dev": true
+    },
+    "echarts": {
+      "version": "5.0.2",
+      "resolved": "https://registry.nlark.com/echarts/download/echarts-5.0.2.tgz",
+      "integrity": "sha1-FybRelfPBdYs0FZ7QyXhIBpWuvY=",
+      "requires": {
+        "tslib": "2.0.3",
+        "zrender": "5.0.4"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
+    },
+    "element-plus": {
+      "version": "2.2.14",
+      "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.14.tgz",
+      "integrity": "sha512-V5Pis0OHhePg1RgVogZrcefaVl8vjVn4Pn9Qsh/t2CbFgjg9kKOYFqf/tuP3ObSXGm3X89hpe0W+nLVAsaFnpw==",
+      "requires": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^0.5.4",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "dependencies": {
+        "@popperjs/core": {
+          "version": "npm:@sxzz/popperjs-es@2.11.8",
+          "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.8.tgz",
+          "integrity": "sha512-wOwESXvvED3S8xBmcPWHs2dUuzrE4XiZeFu7e1hROIJkm02a49N120pmOXxY33sBb6hArItm5W5tcg1cBtV+HQ=="
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.nlark.com/emoji-regex/download/emoji-regex-8.0.0.tgz",
+      "integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.4.tgz",
+      "integrity": "sha1-WuZKX0UFe682JuwU2gyl5LJDHrA=",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "end-or-error": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz",
+      "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ=="
+    },
+    "errno": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npm.taobao.org/errno/download/errno-0.1.8.tgz",
+      "integrity": "sha1-i7Ppx9Rjvkl2/4iPdrSAnrwugR8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.nlark.com/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
+    },
+    "escodegen": {
+      "version": "1.14.3",
+      "resolved": "https://registry.nlark.com/escodegen/download/escodegen-1.14.3.tgz",
+      "integrity": "sha1-TnuB+6YVgdyXWC7XjKt/Do1j9QM=",
+      "requires": {
+        "esprima": "^4.0.1",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "optional": true
+        }
+      }
+    },
+    "eslint": {
+      "version": "8.57.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint/-/eslint-8.57.1.tgz",
+      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+      "dev": true,
+      "requires": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.6.1",
+        "@eslint/eslintrc": "^2.1.4",
+        "@eslint/js": "8.57.1",
+        "@humanwhocodes/config-array": "^0.13.0",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "@ungap/structured-clone": "^1.2.0",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.2",
+        "eslint-visitor-keys": "^3.4.3",
+        "espree": "^9.6.1",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.0.3",
+        "js-yaml": "^4.1.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3",
+        "strip-ansi": "^6.0.1",
+        "text-table": "^0.2.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+          "dev": true
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "argparse": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/argparse/-/argparse-2.0.1.tgz",
+          "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+          "dev": true
+        },
+        "chalk": {
+          "version": "4.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/chalk/-/chalk-4.1.2.tgz",
+          "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
+        },
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        },
+        "find-up": {
+          "version": "5.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/find-up/-/find-up-5.0.0.tgz",
+          "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+          "dev": true,
+          "requires": {
+            "locate-path": "^6.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "glob-parent": {
+          "version": "6.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob-parent/-/glob-parent-6.0.2.tgz",
+          "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+          "dev": true,
+          "requires": {
+            "is-glob": "^4.0.3"
+          },
+          "dependencies": {
+            "is-glob": {
+              "version": "4.0.3",
+              "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz",
+              "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+              "dev": true,
+              "requires": {
+                "is-extglob": "^2.1.1"
+              }
+            }
+          }
+        },
+        "globals": {
+          "version": "13.24.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/globals/-/globals-13.24.0.tgz",
+          "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "ignore": {
+          "version": "5.3.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/ignore/-/ignore-5.3.2.tgz",
+          "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+          "dev": true
+        },
+        "is-path-inside": {
+          "version": "3.0.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/is-path-inside/-/is-path-inside-3.0.3.tgz",
+          "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+          "dev": true
+        },
+        "js-yaml": {
+          "version": "4.1.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/js-yaml/-/js-yaml-4.1.1.tgz",
+          "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+          "dev": true,
+          "requires": {
+            "argparse": "^2.0.1"
+          }
+        },
+        "levn": {
+          "version": "0.4.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/levn/-/levn-0.4.1.tgz",
+          "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "^1.2.1",
+            "type-check": "~0.4.0"
+          }
+        },
+        "locate-path": {
+          "version": "6.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/locate-path/-/locate-path-6.0.0.tgz",
+          "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+          "dev": true,
+          "requires": {
+            "p-locate": "^5.0.0"
+          }
+        },
+        "minimatch": {
+          "version": "3.1.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz",
+          "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^1.1.7"
+          }
+        },
+        "optionator": {
+          "version": "0.9.4",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/optionator/-/optionator-0.9.4.tgz",
+          "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+          "dev": true,
+          "requires": {
+            "deep-is": "^0.1.3",
+            "fast-levenshtein": "^2.0.6",
+            "levn": "^0.4.1",
+            "prelude-ls": "^1.2.1",
+            "type-check": "^0.4.0",
+            "word-wrap": "^1.2.5"
+          }
+        },
+        "p-limit": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-limit/-/p-limit-3.1.0.tgz",
+          "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+          "dev": true,
+          "requires": {
+            "yocto-queue": "^0.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "5.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/p-locate/-/p-locate-5.0.0.tgz",
+          "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+          "dev": true,
+          "requires": {
+            "p-limit": "^3.0.2"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+          "dev": true
+        },
+        "prelude-ls": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/prelude-ls/-/prelude-ls-1.2.1.tgz",
+          "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+          "dev": true
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "type-check": {
+          "version": "0.4.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-check/-/type-check-0.4.0.tgz",
+          "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "^1.2.1"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        },
+        "word-wrap": {
+          "version": "1.2.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/word-wrap/-/word-wrap-1.2.5.tgz",
+          "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "7.2.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-scope/-/eslint-scope-7.2.2.tgz",
+      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "espree": {
+      "version": "9.6.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "dev": true,
+      "requires": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.15.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/acorn/-/acorn-8.15.0.tgz",
+          "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+          "dev": true
+        },
+        "eslint-visitor-keys": {
+          "version": "3.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+          "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+          "dev": true
+        }
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/esprima/download/esprima-4.0.1.tgz",
+      "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
+    },
+    "esquery": {
+      "version": "1.6.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.1.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.3.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/estraverse/-/estraverse-5.3.0.tgz",
+          "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.3.0.tgz",
+      "integrity": "sha1-eteWTWeauyi+5yzsY3WLHF0smSE=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-5.2.0.tgz",
+          "integrity": "sha1-MH30JUfmzHMk088DwVXVzbjFOIA=",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0="
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.nlark.com/esutils/download/esutils-2.0.3.tgz",
+      "integrity": "sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q="
+    },
+    "event-target-shim": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
+      "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/eventsource/download/eventsource-1.1.0.tgz?cache=0&sync_timestamp=1616041748498&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feventsource%2Fdownload%2Feventsource-1.1.0.tgz",
+      "integrity": "sha1-AOjKfJIQnpSw3fMtrGd9hBAoz68=",
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.nlark.com/fast-deep-equal/download/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=",
+      "dev": true
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.nlark.com/fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz?cache=0&sync_timestamp=1618847186091&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffast-json-stable-stringify%2Fdownload%2Ffast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.nlark.com/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+    },
+    "fastq": {
+      "version": "1.11.1",
+      "resolved": "https://registry.nlark.com/fastq/download/fastq-1.11.1.tgz",
+      "integrity": "sha1-XYF1quF9thlH+LFiz8f2MmTSKAc=",
+      "dev": true,
+      "requires": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "fetch-cookie": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
+      "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
+      "requires": {
+        "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
+      }
+    },
+    "file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "dev": true,
+      "requires": {
+        "flat-cache": "^3.0.4"
+      }
+    },
+    "flat-cache": {
+      "version": "3.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flat-cache/-/flat-cache-3.2.0.tgz",
+      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+      "dev": true,
+      "requires": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.3",
+        "rimraf": "^3.0.2"
+      },
+      "dependencies": {
+        "rimraf": {
+          "version": "3.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/rimraf/-/rimraf-3.0.2.tgz",
+          "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+          "dev": true,
+          "requires": {
+            "glob": "^7.1.3"
+          }
+        }
+      }
+    },
+    "flatted": {
+      "version": "3.3.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/flatted/-/flatted-3.3.3.tgz",
+      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "dev": true
+    },
+    "follow-redirects": {
+      "version": "1.14.1",
+      "resolved": "https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.1.tgz?cache=0&sync_timestamp=1620555246888&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffollow-redirects%2Fdownload%2Ffollow-redirects-1.14.1.tgz",
+      "integrity": "sha1-2RFN7Qoc/dM04WTmZirQK/2R/0M="
+    },
+    "foreground-child": {
+      "version": "3.3.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/foreground-child/-/foreground-child-3.3.1.tgz",
+      "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+      "dev": true,
+      "requires": {
+        "cross-spawn": "^7.0.6",
+        "signal-exit": "^4.0.1"
+      },
+      "dependencies": {
+        "cross-spawn": {
+          "version": "7.0.6",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-7.0.6.tgz",
+          "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+          "dev": true,
+          "requires": {
+            "path-key": "^3.1.0",
+            "shebang-command": "^2.0.0",
+            "which": "^2.0.1"
+          }
+        }
+      }
+    },
+    "formstream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.1.1.tgz",
+      "integrity": "sha512-yHRxt3qLFnhsKAfhReM4w17jP+U1OlhUjnKPPtonwKbIJO7oBP0MvoxkRUwb8AU9n0MIkYy5X5dK6pQnbj+R2Q==",
+      "requires": {
+        "destroy": "^1.0.4",
+        "mime": "^2.5.2",
+        "pause-stream": "~0.0.11"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+    },
+    "fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "optional": true
+    },
+    "ftp": {
+      "version": "0.3.10",
+      "resolved": "https://registry.npmmirror.com/ftp/-/ftp-0.3.10.tgz",
+      "integrity": "sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ==",
+      "requires": {
+        "readable-stream": "1.1.x",
+        "xregexp": "2.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+        },
+        "readable-stream": {
+          "version": "1.1.14",
+          "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-1.1.14.tgz",
+          "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+        }
+      }
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz",
+      "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34="
+    },
+    "get-ready": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz",
+      "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw=="
+    },
+    "get-uri": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/get-uri/-/get-uri-3.0.2.tgz",
+      "integrity": "sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "data-uri-to-buffer": "3",
+        "debug": "4",
+        "file-uri-to-path": "2",
+        "fs-extra": "^8.1.0",
+        "ftp": "^0.3.10"
+      },
+      "dependencies": {
+        "file-uri-to-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz",
+          "integrity": "sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg=="
+        },
+        "fs-extra": {
+          "version": "8.1.0",
+          "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
+          "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+          "requires": {
+            "graceful-fs": "^4.2.0",
+            "jsonfile": "^4.0.0",
+            "universalify": "^0.1.0"
+          }
+        }
+      }
+    },
+    "glob": {
+      "version": "7.1.7",
+      "resolved": "https://registry.nlark.com/glob/download/glob-7.1.7.tgz?cache=0&sync_timestamp=1620337498129&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglob%2Fdownload%2Fglob-7.1.7.tgz",
+      "integrity": "sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=",
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.6",
+      "resolved": "https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.6.tgz",
+      "integrity": "sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4="
+    },
+    "graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
+      "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+        }
+      }
+    },
+    "http-proxy-agent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+      "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "requires": {
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "humanize-ms": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz",
+      "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+      "requires": {
+        "ms": "^2.0.0"
+      }
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ficonv-lite%2Fdownload%2Ficonv-lite-0.4.24.tgz",
+      "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npm.taobao.org/image-size/download/image-size-0.5.5.tgz?cache=0&sync_timestamp=1618422657851&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimage-size%2Fdownload%2Fimage-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "immutable": {
+      "version": "4.3.7",
+      "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.3.7.tgz",
+      "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
+      "dev": true
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.nlark.com/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.nlark.com/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
+    },
+    "is-class-hotfix": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
+      "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "dev": true
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-type-of": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.2.1.tgz",
+      "integrity": "sha512-uK0kyX9LZYhSDS7H2sVJQJop1UnWPWmo5RvR3q2kFH6AUHYs7sOrVg0b4nyBHw29kRRNFofYN/JbHZDlHiItTA==",
+      "requires": {
+        "core-util-is": "^1.0.2",
+        "is-class-hotfix": "~0.0.6",
+        "isstream": "~0.1.2"
+      }
+    },
+    "is-what": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npm.taobao.org/is-what/download/is-what-3.14.1.tgz?cache=0&sync_timestamp=1615169735707&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-what%2Fdownload%2Fis-what-3.14.1.tgz",
+      "integrity": "sha1-4SIvRt3ahd6tD9HJ3xMXYOd3VcE=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+    },
+    "jackspeak": {
+      "version": "3.4.3",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jackspeak/-/jackspeak-3.4.3.tgz",
+      "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+      "dev": true,
+      "requires": {
+        "@isaacs/cliui": "^8.0.2",
+        "@pkgjs/parseargs": "^0.11.0"
+      }
+    },
+    "js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+    },
+    "jsbarcode": {
+      "version": "3.12.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/jsbarcode/-/jsbarcode-3.12.1.tgz",
+      "integrity": "sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ=="
+    },
+    "json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "dev": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.nlark.com/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=",
+      "dev": true
+    },
+    "json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "dev": true
+    },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz?cache=0&sync_timestamp=1604161937969&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjsonfile%2Fdownload%2Fjsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "requires": {
+        "graceful-fs": "^4.1.6"
+      }
+    },
+    "jstoxml": {
+      "version": "2.2.9",
+      "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz",
+      "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw=="
+    },
+    "keyv": {
+      "version": "4.5.4",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "dev": true,
+      "requires": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "ko-sleep": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/ko-sleep/-/ko-sleep-1.1.4.tgz",
+      "integrity": "sha512-s05WGpvvzyTuRlRE8fM7ru2Z3O+InbJuBcckTWKg2W+2c1k6SnFa3IfiSSt0/peFrlYAXgNoxuJWWVNmWh+K/A==",
+      "requires": {
+        "ms": "*"
+      }
+    },
+    "less": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/less/download/less-4.1.1.tgz?cache=0&sync_timestamp=1612065808998&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fless%2Fdownload%2Fless-4.1.1.tgz",
+      "integrity": "sha1-Fb8lOpk5eR3GkIiMP/Qk8+bH7bo=",
+      "dev": true,
+      "requires": {
+        "copy-anything": "^2.0.1",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "make-dir": "^2.1.0",
+        "mime": "^1.4.1",
+        "needle": "^2.5.2",
+        "parse-node-version": "^1.0.1",
+        "source-map": "~0.6.0",
+        "tslib": "^1.10.0"
+      },
+      "dependencies": {
+        "make-dir": {
+          "version": "2.1.0",
+          "resolved": "https://registry.nlark.com/make-dir/download/make-dir-2.1.0.tgz",
+          "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "pify": "^4.0.1",
+            "semver": "^5.6.0"
+          }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "https://registry.nlark.com/mime/download/mime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "dev": true,
+          "optional": true
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.nlark.com/semver/download/semver-5.7.1.tgz",
+          "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+          "dev": true,
+          "optional": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true,
+          "optional": true
+        },
+        "tslib": {
+          "version": "1.14.1",
+          "resolved": "https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz",
+          "integrity": "sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=",
+          "dev": true
+        }
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npm.taobao.org/lodash/download/lodash-4.17.21.tgz",
+      "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz",
+      "integrity": "sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g=="
+    },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.nlark.com/lru-cache/download/lru-cache-5.1.1.tgz",
+      "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=",
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "magic-string": {
+      "version": "0.30.21",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.30.21.tgz",
+      "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
+      "dev": true,
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.5.5"
+      }
+    },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
+    },
+    "mime": {
+      "version": "2.5.2",
+      "resolved": "https://registry.nlark.com/mime/download/mime-2.5.2.tgz",
+      "integrity": "sha1-bj3GzCuVEGQ4MOXxnVy3U9pe6r4="
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz",
+      "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.nlark.com/minimist/download/minimist-1.2.5.tgz",
+      "integrity": "sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI="
+    },
+    "minipass": {
+      "version": "7.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "dev": true
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.nlark.com/mkdirp/download/mkdirp-0.5.5.tgz",
+      "integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&sync_timestamp=1607433856030&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
+      "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
+    },
+    "mz": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz",
+      "integrity": "sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI=",
+      "requires": {
+        "any-promise": "^1.0.0",
+        "object-assign": "^4.0.1",
+        "thenify-all": "^1.0.0"
+      }
+    },
+    "mz-modules": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/mz-modules/-/mz-modules-2.1.0.tgz",
+      "integrity": "sha512-sjk8lcRW3vrVYnZ+W+67L/2rL+jbO5K/N6PFGIcLWTiYytNr22Ah9FDXFs+AQntTM1boZcoHi5qS+CV1seuPog==",
+      "requires": {
+        "glob": "^7.1.2",
+        "ko-sleep": "^1.0.3",
+        "mkdirp": "^0.5.1",
+        "pump": "^3.0.0",
+        "rimraf": "^2.6.1"
+      }
+    },
+    "nanoid": {
+      "version": "3.3.11",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/nanoid/-/nanoid-3.3.11.tgz",
+      "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="
+    },
+    "natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "dev": true
+    },
+    "needle": {
+      "version": "2.8.0",
+      "resolved": "https://registry.nlark.com/needle/download/needle-2.8.0.tgz",
+      "integrity": "sha1-HI75waLCncweg9c4Cde8aByAoEg=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "iconv-lite": "^0.4.4",
+        "sax": "^1.2.4"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.nlark.com/debug/download/debug-3.2.7.tgz",
+          "integrity": "sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        }
+      }
+    },
+    "netmask": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/netmask/-/netmask-2.0.2.tgz",
+      "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg=="
+    },
+    "node-addon-api": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz",
+      "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+      "dev": true
+    },
+    "node-fetch": {
+      "version": "2.6.7",
+      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+      "requires": {
+        "whatwg-url": "^5.0.0"
+      },
+      "dependencies": {
+        "tr46": {
+          "version": "0.0.3",
+          "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+          "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+        },
+        "webidl-conversions": {
+          "version": "3.0.1",
+          "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+          "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+        },
+        "whatwg-url": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+          "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+          "requires": {
+            "tr46": "~0.0.3",
+            "webidl-conversions": "^3.0.0"
+          }
+        }
+      }
+    },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.nlark.com/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "optionator": {
+      "version": "0.8.3",
+      "resolved": "https://registry.nlark.com/optionator/download/optionator-0.8.3.tgz",
+      "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.6",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "word-wrap": "~1.2.3"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz",
+      "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=",
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-name": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz",
+      "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==",
+      "requires": {
+        "osx-release": "^1.0.0",
+        "win-release": "^1.0.0"
+      }
+    },
+    "osx-release": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz",
+      "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==",
+      "requires": {
+        "minimist": "^1.1.0"
+      }
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz",
+      "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/p-try/download/p-try-2.2.0.tgz",
+      "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY="
+    },
+    "pac-proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ==",
+      "requires": {
+        "@tootallnate/once": "1",
+        "agent-base": "6",
+        "debug": "4",
+        "get-uri": "3",
+        "http-proxy-agent": "^4.0.1",
+        "https-proxy-agent": "5",
+        "pac-resolver": "^5.0.0",
+        "raw-body": "^2.2.0",
+        "socks-proxy-agent": "5"
+      }
+    },
+    "pac-resolver": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/pac-resolver/-/pac-resolver-5.0.1.tgz",
+      "integrity": "sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q==",
+      "requires": {
+        "degenerator": "^3.0.2",
+        "ip": "^1.1.5",
+        "netmask": "^2.0.2"
+      }
+    },
+    "package-json-from-dist": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+      "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+      "dev": true
+    },
+    "parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "dev": true,
+      "requires": {
+        "callsites": "^3.0.0"
+      },
+      "dependencies": {
+        "callsites": {
+          "version": "3.1.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/callsites/-/callsites-3.1.0.tgz",
+          "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+          "dev": true
+        }
+      }
+    },
+    "parse-node-version": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/parse-node-version/download/parse-node-version-1.0.1.tgz",
+      "integrity": "sha1-4rXb7eAOf6m8NjYH9TMn6LBzGJs=",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+    },
+    "path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "dev": true
+    },
+    "path-scurry": {
+      "version": "1.11.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/path-scurry/-/path-scurry-1.11.1.tgz",
+      "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "^10.2.0",
+        "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+      },
+      "dependencies": {
+        "lru-cache": {
+          "version": "10.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/lru-cache/-/lru-cache-10.4.3.tgz",
+          "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+          "dev": true
+        }
+      }
+    },
+    "pause-stream": {
+      "version": "0.0.11",
+      "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz",
+      "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
+      "requires": {
+        "through": "~2.3"
+      }
+    },
+    "picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
+      "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
+      "dev": true,
+      "optional": true
+    },
+    "platform": {
+      "version": "1.3.6",
+      "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
+      "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
+    },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
+    "postcss": {
+      "version": "8.5.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/postcss/-/postcss-8.5.6.tgz",
+      "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
+      "requires": {
+        "nanoid": "^3.3.11",
+        "picocolors": "^1.1.1",
+        "source-map-js": "^1.2.1"
+      },
+      "dependencies": {
+        "source-map-js": {
+          "version": "1.2.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map-js/-/source-map-js-1.2.1.tgz",
+          "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
+        }
+      }
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
+    },
+    "proxy-agent": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/proxy-agent/-/proxy-agent-5.0.0.tgz",
+      "integrity": "sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g==",
+      "requires": {
+        "agent-base": "^6.0.0",
+        "debug": "4",
+        "http-proxy-agent": "^4.0.0",
+        "https-proxy-agent": "^5.0.0",
+        "lru-cache": "^5.1.1",
+        "pac-proxy-agent": "^5.0.0",
+        "proxy-from-env": "^1.0.0",
+        "socks-proxy-agent": "^5.0.0"
+      }
+    },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.nlark.com/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true,
+      "optional": true
+    },
+    "psl": {
+      "version": "1.8.0",
+      "resolved": "https://registry.nlark.com/psl/download/psl-1.8.0.tgz",
+      "integrity": "sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ="
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz",
+      "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
+    },
+    "qrcode": {
+      "version": "1.5.4",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.4.tgz",
+      "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+          "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+        },
+        "camelcase": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+          "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+        },
+        "find-up": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+          "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+          "requires": {
+            "locate-path": "^5.0.0",
+            "path-exists": "^4.0.0"
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+        },
+        "locate-path": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+          "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+          "requires": {
+            "p-locate": "^4.1.0"
+          }
+        },
+        "p-locate": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+          "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+          "requires": {
+            "p-limit": "^2.2.0"
+          }
+        },
+        "path-exists": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+          "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+        },
+        "string-width": {
+          "version": "4.2.3",
+          "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+          "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.1"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.1",
+          "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+          "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+          "requires": {
+            "ansi-regex": "^5.0.1"
+          }
+        },
+        "yargs": {
+          "version": "15.4.1",
+          "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+          "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+          "requires": {
+            "cliui": "^6.0.0",
+            "decamelize": "^1.2.0",
+            "find-up": "^4.1.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^4.2.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^18.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "18.1.3",
+          "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+          "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.nlark.com/querystringify/download/querystringify-2.2.0.tgz",
+      "integrity": "sha1-M0WUG0FTy50ILY7uTNogFqmu9/Y="
+    },
+    "queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/queue-microtask/download/queue-microtask-1.2.3.tgz?cache=0&sync_timestamp=1616391548624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqueue-microtask%2Fdownload%2Fqueue-microtask-1.2.3.tgz",
+      "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.nlark.com/raw-body/download/raw-body-2.4.0.tgz",
+      "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.7",
+      "resolved": "https://registry.nlark.com/readable-stream/download/readable-stream-2.3.7.tgz",
+      "integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.nlark.com/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz",
+      "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs="
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+    },
+    "reusify": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/reusify/download/reusify-1.0.4.tgz",
+      "integrity": "sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz",
+      "integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "rollup": {
+      "version": "3.29.5",
+      "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.29.5.tgz",
+      "integrity": "sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==",
+      "dev": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npm.taobao.org/run-parallel/download/run-parallel-1.2.0.tgz?cache=0&sync_timestamp=1612925912322&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frun-parallel%2Fdownload%2Frun-parallel-1.2.0.tgz",
+      "integrity": "sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=",
+      "dev": true,
+      "requires": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.nlark.com/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "sass": {
+      "version": "1.80.3",
+      "resolved": "https://registry.npmmirror.com/sass/-/sass-1.80.3.tgz",
+      "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==",
+      "dev": true,
+      "requires": {
+        "@parcel/watcher": "^2.4.1",
+        "chokidar": "^4.0.0",
+        "immutable": "^4.0.0",
+        "source-map-js": ">=0.6.2 <2.0.0"
+      },
+      "dependencies": {
+        "chokidar": {
+          "version": "4.0.1",
+          "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz",
+          "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==",
+          "dev": true,
+          "requires": {
+            "readdirp": "^4.0.1"
+          }
+        },
+        "readdirp": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz",
+          "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
+          "dev": true
+        }
+      }
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.nlark.com/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
+    },
+    "sdk-base": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz",
+      "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==",
+      "requires": {
+        "get-ready": "~1.0.0"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/setprototypeof/download/setprototypeof-1.1.1.tgz",
+      "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
+    },
+    "shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^3.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "4.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-4.1.0.tgz",
+      "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+      "dev": true
+    },
+    "smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
+    },
+    "socks": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmmirror.com/socks/-/socks-2.7.1.tgz",
+      "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==",
+      "requires": {
+        "ip": "^2.0.0",
+        "smart-buffer": "^4.2.0"
+      },
+      "dependencies": {
+        "ip": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ip/-/ip-2.0.0.tgz",
+          "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
+        }
+      }
+    },
+    "socks-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==",
+      "requires": {
+        "agent-base": "^6.0.2",
+        "debug": "4",
+        "socks": "^2.3.3"
+      }
+    },
+    "source-map": {
+      "version": "0.7.6",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.7.6.tgz",
+      "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+      "dev": true
+    },
+    "source-map-js": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npm.taobao.org/source-map-js/download/source-map-js-0.6.2.tgz",
+      "integrity": "sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=",
+      "dev": true
+    },
+    "sourcemap-codec": {
+      "version": "1.4.8",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+      "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.nlark.com/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
+    },
+    "stream-http": {
+      "version": "2.8.2",
+      "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz",
+      "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-wormhole": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz",
+      "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew=="
+    },
+    "string-width": {
+      "version": "5.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/string-width/-/string-width-5.1.2.tgz",
+      "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+      "dev": true,
+      "requires": {
+        "eastasianwidth": "^0.2.0",
+        "emoji-regex": "^9.2.2",
+        "strip-ansi": "^7.0.1"
+      },
+      "dependencies": {
+        "emoji-regex": {
+          "version": "9.2.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/emoji-regex/-/emoji-regex-9.2.2.tgz",
+          "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+          "dev": true
+        }
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.nlark.com/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "strip-ansi": {
+      "version": "7.1.2",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-7.1.2.tgz",
+      "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^6.0.1"
+      }
+    },
+    "strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "dev": true
+    },
+    "stylus": {
+      "version": "0.64.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/stylus/-/stylus-0.64.0.tgz",
+      "integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==",
+      "dev": true,
+      "requires": {
+        "@adobe/css-tools": "~4.3.3",
+        "debug": "^4.3.2",
+        "glob": "^10.4.5",
+        "sax": "~1.4.1",
+        "source-map": "^0.7.3"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.2",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-2.0.2.tgz",
+          "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "10.5.0",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/glob/-/glob-10.5.0.tgz",
+          "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+          "dev": true,
+          "requires": {
+            "foreground-child": "^3.1.0",
+            "jackspeak": "^3.1.2",
+            "minimatch": "^9.0.4",
+            "minipass": "^7.1.2",
+            "package-json-from-dist": "^1.0.0",
+            "path-scurry": "^1.11.1"
+          }
+        },
+        "minimatch": {
+          "version": "9.0.5",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/minimatch/-/minimatch-9.0.5.tgz",
+          "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "sax": {
+          "version": "1.4.3",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/sax/-/sax-1.4.3.tgz",
+          "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
+          "dev": true
+        }
+      }
+    },
+    "text-table": {
+      "version": "0.2.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "dev": true
+    },
+    "thenify": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npm.taobao.org/thenify/download/thenify-3.3.1.tgz",
+      "integrity": "sha1-iTLmhqQGYDigFt2eLKRq3Zg4qV8=",
+      "requires": {
+        "any-promise": "^1.0.0"
+      }
+    },
+    "thenify-all": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz",
+      "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=",
+      "requires": {
+        "thenify": ">= 3.1.0 < 4"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.nlark.com/through/download/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M="
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.nlark.com/toidentifier/download/toidentifier-1.0.0.tgz",
+      "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
+    },
+    "tough-cookie": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz",
+      "integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
+      "requires": {
+        "psl": "^1.1.28",
+        "punycode": "^2.1.1"
+      }
+    },
+    "tslib": {
+      "version": "2.0.3",
+      "resolved": "https://registry.nlark.com/tslib/download/tslib-2.0.3.tgz",
+      "integrity": "sha1-jgdBrEX8DCJuWKF7/D5kubxsphw="
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "unescape": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz",
+      "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
+      "requires": {
+        "extend-shallow": "^2.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-extendable": {
+          "version": "0.1.1",
+          "resolved": "https://registry.nlark.com/is-extendable/download/is-extendable-0.1.1.tgz",
+          "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
+        }
+      }
+    },
+    "universalify": {
+      "version": "0.1.2",
+      "resolved": "https://registry.nlark.com/universalify/download/universalify-0.1.2.tgz",
+      "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+    },
+    "uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npm.taobao.org/uri-js/download/uri-js-4.4.1.tgz?cache=0&sync_timestamp=1610237530009&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furi-js%2Fdownload%2Furi-js-4.4.1.tgz",
+      "integrity": "sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "url-parse": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npm.taobao.org/url-parse/download/url-parse-1.5.1.tgz",
+      "integrity": "sha1-1fqYkK+KXh8nSiyYN2UQ9kJfbjs=",
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "urllib": {
+      "version": "2.40.0",
+      "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.40.0.tgz",
+      "integrity": "sha512-XDZjoijtzsbkXTXgM+A/sJM002nwoYsc46YOYr6MNH2jUUw1nCBf2ywT1WaPsVEWJX4Yr+9isGmYj4+yofFn9g==",
+      "requires": {
+        "any-promise": "^1.3.0",
+        "content-type": "^1.0.2",
+        "debug": "^2.6.9",
+        "default-user-agent": "^1.0.0",
+        "digest-header": "^1.0.0",
+        "ee-first": "~1.1.1",
+        "formstream": "^1.1.0",
+        "humanize-ms": "^1.2.0",
+        "iconv-lite": "^0.4.15",
+        "ip": "^1.1.5",
+        "proxy-agent": "^5.0.0",
+        "pump": "^3.0.0",
+        "qs": "^6.4.0",
+        "statuses": "^1.3.1",
+        "utility": "^1.16.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "ms": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+          "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "utility": {
+      "version": "1.17.0",
+      "resolved": "https://registry.npmmirror.com/utility/-/utility-1.17.0.tgz",
+      "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==",
+      "requires": {
+        "copy-to": "^2.0.1",
+        "escape-html": "^1.0.3",
+        "mkdirp": "^0.5.1",
+        "mz": "^2.7.0",
+        "unescape": "^1.0.1"
+      }
+    },
+    "vite": {
+      "version": "4.5.14",
+      "resolved": "https://registry.npmmirror.com/vite/-/vite-4.5.14.tgz",
+      "integrity": "sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.18.10",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      }
+    },
+    "vm2": {
+      "version": "3.9.14",
+      "resolved": "https://registry.npmmirror.com/vm2/-/vm2-3.9.14.tgz",
+      "integrity": "sha512-HgvPHYHeQy8+QhzlFryvSteA4uQLBCOub02mgqdR+0bN/akRZ48TGB1v0aCv7ksyc0HXx16AZtMHKS38alc6TA==",
+      "requires": {
+        "acorn": "^8.7.0",
+        "acorn-walk": "^8.2.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "8.8.2",
+          "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
+          "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
+        },
+        "acorn-walk": {
+          "version": "8.2.0",
+          "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz",
+          "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA=="
+        }
+      }
+    },
+    "vue": {
+      "version": "3.2.37",
+      "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.37.tgz",
+      "integrity": "sha512-bOKEZxrm8Eh+fveCqS1/NkG/n6aMidsI6hahas7pa0w/l7jkbssJVsRhVDs07IdDq7h9KHswZOgItnwJAgtVtQ==",
+      "requires": {
+        "@vue/compiler-dom": "3.2.37",
+        "@vue/compiler-sfc": "3.2.37",
+        "@vue/runtime-dom": "3.2.37",
+        "@vue/server-renderer": "3.2.37",
+        "@vue/shared": "3.2.37"
+      },
+      "dependencies": {
+        "@vue/compiler-sfc": {
+          "version": "3.2.37",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz",
+          "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==",
+          "requires": {
+            "@babel/parser": "^7.16.4",
+            "@vue/compiler-core": "3.2.37",
+            "@vue/compiler-dom": "3.2.37",
+            "@vue/compiler-ssr": "3.2.37",
+            "@vue/reactivity-transform": "3.2.37",
+            "@vue/shared": "3.2.37",
+            "estree-walker": "^2.0.2",
+            "magic-string": "^0.25.7",
+            "postcss": "^8.1.10",
+            "source-map": "^0.6.1"
+          }
+        },
+        "magic-string": {
+          "version": "0.25.9",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/magic-string/-/magic-string-0.25.9.tgz",
+          "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+          "requires": {
+            "sourcemap-codec": "^1.4.8"
+          }
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://mirrors.huaweicloud.com/repository/npm/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+        }
+      }
+    },
+    "vue-barcode": {
+      "version": "1.3.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/vue-barcode/-/vue-barcode-1.3.0.tgz",
+      "integrity": "sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==",
+      "requires": {
+        "jsbarcode": "^3.5.8"
+      }
+    },
+    "vue-draggable-next": {
+      "version": "2.0.1",
+      "resolved": "https://registry.nlark.com/vue-draggable-next/download/vue-draggable-next-2.0.1.tgz",
+      "integrity": "sha1-u2TvswLHuOdZ/T8hQnhxeJtiTGc="
+    },
+    "vue-qrcode": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/vue-qrcode/-/vue-qrcode-2.2.2.tgz",
+      "integrity": "sha512-SbrXq/mSb1g2tbDyXPe9gy9KiMYsvxWKRErlpij1BqiFoHwQckheZV63CTw6yRLLUVG2RXAVlX+APkpdCK7SQQ==",
+      "requires": {
+        "tslib": "^2.6.2"
+      },
+      "dependencies": {
+        "tslib": {
+          "version": "2.8.1",
+          "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
+          "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
+        }
+      }
+    },
+    "vue-router": {
+      "version": "4.0.10",
+      "resolved": "https://registry.nlark.com/vue-router/download/vue-router-4.0.10.tgz?cache=0&sync_timestamp=1624286995690&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvue-router%2Fdownload%2Fvue-router-4.0.10.tgz",
+      "integrity": "sha1-7I/aAylJsqMdMnMXD483bobrUqw=",
+      "requires": {
+        "@vue/devtools-api": "^6.0.0-beta.14"
+      }
+    },
+    "vuex": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/vuex/download/vuex-4.0.2.tgz",
+      "integrity": "sha1-+Jbb1b8qDpY/AMZ+m2EN50nMrMk=",
+      "requires": {
+        "@vue/devtools-api": "^6.0.0-beta.11"
+      }
+    },
+    "which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.nlark.com/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "win-release": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
+      "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==",
+      "requires": {
+        "semver": "^5.0.1"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+        }
+      }
+    },
+    "word-wrap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.nlark.com/word-wrap/download/word-wrap-1.2.3.tgz",
+      "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w="
+    },
+    "wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618552978881&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz",
+          "integrity": "sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U="
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618995547052&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz",
+          "integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npm.taobao.org/color-convert/download/color-convert-2.0.1.tgz",
+          "integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.nlark.com/color-name/download/color-name-1.1.4.tgz",
+          "integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
+        },
+        "is-fullwidth-code-point": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz?cache=0&sync_timestamp=1618552469710&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-fullwidth-code-point%2Fdownload%2Fis-fullwidth-code-point-3.0.0.tgz",
+          "integrity": "sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0="
+        },
+        "string-width": {
+          "version": "4.2.2",
+          "resolved": "https://registry.nlark.com/string-width/download/string-width-4.2.2.tgz",
+          "integrity": "sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=",
+          "requires": {
+            "emoji-regex": "^8.0.0",
+            "is-fullwidth-code-point": "^3.0.0",
+            "strip-ansi": "^6.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "6.0.0",
+          "resolved": "https://registry.nlark.com/strip-ansi/download/strip-ansi-6.0.0.tgz",
+          "integrity": "sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=",
+          "requires": {
+            "ansi-regex": "^5.0.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "ws": {
+      "version": "7.5.3",
+      "resolved": "https://registry.nlark.com/ws/download/ws-7.5.3.tgz?cache=0&sync_timestamp=1625897053615&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fws%2Fdownload%2Fws-7.5.3.tgz",
+      "integrity": "sha1-Fgg1tjx9l7+rQY/BuKn87SrAGnQ="
+    },
+    "xml2js": {
+      "version": "0.4.23",
+      "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.4.23.tgz",
+      "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==",
+      "requires": {
+        "sax": ">=0.6.0",
+        "xmlbuilder": "~11.0.0"
+      }
+    },
+    "xmlbuilder": {
+      "version": "11.0.1",
+      "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+      "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+    },
+    "xregexp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/xregexp/-/xregexp-2.0.0.tgz",
+      "integrity": "sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA=="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.nlark.com/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q="
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.nlark.com/y18n/download/y18n-4.0.3.tgz",
+      "integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8="
+    },
+    "yallist": {
+      "version": "3.1.1",
+      "resolved": "https://registry.nlark.com/yallist/download/yallist-3.1.1.tgz",
+      "integrity": "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0="
+    },
+    "yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://mirrors.huaweicloud.com/repository/npm/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "dev": true
+    },
+    "zrender": {
+      "version": "5.0.4",
+      "resolved": "https://registry.nlark.com/zrender/download/zrender-5.0.4.tgz",
+      "integrity": "sha1-icNVr5CLn2SjAbOPdRt5UfLIqVo=",
+      "requires": {
+        "tslib": "2.0.3"
+      }
+    }
+  }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSClient/package.json b/Code Management/WMS/WIDESEA_WMSClient/package.json
new file mode 100644
index 0000000..e5dfa1a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/package.json
@@ -0,0 +1,59 @@
+{
+  "name": "wideseawcs",
+  "version": "0.1.0",
+  "private": true,
+  "type": "module",
+  "scripts": {
+    "serve": "vite",
+    "build": "vite build",
+    "preview": "vite preview",
+    "lint": "eslint . --ext .vue,.js"
+  },
+  "dependencies": {
+    "@element-plus/icons-vue": "^2.1.0",
+    "@microsoft/signalr": "^6.0.4",
+    "ali-oss": "^6.17.1",
+    "axios": "^0.21.1",
+    "echarts": "^5.0.2",
+    "element-plus": "^2.2.14",
+    "jsbarcode": "^3.11.6",
+    "qrcode": "^1.5.4",
+    "vue": "^3.2.37",
+    "vue-barcode": "^1.3.0",
+    "vue-draggable-next": "^2.0.1",
+    "vue-qrcode": "^2.2.2",
+    "vue-router": "^4.0.0-0",
+    "vuex": "^4.0.0-0"
+  },
+  "devDependencies": {
+    "@vitejs/plugin-vue": "^5.0.0",
+    "@vue/compiler-sfc": "^3.4.0",
+    "eslint": "^8.0.0",
+    "less": "^4.1.1",
+    "sass": "^1.78.0",
+    "stylus": "^0.64.0",
+    "vite": "^4.4.21"
+  },
+  "eslintConfig": {
+    "root": true,
+    "env": {
+      "node": true
+    },
+    "extends": [
+      "plugin:vue/vue3-essential",
+      "eslint:recommended"
+    ],
+    "rules": {
+      "indent": [
+        1,
+        4
+      ]
+    },
+    "parserOptions": {
+      "ecmaVersion": 2020
+    }
+  },
+  "eslintIgnore": [
+    "*"
+  ]
+}
diff --git a/Code Management/WMS/WIDESEA_WMSClient/public/index.html b/Code Management/WMS/WIDESEA_WMSClient/public/index.html
new file mode 100644
index 0000000..53f6fd4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/public/index.html
@@ -0,0 +1,136 @@
+<!DOCTYPE html>
+<html lang="">
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width,initial-scale=1.0">
+  <meta name="keywords" content=".netccore,dotnet core,vue,element,element plus,vue3" />
+  <meta name="description" content="" />
+  <link rel="icon" href="<%= BASE_URL %>wms_d.png">
+  <title><%= htmlWebpackPlugin.options.title %></title>
+  <script src="webconfig.js"></script>
+</head>
+
+<body>
+  <noscript>
+    <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
+      Please enable it to continue.</strong>
+  </noscript>
+  <div id="app"></div>
+  <!-- built files will be auto injected -->
+</body>
+
+</html>
+<style>
+  html,
+  body {
+    margin: 0;
+    padding: 0;
+    height: 100%;
+    width: 100%;
+  }
+
+  * {
+    box-sizing: border-box;
+  }
+
+  .el-loading {
+    z-index: 999999;
+  }
+
+  .el-table th {
+    display: table-cell !important;
+  }
+
+  .el-loading .el-loading-spinner {
+    padding: 7px;
+    background: #ececec;
+    width: 200px;
+    color: red;
+    left: 0;
+    right: 0;
+    margin: 0 auto;
+    border-radius: 5px;
+    border: 1px solid #a0a0a0;
+
+  }
+
+  h1,
+  h2,
+  h3,
+  h4 {
+    margin: 0;
+  }
+
+  .v-dialog {
+    border-radius: 5px;
+    top: 50%;
+    /* margin-top: -220px !important; */
+  }
+
+  .v-dialog .el-dialog__header {
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    padding: 0px 13px;
+    line-height: 53px;
+    border-bottom: 1px solid #e2e2e2;
+    height: 50px;
+    color: white;
+    font-weight: bold;
+    font-size: 14px;
+    background-image: linear-gradient(135deg, #0cd7bd 10%, #50c3f7);
+  }
+
+  .v-dialog .el-dialog__header .el-dialog__headerbtn {
+    top: 3px;
+    right: 0px;
+  }
+
+  .v-dialog .el-dialog__header .el-dialog__headerbtn .el-dialog__close {
+    font-size: 19px;
+    color: white;
+  }
+
+  .v-dialog .el-dialog__body {
+    padding: 0;
+  }
+
+  .el-message {
+    z-index: 3500 !important;
+  }
+
+  .v-date-range .el-input__inner {
+    padding: 0 15px 0 8px
+  }
+
+  .v-date-range .el-input__suffix .el-input__icon {
+    display: table-caption;
+    background: white;
+    margin: 1px;
+    height: auto;
+    margin-right: -4px;
+    height: 33px;
+    width: 19px;
+    font-size: 13px;
+    border-top-right-radius: 3px;
+    border-bottom-right-radius: 3px;
+  }
+
+  .v-date-range .el-icon-circle-check {
+    display: none !important;
+  }
+
+  .v-dialog .el-dialog__header {
+    margin-right: 0;
+  }
+
+  .el-button {
+    font-size: 12px !important;
+  }
+
+  .el-button--small {
+    padding: 0px 15px !important;
+    height: 32px;
+  }
+</style>
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/public/static/login_bg.png b/Code Management/WMS/WIDESEA_WMSClient/public/static/login_bg.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/public/static/login_bg.png
copy to Code Management/WMS/WIDESEA_WMSClient/public/static/login_bg.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/public/wcslogo.png b/Code Management/WMS/WIDESEA_WMSClient/public/wcslogo.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/public/wcslogo.png
copy to Code Management/WMS/WIDESEA_WMSClient/public/wcslogo.png
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSClient/public/webconfig.js b/Code Management/WMS/WIDESEA_WMSClient/public/webconfig.js
new file mode 100644
index 0000000..2d2417b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/public/webconfig.js
@@ -0,0 +1,4 @@
+window.webConfig = {
+    "webApiBaseUrl": "http://localhost:5000/",
+    "webApiProduction":"http://localhost:5000/"
+}
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/public/wms_d.png b/Code Management/WMS/WIDESEA_WMSClient/public/wms_d.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/public/wms_d.png
copy to Code Management/WMS/WIDESEA_WMSClient/public/wms_d.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/App.vue b/Code Management/WMS/WIDESEA_WMSClient/src/App.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/App.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/App.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/api/http.js b/Code Management/WMS/WIDESEA_WMSClient/src/api/http.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/api/http.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/api/http.js
diff --git a/Code Management/WIDESEA_WCSClient/src/api/permission.js b/Code Management/WMS/WIDESEA_WMSClient/src/api/permission.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/api/permission.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/api/permission.js
diff --git a/Code Management/WIDESEA_WCSClient/src/api/useTest.js b/Code Management/WMS/WIDESEA_WMSClient/src/api/useTest.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/api/useTest.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/api/useTest.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/css/common.less b/Code Management/WMS/WIDESEA_WMSClient/src/assets/css/common.less
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/css/common.less
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/css/common.less
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf b/Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.ttf
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.ttf
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff b/Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/element-icon/fonts/element-icons.woff
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/fonts/element-icons.woff
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/element-icon/icon.css b/Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/icon.css
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/element-icon/icon.css
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/element-icon/icon.css
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/error-img.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/imgs/error-img.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error-img.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/error.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/imgs/error.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/error.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wcs_x.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/imgs/wcs_x.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wcs_x.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_d.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_d.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_d.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_d.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_x.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_x.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/imgs/wms_x.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/imgs/wms_x.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/logo.png b/Code Management/WMS/WIDESEA_WMSClient/src/assets/logo.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/logo.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/logo.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/common.js b/Code Management/WMS/WIDESEA_WMSClient/src/assets/script/common.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/script/common.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/script/common.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/extend.js b/Code Management/WMS/WIDESEA_WMSClient/src/assets/script/extend.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/script/extend.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/script/extend.js
diff --git a/Code Management/WIDESEA_WCSClient/src/assets/script/testFormExtend.js b/Code Management/WMS/WIDESEA_WMSClient/src/assets/script/testFormExtend.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/assets/script/testFormExtend.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/assets/script/testFormExtend.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/AsyncLoading.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/AsyncLoading.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Audit.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/Audit.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Audit.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Empty.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/Empty.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Empty.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ErrorMsg.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ErrorMsg.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/Icons.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/Icons.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/Icons.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/QuickSearch.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/QuickSearch.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/RouterLoading.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/RouterLoading.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/UploadExcel.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/UploadExcel.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/AuditHis.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/AuditHis.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.less
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.less
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGrid.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGrid.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridAudit.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/ViewGridCustomColumn.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/detailMethods.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/detailMethods.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/detailMethods.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/index.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/index.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/methods.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/methods.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/props.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/props.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/props.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/serviceFilter.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/ViewGrid/serviceFilter.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/ViewGrid/serviceFilter.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolBox.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolBox.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolBox.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenu.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenu.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolElementMenuChild.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolElementMenuChild.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue
new file mode 100644
index 0000000..445a8be
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm.vue
@@ -0,0 +1,1234 @@
+<template>
+  <el-form style="display: inline-block; width: 100%" :inline="true" ref="volform" @submit.prevent :model="formFields"
+    :label-width="labelWidth" :rules="rules">
+    <template v-for="(row, findex) in formRules" :key="findex">
+      <div class="vol-form-item">
+        <el-form-item :label="item.title ? item.title + '锛�' : ''" v-show="!item.hidden" v-for="(item, index) in row"
+          :prop="item.field" :key="item.field + index" :style="{ width: getColWidth(item) + '%' }">
+          <!-- render -->
+          <form-expand v-if="item.render && typeof item.render == 'function'" :render="item.render"
+            :par="12"></form-expand>
+          <!-- 2021.10.17澧炲姞琛ㄥ崟瀹炴椂鏂规硶璁$畻 -->
+          <span v-else-if="item.readonly && typeof formFields[item.field] == 'function'
+            ">{{ formFields[item.field]() }}</span>
+          <!-- 鍙鍥剧墖鎴栨枃浠�  -->
+          <div v-else-if="isReadonlyImgFile(item, formFields)">
+            <div v-if="item.type == 'img'" class="form-imgs">
+              <div class="img-item" v-for="(img, imgIndex) in formFields[item.field]" :key="imgIndex">
+                <img :src="getSrc(img.path)" :onerror="errorImg" @click="previewImg(img.path)" />
+              </div>
+            </div>
+            <div v-else class="form-file-list" v-for="(file, fileIndex) in formFields[item.field]" :key="fileIndex">
+              <a @click="dowloadFile(formFields[item.field][fileIndex])">{{
+                file.name
+              }}</a>
+            </div>
+          </div>
+
+          <div v-else :class="{ 'form-item-extra': item.extra }">
+            <!-- 鍙灞炴�� -->
+            <label :style="item.inputStyle" v-if="item.type == 'label'" class="readonly-input">{{ getText(formFields,
+              item) }}</label>
+            <!-- 20223.05.13闆嗘垚el-tree-select -->
+            <!-- :filter-method="(value)=>{filterMethod(value,item.data)}" -->
+            <!-- :filterable="true" -->
+            <el-tree-select style="width: 100%" v-else-if="item.type == 'treeSelect'" v-model="formFields[item.field]"
+              :data="item.data" :multiple="item.multiple" :render-after-expand="false" :show-checkbox="false"
+              :check-strictly="true" check-on-click-node node-key="key" :props="{ label: 'label' }">
+              <template #default="{ data, node }">
+                <!-- <el-checkbox v-model="node.checked"></el-checkbox> -->
+                <!-- {{getNode(node, data)}} -->
+                <!-- {{node.checked}} -->
+                <!-- 杩欓噷杩樻湁鐐归棶棰橈紝鍚庨潰澶勭悊 -->
+                {{ data.label }}</template>
+            </el-tree-select>
+            <template v-else-if="['select', 'selectList'].indexOf(item.type) != -1">
+              <el-select-v2 :disabled="item.readonly || item.disabled" v-show="!item.hidden" style="width: 100%"
+                :size="size" v-if="item.data.length > select2Count" v-model="formFields[item.field]" filterable
+                :multiple="item.type == 'select' ? false : true"
+                :placeholder="item.placeholder ? item.placeholder : item.title" :allow-create="item.autocomplete"
+                :options="item.data" @change="(val) => {
+                  item.onChange(val, item.data);
+                }
+                  " clearable>
+                <template #default="{ item }">
+                  {{ item.label }}
+                </template>
+              </el-select-v2>
+              <el-select :disabled="item.readonly || item.disabled" v-show="!item.hidden" style="width: 100%" :size="size"
+                v-else-if="item.remote || item.url" v-model="formFields[item.field]" filterable
+                :multiple="item.type == 'select' ? false : true"
+                :placeholder="item.placeholder ? item.placeholder : item.title" clearable :remote-method="(val) => {
+                  remoteSearch(item, formFields, val);
+                }
+                  ">
+                <el-option v-for="item in item.data" :key="item.key" :label="item.value" :value="item.key">
+                </el-option>
+              </el-select>
+              <el-select :disabled="item.readonly || item.disabled" v-show="!item.hidden" style="width: 100%" :size="size"
+                v-else v-model="formFields[item.field]" filterable :multiple="item.type == 'select' ? false : true"
+                :placeholder="item.placeholder ? item.placeholder : item.title" :allow-create="item.autocomplete" @change="(val) => {
+                  item.onChange(val, item.data);
+                }
+                  " clearable>
+                <el-option v-show="!item.hidden" :disabled="item.disabled" v-for="item in item.data" :key="item.key"
+                  :label="item.value" :value="item.key">
+                </el-option>
+              </el-select>
+            </template>
+
+            <el-switch v-show="!item.hidden" v-else-if="item.type == 'switch'" v-model="formFields[item.field]"
+              :disabled="item.readonly || item.disabled" active-color="#0f84ff" @change="item.onChange"
+              inactive-color="rgb(194 194 194)" :active-value="typeof formFields[item.field] == 'boolean'
+                ? true
+                : typeof formFields[item.field] == 'string'
+                  ? '1'
+                  : 1
+                " :inactive-value="typeof formFields[item.field] == 'boolean'
+    ? false
+    : typeof formFields[item.field] == 'string'
+      ? '0'
+      : 0
+    ">
+            </el-switch>
+
+            <el-radio-group :disabled="item.readonly || item.disabled" v-show="!item.hidden"
+              v-model="formFields[item.field]" v-else-if="item.type == 'radio'" @change="item.onChange">
+              <el-radio v-for="kv in item.data" :disabled="item.readonly || item.disabled" :key="kv.key"
+                :label="kv.key">{{ kv.value }}</el-radio>
+            </el-radio-group>
+
+            <el-checkbox-group :disabled="item.readonly || item.disabled" v-show="!item.hidden"
+              v-model="formFields[item.field]" v-else-if="item.type == 'checkbox'" @change="item.onChange">
+              <el-checkbox v-for="kv in item.data" :key="kv.key" :disabled="item.readonly || item.disabled"
+                :label="kv.key">{{ kv.value }}</el-checkbox>
+            </el-checkbox-group>
+            <div class="v-date-range" style="display: flex" v-else-if="['date', 'datetime'].indexOf(item.type) != -1 && item.range
+              ">
+              <el-date-picker :size="size" :disabled="item.readonly || item.disabled" style="flex: 1; width: auto"
+                v-model="formFields[item.field][0]" :type="item.type == 'date' ? 'date' : 'datetime'"
+                :disabledDate="(val) => getDateOptions(val, item)" placeholder="寮�濮嬫椂闂�" @change="(val) => {
+                  dateRangeChange(val, item);
+                }
+                  " :value-format="getDateFormat(item)">
+              </el-date-picker>
+              <span style="margin: 0px 5px; font-size: 13px; color: #6f6b6b">鑷�</span>
+              <el-date-picker :size="size" :disabled="item.readonly || item.disabled" style="flex: 1; width: auto"
+                v-model="formFields[item.field][1]" placeholder="缁撴潫鏃堕棿" :type="item.type == 'date' ? 'date' : 'datetime'"
+                :disabledDate="(val) => getDateOptions(val, item)" @change="(val) => {
+                  dateRangeChange(val, item);
+                }
+                  " :value-format="getDateFormat(item)">
+              </el-date-picker>
+            </div>
+            <!-- v-show涓嶆坊鍔犳牴鑺傜偣灏变細鎶ラ敊娌℃湁鏍圭偣鑺� -->
+            <div v-show="!item.hidden" style="width: 100%"
+              v-else-if="['date', 'datetime', 'month'].indexOf(item.type) != -1">
+              <el-date-picker :size="size" clearable :disabled="item.readonly || item.disabled" style="width: 100%"
+                v-model="formFields[item.field]" @change="item.onChange" :type="item.type" :placeholder="item.placeholder ? item.placeholder : '璇烽�夋嫨' + item.title
+                  " :disabledDate="(val) => getDateOptions(val, item)" :value-format="getDateFormat(item)">
+              </el-date-picker>
+            </div>
+
+            <el-time-picker :size="size" v-else-if="item.type == 'time'" v-model="formFields[item.field]"
+              :disabled="item.readonly || item.disabled" placeholder="璇烽�夋嫨鏃堕棿" :value-format="item.format || 'HH:mm:ss'"
+              :format="item.format" style="width: 100%">
+            </el-time-picker>
+
+            <el-scrollbar style="border: 1px solid #c7d8db; border-radius: 5px" :height="item.height || 150" v-else-if="item.type == 'editor' && (item.readonly || item.disabled)
+              ">
+              <div ref="editor" v-html="formFields[item.field]"></div>
+            </el-scrollbar>
+
+            <vol-wang-editor ref="editor" v-else-if="item.type == 'editor'" :url="item.url || editor.uploadImgUrl"
+              :upload="item.upload || editor.upload" v-model="formFields[item.field]"
+              :height="item.height || 350"></vol-wang-editor>
+
+            <vol-upload v-show="!item.hidden" v-else-if="isFile(item, formFields)" :desc="item.desc"
+              :multiple="item.multiple" :max-file="item.maxFile" :max-size="item.maxSize" :autoUpload="item.autoUpload"
+              :fileInfo="formFields[item.field]" :url="item.url" :img="item.type == 'img' || item.columnType == 'img'"
+              :excel="item.type == 'excel'" :fileTypes="item.fileTypes ? item.fileTypes : []"
+              :upload-before="item.uploadBefore" :upload-after="item.uploadAfter" :append="item.multiple" :on-change="(files) => {
+                return fileOnChange(files, item);
+              }
+                " :file-click="item.fileClick" :remove-before="item.removeBefore"
+              :downLoad="item.downLoad ? true : false"></vol-upload>
+            <el-cascader :size="size" clearable style="width: 100%; margin-top: -3px" v-model="formFields[item.field]"
+              :disabled="item.readonly || item.disabled" v-else-if="item.type == 'cascader'" :options="item.data" :props="{
+                checkStrictly: item.changeOnSelect || item.checkStrictly
+              }" @change="item.onChange">
+            </el-cascader>
+            <el-rate v-else-if="item.type == 'rate'" @change="(val) => {
+              item.onChange && item.onChange(val);
+            }
+              " :max="item.max" v-model="formFields[item.field]" />
+            <div style="display: flex" v-else-if="item.type == 'range' || item.range">
+              <el-input :size="size" :disabled="item.readonly || item.disabled" style="flex: 1"
+                v-model="formFields[item.field][0]" clearable />
+              <span style="margin: 0 5px">-</span>
+              <el-input :size="size" :disabled="item.readonly || item.disabled" style="flex: 1"
+                v-model="formFields[item.field][1]" clearable />
+            </div>
+            <el-input :size="size" clearable :ref="item.field" :input-style="item.inputStyle"
+              :disabled="item.readonly || item.disabled" v-else-if="item.type == 'textarea'"
+              v-model="formFields[item.field]" type="textarea" :autosize="{
+                minRows: item.minRows || 2,
+                maxRows: item.maxRows || 10
+              }" :placeholder="item.placeholder ? item.placeholder : item.title" />
+            <el-input-number :size="size" style="width: 100%" :ref="item.field" :input-style="item.inputStyle"
+              v-else-if="item.type == 'number'" v-model="formFields[item.field]" :min="item.min"
+              :disabled="item.readonly || item.disabled" :max="item.max" controls-position="right" />
+            <el-input :size="size" clearable :input-style="item.inputStyle" v-else-if="item.type == 'password'"
+              type="password" v-model="formFields[item.field]" :disabled="item.readonly || item.disabled"
+              v-show="!item.hidden" :placeholder="item.placeholder ? item.placeholder : item.title" />
+            <!-- 2021.11.18淇el-input娌℃湁榛樿enter浜嬩欢鏃跺洖杞﹀紓甯� -->
+            <el-input :size="size" clearable :ref="item.field" :input-style="item.inputStyle" v-else-if="item.onKeyPress"
+              :placeholder="item.placeholder ? item.placeholder : item.title" :disabled="item.readonly || item.disabled"
+              v-show="!item.hidden" v-model="formFields[item.field]" @keypress="($event) => {
+                onKeyPress($event, item);
+              }
+                " @change="item.onKeyPress" @keyup.enter="item.onKeyPress"></el-input>
+            <el-input :size="size" clearable v-else :ref="item.field" :input-style="item.inputStyle"
+              :placeholder="item.placeholder ? item.placeholder : item.title" :disabled="item.readonly || item.disabled"
+              v-show="!item.hidden" v-model="formFields[item.field]"></el-input>
+
+            <div class="form-extra" v-if="item.extra">
+              <form-expand v-if="item.extra.render" :render="item.extra.render"></form-expand>
+              <a v-else-if="item.extra.click" :style="item.extra.style"
+                @click="item.extra.click(item, formFields[item.field])">
+                <i v-if="item.extra.icon" :class="item.extra.icon" />
+                {{ item.extra.text }}
+              </a>
+              <a v-else :style="item.extra.style">
+                <i v-if="item.extra.icon" :class="item.extra.icon" />
+                {{ item.extra.text }}
+              </a>
+            </div>
+          </div>
+        </el-form-item>
+      </div>
+    </template>
+    <slot></slot>
+    <div style="width: 100%">
+      <slot name="footer"></slot>
+    </div>
+  </el-form>
+</template>
+<script>
+const rule = {
+  change: [
+    'checkbox',
+    'select',
+    'date',
+    'datetime',
+    'drop',
+    'radio',
+    'cascader'
+  ], // 2020.05.31澧炲姞绾ц仈绫诲瀷
+  phone: /^[1][3,4,5,6,7,8,9][0-9]{9}$/,
+  decimal: /(^[\-0-9][0-9]*(.[0-9]+)?)$/,
+  number: /(^[\-0-9][0-9]*([0-9]+)?)$/
+};
+const inputTypeArr = ['text', 'string', 'mail', 'textarea', 'password'];
+const types = {
+  int: 'number',
+  byte: 'number',
+  decimal: 'number', // "float",
+  string: 'string',
+  bool: 'boolean',
+  date: 'datetime',
+  date: 'date',
+  mail: 'email'
+};
+//琛ㄥ崟楠岃瘉娉ㄦ剰锛氭瘡娆¢獙璇侀兘蹇呴』鎵цcallback,鍚﹀垯楠岃瘉涓嶆墽琛屽洖璋冩柟娉�
+const colPow = Math.pow(10, 3);
+import FormExpand from './VolForm/VolFormRender';
+import {
+  defineAsyncComponent,
+  defineComponent,
+  ref,
+  reactive,
+  toRefs,
+  getCurrentInstance,
+  onMounted,
+  watch
+} from 'vue';
+export default defineComponent({
+  components: {
+    FormExpand,
+    'vol-upload': defineAsyncComponent(() =>
+      import('@/components/basic/VolUpload.vue')
+    ),
+    // 'vol-wang-editor': defineAsyncComponent(() =>
+    //   import('@/components/editor/VolWangEditor.vue')
+    // )
+  },
+  props: {
+    loadKey: {
+      // 鏄惁鍔犺浇formRules瀛楁閰嶇疆鐨勬暟鎹簮
+      type: Boolean,
+      default: true
+    },
+    width: {
+      // 琛ㄥ崟瀹藉害
+      type: Number,
+      default: 0
+    },
+    labelWidth: {
+      // 琛ㄥ崟宸﹁竟label鏂囧瓧鏍囩鐨勫搴�
+      type: Number,
+      default: 100
+    },
+    formRules: {
+      // 琛ㄥ崟閰嶇疆瑙勫垯锛屽瀛楁绫诲瀷锛屾槸鍚﹀繀濉�
+      type: Array,
+      default: []
+    },
+    formFields: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    },
+    editor: {
+      // 2021.01.16缂栬緫鍣ㄤ俊鎭� {uploadImgUrl:"",upload:null//涓婁紶鏂规硶}
+      type: Object,
+      default: () => {
+        return {};
+      }
+    },
+    size: {
+      type: String, //large / default / small
+      default: 'large'
+    },
+    select2Count: {
+      //瓒呭嚭鏁伴噺鏄剧ずselect2缁勪欢
+      type: Number,
+      default: 500
+    }
+  },
+  computed: {
+    rules() {
+      let ruleResult = {};
+      this.formRules.forEach((option, xIndex) => {
+        option.forEach((item) => {
+          ruleResult[item.field] = [this.getRule(item, this.formFields)];
+        });
+      });
+      if (this.$refs.volform) {
+        setTimeout(() => {
+          this.$refs.volform.clearValidate();
+        }, 100);
+      }
+      return ruleResult;
+    }
+  },
+  setup(props, context) {
+    const { appContext, proxy } = getCurrentInstance();
+    const remoteCall = ref(true);
+    const span = ref(1);
+    const rangeFields = toRefs([]);
+    const volform = ref(null);
+    const numberFields = toRefs([]);
+    onMounted(() => { });
+    const initFormRules = (init) => {
+      if (props.loadKey) {
+        initSource();
+      }
+      props.formRules.forEach((row, xIndex) => {
+        if (row.length > span.value) span.value = row.length;
+        let _count = 0,
+          _size = 0;
+        row.forEach((x) => {
+          if (x.colSize > 0) {
+            _size = _size + x.colSize;
+            _count++;
+          }
+        });
+        if (_count > 0 && row.length - _count > 0) {
+          let _cellSize = (12 - _size) / (row.length - _count);
+          row.forEach((x) => {
+            if (!x.colSize) {
+              x.colSize = _cellSize;
+            }
+          });
+        }
+        row.forEach((item, yIndex) => {
+          if (item.type == 'number') {
+            numberFields.push(item.field);
+          }
+          // 鐩墠鍙敮鎸乻elect鍗曢�夎繙绋嬫悳绱紝remote杩滅▼浠庡悗鍙板瓧鍏告暟鎹簮杩涜鎼滅储锛寀rl浠庢寚瀹氱殑url鎼滅储
+          if (item.remote || item.url) {
+            // item.remoteData = [];
+            item.loading = false;
+            item.point = { x: xIndex, y: yIndex };
+          }
+          // 鍒濆鍖栦笂浼犳枃浠朵俊鎭�
+          initUpload(item, init);
+          // 鍒濆鍖栨暟鎹簮绌哄璞�
+          if (item.dataKey) {
+            // 涓嬫媺妗嗛兘寮哄埗璁剧疆涓哄瓧绗︿覆绫诲瀷
+            item.columnType = 'string';
+            if (!item.data) {
+              item.data = [];
+            }
+          }
+
+          if (item.range || item.type == 'range') {
+            if (
+              !(props.formFields[item.field] instanceof Array) ||
+              props.formFields[item.field].length != 2
+            ) {
+              props.formFields[item.field] = ['', ''];
+            }
+            rangeFields.push(item.field);
+          }
+        });
+      });
+    };
+
+    const initSource = () => {
+      let keys = [],
+        binds = [];
+      // 鍒濆鍖栧瓧鍏告暟鎹簮
+      props.formRules.forEach((item) => {
+        item.forEach((x) => {
+          if (x.dataKey && (!x.data || x.data.length == 0) && !x.remote) {
+            x.data = [];
+            binds.push({ key: x.dataKey, data: x.data, type: x.type });
+            if (keys.indexOf(x.dataKey) == -1) {
+              keys.push(x.dataKey);
+            }
+          }
+        });
+      });
+
+      if (keys.length == 0) return;
+      appContext.config.globalProperties.http
+        .post('/api/Sys_Dictionary/GetVueDictionary', keys)
+        .then((dic) => {
+          bindOptions(dic, binds);
+          proxy.$emit('dicInited', dic);
+        });
+    };
+    const bindOptions = (dic, binds) => {
+      dic.forEach((d) => {
+        if (d.data.length > props.select2Count) {
+          if (
+            !binds.some((x) => {
+              return x.key == d.dicNo && x.type == 'cascader';
+            })
+          ) {
+            d.data.forEach((item) => {
+              item.label = item.value;
+              item.value = item.key;
+            });
+          }
+        }
+        binds.forEach((x) => {
+          if (x.key != d.dicNo) return true;
+          // 濡傛灉鏈夋暟鎹殑鍒欎笉鏌ヨ
+          if (x.data.length > 0) return true;
+          //2022.03.13澧炲姞绾ц仈鏁版嵁婧愯嚜鍔ㄨ浆鎹�
+          if (x.type == 'cascader' || x.type == 'treeSelect') {
+            let _data = JSON.parse(JSON.stringify(d.data));
+            let cascaderArr = appContext.config.globalProperties.base.convertTree(
+              _data,
+              (node, data, isRoot) => {
+                if (!node.inited) {
+                  node.inited = true;
+                  node.label = node.value;
+                  node.value = node.key;
+                }
+              }
+            );
+            props.formRules.forEach((option) => {
+              option.forEach((item) => {
+                if (item.dataKey == x.key) {
+                  item.orginData = x.data;
+                  item.data = cascaderArr;
+                }
+              });
+            });
+          } else if (d.data.length > 0 && !d.data[0].hasOwnProperty('key')) {
+            let source = d.data,
+              newSource = new Array(source.length);
+            for (let index = 0; index < source.length; index++) {
+              newSource[index] = {
+                key: source['key'] + '',
+                value: source['value']
+              };
+            }
+            x.data.push(...newSource);
+          } else {
+            x.data.push(...d.data);
+          }
+        });
+      });
+    };
+
+    const initUpload = (item, init) => {
+      if (!init) return;
+      if (
+        ['img', 'excel', 'file'].indexOf(item.type != -1) ||
+        item.columnType == 'img'
+      ) {
+        // 鍙槸娌¤缃槸鍚﹁嚜鍔ㄤ笂浼犵殑锛岄粯璁ら兘鏄�夋嫨鏂囦欢鍚庤嚜鍔ㄤ笂浼�
+        if (!item.hasOwnProperty('autoUpload')) {
+          item.autoUpload = true;
+        }
+        if (!item.hasOwnProperty('fileList')) {
+          item.fileList = true;
+        }
+        if (!item.hasOwnProperty('downLoad')) {
+          item.downLoad = true;
+        }
+        if (!item.removeBefore) {
+          item.removeBefore = (index, file, files) => {
+            return true;
+          };
+        }
+        if (!item.fileClick) {
+          item.fileClick = (index, file, files) => {
+            return true;
+          };
+        }
+        if (!item.onChange) {
+          item.onChange = (files) => {
+            return true;
+          };
+        }
+        if (!item.uploadAfter) {
+          item.uploadAfter = (result, files) => {
+            return true;
+          };
+        }
+        if (!item.uploadBefore) {
+          item.uploadBefore = (files) => {
+            return true;
+          };
+        }
+      }
+    };
+    const validate = (callback) => {
+      let result = true;
+      volform.value.validate((valid) => {
+        if (!valid) {
+          appContext.config.globalProperties.$message.error('鏁版嵁楠岃瘉鏈�氳繃!');
+          result = false;
+        } else if (typeof callback === 'function') {
+          try {
+            callback(valid);
+          } catch (error) {
+            let msg = `琛ㄥ崟楠岃瘉鍥炶皟鏂规硶寮傚父锛�${error.message}`;
+            appContext.config.globalProperties.$message.error(msg);
+            console.log(msg);
+          }
+        }
+      });
+      return result;
+    };
+
+    initFormRules(true);
+    return {
+      remoteCall,
+      span,
+      rangeFields,
+      numberFields,
+      validate,
+      volform
+      //  initFormRules,
+      // initSource
+    };
+  },
+  created() {
+    this.formRules.forEach((rules) => {
+      rules.forEach((option) => {
+        if (option.type == 'treeSelect' && option.multiple === undefined) {
+          option.multiple = true;
+        }
+      });
+    });
+  },
+
+  data() {
+    return {
+      // remoteCall: true,
+      errorImg: 'this.src="' + new URL("@/assets/imgs/error-img.png", import.meta.url).href + '"'
+      // span: 1,
+      // rangeFields: [],
+    };
+  },
+  methods: {
+    getColWidth(item) {
+      //2021.08.30 澧炲姞鍔ㄦ�佽绠楄〃鍗曞搴�
+      let _span = 0;
+      this.formRules.forEach((row, xIndex) => {
+        //2022.05.06 杩藉姞琛ㄥ崟涓殣钘忕殑鍏冪礌涓嶅弬涓庡姩鎬佽绠楄〃鍗曞搴�
+        let rowLength = row.filter((item) => {
+          return !item.hidden;
+        }).length;
+        if (rowLength > _span) _span = rowLength;
+      });
+      let rete =
+        Math.round(((item.colSize || 12 / _span) / 0.12) * colPow, 10.0) /
+        colPow;
+      if (item.colSize) return rete.toFixed(3);
+      return rete.toFixed(3);
+      // return (100 - rete).toFixed(3);
+    },
+    previewImg(url) {
+      this.base.previewImg(url, this.http.ipAddress);
+    },
+    getSrc(path) {
+      if (!path) return;
+      if (!this.base.isUrl(path) && path.indexOf('.') != -1) {
+        return this.http.ipAddress + path;
+      }
+      return path;
+    },
+    // 鏄惁涓哄浘鐗囨枃浠剁瓑鏍煎紡骞跺瀛楁鐨勮浆鎹㈡垚鏁扮粍锛歔{name:'1.jpg',path:'127.0.0.1/ff/1.jpg'}]
+    isFile(item, formFields) {
+      if (
+        item.type == 'img' ||
+        item.columnType == 'img' ||
+        item.type == 'excel' ||
+        item.type == 'file'
+      ) {
+        this.convertFileToArray(item, formFields);
+        return true;
+      }
+      return false;
+    },
+    isReadonlyImgFile(item, formFields) {
+      if ((item.disabled || item.readonly) && this.isFile(item, formFields)) {
+        return true;
+      }
+      return false;
+    },
+    convertFileToArray(item, formFields) {
+      if (!item.maxFile) {
+        item.maxFile = 1; // 榛樿鍙兘涓婁紶涓�涓枃浠讹紝鍙互鍦╫nInit涓缃�
+      }
+
+      let fileInfo = formFields[item.field];
+      if (fileInfo instanceof Array) {
+        return;
+      }
+      if (fileInfo === null || fileInfo === undefined) {
+        formFields[item.field] = [];
+        return;
+      }
+      // 灏嗕互閫楀彿闅斿紑鐨勬枃浠跺垎鍓叉垚鏁扮粍127.0.0.1/aa/1.jpg,灏�127.0.0.1/aa/2.jpg
+      if (typeof fileInfo === 'string') {
+        if (fileInfo.trim() === '') {
+          formFields[item.field] = [];
+          return;
+        }
+        // 濡傛灉鏂囦欢璺緞鏄瓧绗︿覆锛屽垯浣跨敤锛屾媶鍒�
+        fileInfo = fileInfo.replace(/\\/g, '/');
+        let files = fileInfo.split(',');
+        formFields[item.field] = [];
+        for (let index = 0; index < files.length; index++) {
+          let file = files[index];
+          let splitFile = file.split('/');
+          formFields[item.field].push({
+            name: splitFile.length > 0 ? splitFile[splitFile.length - 1] : file,
+            path: file // this.base.isUrl(file) ? file : this.http.ipAddress + file,
+          });
+        }
+      }
+    },
+    dowloadFile(file) {
+      this.base.dowloadFile(
+        file.path,
+        file.name,
+        {
+          Authorization: this.$store.getters.getToken()
+        },
+        this.http.ipAddress
+      );
+    },
+    validatorPhone(ruleOption, value, callback) {
+      if (!ruleOption.required && !value && value != '0') {
+        return callback();
+      }
+      if (!rule.phone.test((value || '').trim())) {
+        return callback(new Error('璇疯緭鍏ユ纭殑鎵嬫満鍙�'));
+      }
+      callback();
+    },
+    validatorPwd(ruleOption, value, callback) {
+      if (!ruleOption.required && !value && value != '0') {
+        return callback();
+      }
+      if ((value + '').trim().length < 6) {
+        return callback(new Error('瀵嗙爜闀垮害涓嶈兘灏忎簬6浣�'));
+      }
+      callback();
+    },
+    convertArrayValue(data, val) {
+      // 2020.12.13澧炲姞琛ㄥ崟澶氶�夊彧杞崲瀛楀吀
+      // 缂栬緫澶氶�塼able鏄剧ず
+      //2023.04.20淇鍙涓簂abel鏃跺師鏁版嵁琚瓧鍏告浛鎹簡鐨勯棶棰�
+      let valArr = Array.isArray(val)
+        ? val.map((x) => {
+          return x;
+        })
+        : val.split(',');
+      for (let index = 0; index < valArr.length; index++) {
+        var _item = data.find((x) => {
+          return x.key && x.key != '0' && x.key + '' == valArr[index] + '';
+        });
+        if (_item) {
+          valArr[index] = _item.value;
+        }
+      }
+      return valArr.join(',');
+    },
+    getText(formFields, item) {
+      // 2019.10.24淇琛ㄥ崟select缁勪欢涓哄彧璇荤殑灞炴�ф椂娌℃湁缁戝畾鏁版嵁婧�
+      let text = formFields[item.field];
+      if (typeof text === 'function') return text(formFields);
+      if (text === 'null' || text === '' || text === null || text === undefined)
+        return '--';
+      //2021.03.02澧炲姞鍙鏃舵棩鏈熷鐞�
+      if (item.type == 'date') {
+        return text.replace('T', ' ').split(' ')[0];
+      }
+      //2021.03.31淇琛ㄥ崟switch鍙鏃舵病鏈夎浆鎹㈠�肩殑闂
+      if (item.type == 'switch') {
+        return text ? '鏄�' : '鍚�';
+      }
+      if (!item.data) return text;
+      if (item.type == 'selectList' || item.type == 'checkbox') {
+        return this.convertArrayValue(item.data, text);
+      }
+      var _item = item.data.find((x) => {
+        return x.key == text;
+      });
+      return _item ? _item.value : text;
+    },
+    onClear(item, formFields) {
+      // 杩滅▼select鏍囩娓呯┖閫夐」
+      item.data.splice(0);
+      // console.log(2);
+    },
+    onChange(item, value) {
+      if (item.onChange && typeof item.onChange === 'function') {
+        item.onChange(value, item);
+      }
+    },
+    onRemoteChange(item, value) {
+      // 绗簩娆℃墦寮�鏃讹紝榛樿鍊兼垚浜唘ndefined锛屽緟鏌iewgrid涓噸缃唬鐮�
+      if (value == undefined && item.data.length > 0) {
+        this.formFields[item.field] = item.data[0].key;
+        //  console.log('undefined');
+      }
+      this.remoteCall = false;
+      if (item.onChange && typeof item.onChange === 'function') {
+        item.onChange(value, item);
+      }
+    },
+    getData(item) {
+      return item.data;
+    },
+
+    // 杩滅▼鎼滅储(鎵撳紑寮瑰嚭妗嗘椂搴旇绂佹鎼滅储)
+    remoteSearch(item, formFields, val) {
+      if (!item.remote && !item.url) {
+        return;
+      }
+      if (
+        val == '' ||
+        (item.data.length == 1 &&
+          (val == item.data[0].key || val == item.data[0].value))
+      ) {
+        return;
+      }
+      // 寮瑰嚭妗嗘垨鍒濆鍖栬〃鍗曟椂缁檇ata璁剧疆鏁扮粍榛樿鍊�2
+      // 2020.09.26淇杩滅▼鎼滅储鑷畾涔塽rl涓嶈捣浣滅敤鐨勯棶棰�
+      let url;
+      if (typeof item.url === 'function') {
+        url = item.url(val, item.dataKey, item);
+      } else {
+        url =
+          (item.url || '/api/Sys_Dictionary/GetSearchDictionary') +
+          '?dicNo=' +
+          item.dataKey +
+          '&value=' +
+          val;
+      }
+      this.http.post(url).then((dicData) => {
+        //this.$set(item, "loading", false);
+        item.loading = false;
+        item.data = dicData;
+        this.formRules[item.point.x].splice(item.point.y, 1, item);
+      });
+    },
+    getObject(date) {
+      if (typeof date === 'object') {
+        return date;
+      }
+      return new Date(date);
+    },
+    reset(sourceObj) {
+      // 閲嶇疆琛ㄥ崟鏃讹紝绂佺敤杩滅▼鏌ヨ
+      this.$refs['volform'].resetFields();
+      if (this.rangeFields.length) {
+        this.rangeFields.forEach((key) => {
+          this.formFields[key].splice(0);
+          this.formFields[key] = [null, null];
+        });
+      }
+      if (!sourceObj) return;
+      for (const key in this.formFields) {
+        if (sourceObj.hasOwnProperty(key)) {
+          this.formFields[key] = sourceObj[key];
+          if (this.numberFields.indexOf(key) != -1) {
+            this.formFields[key] = sourceObj[key] * 1 || 0;
+          }
+        }
+      }
+      //  this.remoteCall = true;
+    },
+
+    fileOnChange(files, item) {
+      this.$refs.volform.clearValidate(item.field);
+      if (item.onChange) {
+        return item.onChange(files);
+      }
+      return true;
+    },
+    isReadonly(item) {
+      return item.readonly || item.disabled;
+    },
+    getRule(item, formFields) {
+      //2021.07.17澧炲姞鍙琛ㄥ崟涓嶉獙璇�
+      //range涓巗wtich鏆傛椂涓嶅仛鏍¢獙
+      if (
+        // item.readonly ||
+        // item.disabled ||
+        item.type == 'switch' ||
+        item.type == 'range'
+      )
+        return { required: false };
+      // 鐢ㄦ埛璁剧疆鐨勮嚜瀹氫箟鏂规硶
+      if (item.validator && typeof item.validator === 'function') {
+        return {
+          validator: (rule, val, callback) => {
+            // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+            let message = item.validator(rule, val);
+            if (message) return callback(new Error(message + ''));
+            return callback();
+          },
+          required: item.required,
+          trigger: rule.change.indexOf(item.type) != -1 ? 'change' : 'blur'
+        };
+      }
+      if (['img', 'excel', 'file'].indexOf(item.type) != -1) {
+        return {
+          validator: (rule, val, callback) => {
+            //2021.09.05绉婚櫎鏂囦欢涓婁紶榛樿蹇呭~
+            if (
+              item.required &&
+              !this.isReadonly(item) &&
+              (!val || !val.length)
+            ) {
+              return callback(
+                new Error(item.type == 'img' ? '璇蜂笂浼犵収鐗�' : '璇蜂笂浼犳枃浠�')
+              );
+            }
+            return callback();
+          },
+          required: item.required,
+          trigger: 'change'
+        };
+      }
+      // 璁剧疆鏁板瓧鐨勬渶澶у�兼皯鏈�灏忓��
+      if (
+        item.type == 'number' ||
+        item.columnType == 'number' ||
+        item.columnType == 'int' ||
+        item.type == 'decimal'
+      ) {
+        // 濡傛灉鏄繀濉」鐨勬暟瀛楋紝璁剧疆涓�涓粯璁ゆ渶澶т笌鏈�鍊煎皬
+        if (item.required && typeof item.min !== 'number') {
+          item.min = 0; //item.type == "decimal" ? 0.1 : 1;
+        }
+
+        return {
+          required: item.required,
+          message: item.title + '鍙兘鏄暟瀛�',
+          title: item.title,
+          trigger: 'blur',
+          min: item.min,
+          max: item.max,
+          type: item.columnType || item.type,
+          validator: (ruleObj, value, callback) => {
+            if (!ruleObj.min && !ruleObj.max) {
+              if (ruleObj.required) {
+                if ((!value && value != '0') || !rule.decimal.test(value)) {
+                  return callback(new Error('鍙兘鏄暟瀛�'));
+                }
+              }
+              return callback();
+            }
+            if (this.isReadonly(item)) return callback();
+            if (ruleObj.type == 'number') {
+              if (!rule.number.test(value)) {
+                ruleObj.message = ruleObj.title + '鍙兘鏄暣鏁�';
+                return callback(new Error(ruleObj.message));
+              }
+            } else {
+              if (!rule.decimal.test(value)) {
+                ruleObj.message = ruleObj.title + '鍙兘鏄暟瀛�';
+                return callback(new Error(ruleObj.message));
+              }
+            }
+            if (
+              ruleObj.min !== undefined &&
+              typeof ruleObj.min === 'number' &&
+              value < ruleObj.min
+            ) {
+              ruleObj.message = ruleObj.title + '涓嶈兘灏忎簬' + ruleObj.min;
+              return callback(new Error(ruleObj.message));
+            }
+            if (
+              ruleObj.max !== undefined &&
+              typeof ruleObj.max === 'number' &&
+              value > ruleObj.max
+            ) {
+              ruleObj.message = ruleObj.title + '涓嶈兘澶т簬' + ruleObj.max;
+              return callback(new Error(ruleObj.message));
+            }
+            return callback();
+          }
+        };
+      }
+
+      // 鎵嬫満銆佸瘑鐮侀獙璇�
+      if (item.type == 'password' || item.type == 'phone') {
+        return {
+          validator:
+            item.type == 'phone' ? this.validatorPhone : this.validatorPwd,
+          required: item.required,
+          trigger: 'blur'
+        };
+      }
+
+      if (!item.required && item.type != 'mail') return { required: false };
+
+      if (!item.hasOwnProperty('type')) item.type = 'text';
+
+      if (inputTypeArr.indexOf(item.type) != -1) {
+        let message =
+          item.title +
+          (item.type == 'mail' ? '蹇呴』鏄竴涓偖绠卞湴鍧�' : '涓嶈兘涓虹┖');
+        let type = item.type == 'mail' ? 'email' : types[item.columnType];
+        let _rule = {
+          required: true,
+          message: message,
+          trigger: 'blur',
+          type: type,
+          validator: (ruleObj, value, callback) => {
+            if (
+              !this.isReadonly(item) &&
+              (value === '' || value === undefined || value === null)
+            ) {
+              return callback(new Error(ruleObj.message));
+            }
+            return callback();
+          }
+        };
+        if (item.type == 'mail') {
+          _rule.validator = undefined;
+          return _rule;
+        }
+        if (item.min) {
+          _rule.min = item.min;
+          _rule.message = item.title + '鑷冲皯' + item.min + '涓瓧绗�!';
+        }
+        if (item.max) {
+          return [
+            _rule,
+            {
+              max: item.max,
+              required: true,
+              message: item.title + '鏈�澶�' + item.max + '涓瓧绗�!',
+              trigger: 'blur'
+            }
+          ];
+        }
+        return _rule;
+      }
+
+      if (item.type == 'radio') {
+        return {
+          required: item.required,
+          message: '璇烽�夋嫨' + item.title,
+          trigger: 'change',
+          type: 'string'
+        };
+      }
+      if (
+        item.type == 'date' ||
+        item.type == 'datetime' ||
+        item.type == 'month' ||
+        item.type == 'time'
+      ) {
+        return {
+          required: true,
+          message: '璇烽�夋嫨' + item.title,
+          trigger: 'change',
+          type: item.range ? 'array' : 'string',
+          validator: (rule, val, callback) => {
+            if (this.isReadonly(item)) return callback();
+            // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+            if (!val || (item.range && !val.length)) {
+              return callback(new Error('璇烽�夋嫨鏃ユ湡'));
+            }
+            return callback();
+          }
+        };
+      }
+
+      if (item.type == 'cascader') {
+        return {
+          type: 'array',
+          required: true,
+          min: item.min || 1,
+          // message: "璇烽�夋嫨" + item.title,
+          trigger: 'change',
+          validator: (rule, val, callback) => {
+            if (this.isReadonly(item)) return callback();
+            // 鐢ㄦ埛鑷畾涔夌殑鏂规硶锛屽鏋滆繑鍥炰簡鍊硷紝鐩存帴鏄剧ず杩斿洖鐨勫�硷紝楠岃瘉涓嶉�氳繃
+            let _arr = this.formFields[item.field];
+            if (!_arr || !_arr.length) {
+              return callback(new Error('璇烽�夋嫨' + item.title));
+            }
+            return callback();
+          }
+        };
+      }
+
+      if (
+        ['select', 'selectList', 'checkbox', 'cascader', 'treeSelect'].indexOf(
+          item.type
+        ) != -1
+      ) {
+        let _rule = {
+          type: item.type == 'select' ? 'string' : 'array',
+          required: true,
+          min: item.min || 1,
+          message: '璇烽�夋嫨' + item.title,
+          trigger: 'change',
+          validator: (rule, value, callback) => {
+            if (this.isReadonly(item)) return callback();
+            //2021.11.27淇澶氶�夋病鏈夋彁绀虹殑闂
+            if (value == undefined || value === '') {
+              return callback(new Error(rule.message));
+            } else if (
+              (item.type == 'checkbox' ||
+                item.type == 'selectList' ||
+                item.type == 'treeSelect') &&
+              (!(value instanceof Array) || !value.length)
+            ) {
+              return callback(new Error(rule.message));
+            }
+            return callback();
+          }
+        };
+
+        if (_rule.max) {
+          _rule.nax = item.max;
+          _rule.message = '鏈�澶氬彧鑳介�夋嫨' + item.max + '椤�';
+        }
+        return _rule;
+      }
+      return {};
+    },
+    compareDate(date1, date2) {
+      if (!date2) {
+        return true;
+      }
+      return (
+        date1.valueOf() <
+        (typeof date2 == 'number' ? date2 : new Date(date2).valueOf())
+      );
+    },
+    getDateOptions(date, item) {
+      //2021.07.17璁剧疆鏃堕棿鍙�夎寖鍥�
+      if ((!item.min && !item.max) || !date) {
+        return false;
+      }
+      if (item.min && item.min.indexOf(' ') == -1) {
+        //涓嶈缃椂鍒嗙锛屽悗闈細鑷姩鍔犱笂 08:00
+        item.min = item.min + ' 00:00:000';
+      }
+      return (
+        this.compareDate(date, item.min) || !this.compareDate(date, item.max)
+      );
+    },
+    getDateFormat(item) {
+      if (item.type == 'month') {
+        return 'YYYY-MM';
+      }
+      // if (item.type=='time') {
+      //     return 'HH:mm:ss'
+      // }
+      //瑙乭ttps://day.js.org/docs/zh-CN/display/format
+      return item.type == 'date' ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm:ss';
+    },
+    dateRangeChange(val, item) {
+      if (!val) {
+        this.$emit('update:formFields');
+        return;
+      }
+      item.onChange && item.onChange(val);
+    },
+    onKeyPress($event, item) {
+      if ($event.keyCode == 13) {
+        return;
+      }
+      item.onKeyPress($event);
+    },
+    filterMethod(value, data) {
+      return data.label.includes(value);
+    },
+    getNode(label, node, data) {
+      console.log(label)
+    }
+  }
+});
+</script>
+<style lang="less" scoped>
+.el-form-item {
+  margin-right: 0;
+}
+
+.el-form-item {
+  .form-imgs {
+    img {
+      float: left;
+      cursor: pointer;
+      object-fit: cover;
+      margin: 0 10px 10px 0;
+      width: 65px;
+      height: 65px;
+      border: 1px solid #c7c7c7;
+      overflow: hidden;
+      border-radius: 5px;
+      box-sizing: content-box;
+    }
+  }
+}
+
+.el-form-item ::v-deep(.el-form-item__label) {
+  padding: 0 0px 0 4px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+.el-form-item ::v-deep(.el-range-separator) {
+  text-align: center;
+  width: 13px;
+  padding: 0px 1px;
+  font-size: 12px;
+}
+
+.el-form-item ::v-deep(.el-range__close-icon) {
+  margin-right: -10px;
+}
+
+.form-item-extra {
+  >*:first-child {
+    flex: 1;
+  }
+
+  display: flex;
+
+  .form-extra {
+    padding-left: 7px;
+    line-height: 36px;
+  }
+}
+
+.vol-form-item {
+  width: 100%;
+}
+
+.vol-form-item ::v-deep(.el-form-item__content) {
+  display: unset !important;
+}
+
+.vol-form-item ::v-deep(.el-input--large .el-input__inner) {
+  height: 34px !important;
+}
+
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__increase) {
+  border-top: 1px solid #d4d4d4;
+}
+
+.vol-form-item ::v-deep(.el-input-number--large .el-input-number__decrease) {
+  border-bottom: 1px solid #d4d4d4;
+}
+
+.vol-form-item ::v-deep(.el-input--large.el-date-editor) {
+  height: 36px;
+}
+
+.v-date-range ::v-deep(.el-input__prefix) {
+  display: none;
+}
+
+.v-date-range ::v-deep(.el-input__inner) {
+  padding: 0;
+}
+
+.el-form-item ::v-deep(.el-checkbox) {
+  margin-right: 8px;
+}
+
+.el-form-item ::v-deep(.el-checkbox .el-checkbox__label) {
+  padding-left: 5px;
+}
+
+.el-form-item ::v-deep(textarea) {
+  font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
+    'Microsoft YaHei', '寰蒋闆呴粦', Arial, sans-serif !important;
+}
+
+.el-form-item ::v-deep(.el-select .el-select__tags > span) {
+  display: flex;
+}
+
+.el-form-item ::v-deep(.el-select-v2__combobox-input) {
+  height: 30px;
+}
+
+.el-form-item ::v-deep(.el-select__tags) {
+  overflow: hidden;
+  height: 30px;
+}
+
+.el-form-item ::v-deep(.el-select-tags-wrapper) {
+  position: absolute;
+}
+
+.el-form-item {
+  vertical-align: top !important;
+}
+
+.form-file-list {
+  a {
+    color: #3ea9ff;
+  }
+
+  a:hover {
+    cursor: pointer;
+    color: #0281e7;
+  }
+}
+</style>
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm/VolFormRender.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolForm/VolFormRender.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolForm/VolFormRender.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/DownloadForm.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/DownloadForm.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/DownloadForm.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormDraggable.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/VolFormPreview.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/formTemplate.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/formTemplate.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/formTemplate.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/index.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/index.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/options.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/options.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/templateCode.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolFormDraggable/templateCode.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolFormDraggable/templateCode.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolHeader.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolHeader.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolHeader.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolTable.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolTable.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable/VolTableRender.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolTable/VolTableRender.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolTable/VolTableRender.js
diff --git a/Code Management/WIDESEA_WCSClient/src/components/basic/VolUpload.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/basic/VolUpload.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/basic/VolUpload.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/401.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/redirect/401.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/401.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/404.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/redirect/404.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/404.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/Message.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/redirect/Message.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/Message.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/redirect/RedirectError.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/RedirectError.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/components/redirect/coding.vue b/Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/components/redirect/coding.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/components/redirect/coding.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue
new file mode 100644
index 0000000..a861f7d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/extend/GetLocationStatus.vue
@@ -0,0 +1,292 @@
+<template>
+  <div>
+    <vol-box
+      v-model="showDetialBox"
+      :lazy="true"
+      width="1500px"
+      :padding="15"
+      title="璐т綅鐘舵�佸彉鍔ㄨ褰�"
+    >
+      <div class="box-table" style="margin-top: 1%">
+        <el-table
+          ref="singleTable"
+          :data="tableData"
+          style="width: 100%; height: 100%"
+          highlight-current-row
+          @row-click="handleRowClick"
+          height="500px"
+          @selection-change="handleSelectionChange"
+        >
+          >
+          <!-- <el-table-column type="selection" width="55"> </el-table-column> -->
+          <el-table-column
+            label="搴忓彿"
+            type="index"
+            fixed="left"
+            width="55"
+            align="center"
+          ></el-table-column>
+          <el-table-column
+            v-for="(item, index) in tableColumns.filter((x) => !x.hidden)"
+            :key="index"
+            :prop="item.field"
+            :label="item.title"
+            :width="item.width"
+            align="center"
+          >
+            <template #default="scoped">
+              <div v-if="item.type == 'icon'">
+                <el-tooltip
+                  class="item"
+                  effect="dark"
+                  :content="item.title"
+                  placement="bottom"
+                  ><el-button
+                    type="text"
+                    @click="tableButtonClick(scoped.row, item)"
+                    ><i
+                      :class="item.icon"
+                      style="font-size: 22px"
+                    ></i></el-button
+                ></el-tooltip>
+              </div>
+              <div v-else-if="item.type == 'tag'">
+                <el-tag size="small">
+                  {{ getDictionary(scoped.row, item) }}
+                </el-tag>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </vol-box>
+  </div>
+</template>
+
+<script>
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+  components: { VolBox },
+  data() {
+    return {
+      showDetialBox: false,
+      row: null,
+      tableData: [],
+      tableColumns: [
+        {
+          field: "locationId",
+          title: "璐т綅涓婚敭",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "locationCode",
+          title: "璐т綅缂栧彿",
+          type: "string",
+          align: "left",
+        },
+        {
+          field: "beforeStatus",
+          title: "鍙樺姩鍓嶈揣浣嶇姸鎬�",
+          type: "tag",
+          width: 150,
+          align: "left",
+          bindKey: "locationStatusEnum",
+        },
+        {
+          field: "afterStatus",
+          title: "鍙樺姩鍚庤揣浣嶇姸鎬�",
+          type: "tag",
+          width: 150,
+          align: "left",
+          bindKey: "locationStatusEnum",
+        },
+        {
+          field: "changeType",
+          title: "鍙樺姩绫诲瀷",
+          type: "tag",
+          width: 100,
+          align: "left",
+          bindKey: "locationChangeType",
+        },
+        {
+          field: "orderId",
+          title: "鍗曟嵁涓婚敭",
+          type: "string",
+          width: 90,
+          align: "left",
+          hidden: true,
+        },
+        {
+          field: "orderNo",
+          title: "鍗曟嵁缂栧彿",
+          type: "int",
+          width: 160,
+          align: "left",
+        },
+        {
+          field: "orderDetailId",
+          title: "鍗曟嵁鏄庣粏涓婚敭",
+          type: "string",
+          width: 200,
+          align: "left",
+          hidden: true,
+        },
+        {
+          field: "taskNum",
+          title: "浠诲姟鍙�",
+          type: "string",
+          width: 180,
+          align: "left",
+        },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+          align: "left",
+          sort: true,
+        },
+        {
+          field: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 100,
+          align: "left",
+          hidden: true,
+        },
+        {
+          field: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 160,
+          align: "left",
+          hidden: true,
+          sort: true,
+        },
+        {
+          field: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 100,
+          align: "left",
+          hidden: true,
+        },
+      ],
+      paginations: {
+        sort: "CreateDate",
+        order: "desc",
+        Foots: "",
+        total: 0,
+        // 2020.08.29澧炲姞鑷畾涔夊垎椤垫潯澶у皬
+        sizes: [30, 60, 100, 120],
+        size: 30, // 榛樿鍒嗛〉澶у皬
+        Wheres: [],
+        page: 1,
+        rows: 30,
+      },
+      dictionaryList: null,
+    };
+  },
+  methods: {
+    open(row) {
+      this.row = row;
+      this.showDetialBox = true;
+      this.getDetailData();
+      this.getDictionaryData();
+    },
+    getDetailData() {
+      this.http
+        .post(
+          "/api/LocationStatusChangeRecord/GetLocationState?id=" + this.row.id,
+          {},
+          true
+        )
+        .then((x) => {
+          if (!x.status) return this.$message.error(x.message);
+          this.tableData = x.data;
+        });
+    },
+    getDictionaryData() {
+      if (this.dictionaryList) {
+        return;
+      }
+      var param = [];
+      this.tableColumns.forEach((x) => {
+        if (x.type == "tag" && x.bindKey != "") {
+          param.push(x.bindKey);
+        }
+      });
+      this.http
+        .post("api/Sys_Dictionary/GetVueDictionary", param, "鏌ヨ涓�")
+        .then((x) => {
+          if (x.length > 0) {
+            this.dictionaryList = x;
+          }
+        });
+    },
+    getDictionary(row, column) {
+      if (this.dictionaryList) {
+        var item = this.dictionaryList.find((x) => x.dicNo == column.bindKey);
+        if (item) {
+          var dicItem = item.data.find((x) => x.key == row[column.field]);
+          console.log(dicItem);
+          if (dicItem) {
+            return dicItem.value;
+          } else {
+            return row[column.field];
+          }
+        } else {
+          return row[column.field];
+        }
+      }
+    },
+  },
+
+  created() {},
+};
+</script>
+
+<style scoped>
+.el-col {
+  border-radius: 4px;
+}
+
+.grid-content {
+  border-radius: 4px;
+  min-height: 36px;
+}
+
+.content-text {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.right-text {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+}
+</style>
+<style>
+.el-table .warning-row {
+  background: #e6a23c;
+}
+
+.el-table .success-row {
+  background: #f0f9eb;
+}
+
+.el-table .error-row {
+  background: #f56c6c;
+}
+</style>
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js
new file mode 100644
index 0000000..d805115
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/locationInfo.js
@@ -0,0 +1,103 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridBody from './extend/GetLocationStatus.vue'
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: gridBody,
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let EnableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (EnableBtn) {
+        EnableBtn.onClick = function () {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          var keys = rows.map(x => { return x.id });
+          this.http
+            .post("api/LocationInfo/LocationEnableStatus", keys, "鏁版嵁澶勭悊涓�")
+            .then((x) => {
+              if (!x.status) return this.$message.error(x.message);
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.refresh();
+            });
+        }
+      }
+      let DisableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (DisableBtn) {
+        DisableBtn.onClick = function () {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          var keys = rows.map(x => { return x.id });
+          this.http
+            .post("api/LocationInfo/LocationDisableStatus", keys, "鏁版嵁澶勭悊涓�")
+            .then((x) => {
+              if (!x.status) return this.$message.error(x.message);
+              this.$message.success("鎿嶄綔鎴愬姛");
+              this.refresh();
+            });
+        }
+      }
+
+      this.columns.push({
+        field: '鎿嶄綔',
+        title: '鎿嶄綔',
+        width: 90,
+        fixed: 'right',
+        align: 'center',
+        formatter: (row) => {
+          return (
+            '<i style="cursor: pointer;color: #2d8cf0;"class="el-icon-view">鏌ョ湅鏄庣粏</i>'
+          );
+        },
+        click: (row) => {
+          this.$refs.gridBody.open(row);
+        }
+      });
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/materielInfo.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/materielInfo.js
new file mode 100644
index 0000000..24e1d94
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/materielInfo.js
@@ -0,0 +1,58 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js
new file mode 100644
index 0000000..7840edd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/basic/warehouse.js
@@ -0,0 +1,77 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      let enableBtn = this.buttons.find(x => x.value == 'Enable');
+      if (enableBtn) {
+        enableBtn.onClick = function () {
+          //this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+          var printSection = document.querySelector('.vol-table');
+          var printWindow = window.open('', '');
+          printWindow.document.write(printSection.innerHTML);
+          printWindow.document.close();
+          printWindow.focus();
+          printWindow.print();
+          printWindow.close();
+
+        }
+      }
+      let disableBtn = this.buttons.find(x => x.value == 'Disable');
+      if (disableBtn) {
+        disableBtn.onClick = function () {
+          this.$message.success('鑷畾涔夋寜閽偣鍑讳簨浠�');
+        }
+      }
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/locationStatusChangeRecord.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/locationStatusChangeRecord.js
new file mode 100644
index 0000000..1b38800
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/locationStatusChangeRecord.js
@@ -0,0 +1,61 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+        this.boxOptions.labelWidth = 180;
+        this.labelWidth=150;
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+        
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/stockQuantityChangeRecord.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/stockQuantityChangeRecord.js
new file mode 100644
index 0000000..24e1d94
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/record/stockQuantityChangeRecord.js
@@ -0,0 +1,58 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js
new file mode 100644
index 0000000..6292426
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo.js
@@ -0,0 +1,59 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+        
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js
new file mode 100644
index 0000000..24e1d94
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail.js
@@ -0,0 +1,58 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail_Hty.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail_Hty.js
new file mode 100644
index 0000000..8935403
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfoDetail_Hty.js
@@ -0,0 +1,75 @@
+/*****************************************************************************************
+**  Author:jxx 2022
+**  QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+        //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+        //   this.buttons.unshift({  //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+        //     name: '鎸夐挳', //鎸夐挳鍚嶇О
+        //     icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+        //     type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+        //     onClick: function () {
+        //       this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+        //     }
+        //   });
+
+        //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+        // this.boxOptions.labelWidth = 150;
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo_Hty.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo_Hty.js
new file mode 100644
index 0000000..8935403
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockInfo_Hty.js
@@ -0,0 +1,75 @@
+/*****************************************************************************************
+**  Author:jxx 2022
+**  QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+        //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+        //   this.buttons.unshift({  //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+        //     name: '鎸夐挳', //鎸夐挳鍚嶇О
+        //     icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+        //     type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+        //     onClick: function () {
+        //       this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+        //     }
+        //   });
+
+        //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+        // this.boxOptions.labelWidth = 150;
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js
new file mode 100644
index 0000000..92ad623
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/stock/stockView.js
@@ -0,0 +1,134 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+import { el } from "element-plus/es/locales.mjs";
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+    //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {
+      // let InOrder = this.buttons.find(x => x.value == 'StockOutbound');
+      // if (InOrder) {
+      //   InOrder.onClick = function () {
+      //     let rows = this.$refs.table.getSelected();
+      //     if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+      //     if (rows.length > 1) return this.$error("璇烽�夋嫨鍗曟潯鏁版嵁!");
+      //     var keys = rows.map(x => { return x.stockId });
+      //     this.http
+      //       .post("api/Task/Outbound?id="+keys[0], null, "鏁版嵁澶勭悊涓�")
+      //       .then((x) => {
+      //         if (!x.status) return this.$message.error(x.message);
+      //         this.$message.success("鎿嶄綔鎴愬姛");
+      //         this.refresh();
+      //       });
+      //   }
+      // }
+      this.columns.forEach(column => {
+        if (column.field == 'materielCode') {
+          column.formatter = (row) => {
+            var str = '';
+            var list = row.materielCode.split(',');
+            for (let index = 0; index < list.length; index++) {
+              str += list[index] + '<br>';
+            }
+            return str = list[0] == "" ? "绌虹" : str;
+          }
+        }
+        if (column.field == 'batchNo') {
+          column.formatter = (row) => {
+            var str = '';
+            var list = row.batchNo.split(',');
+            for (let index = 0; index < list.length; index++) {
+              str += list[index] + '<br>';
+            }
+            return str = list[0] == "" ? "鏃�" : str;
+          }
+        }
+        if (column.field == 'materielInfo') {
+          const today = new Date()
+          column.formatter = (row) => {
+            if (row.details.length > 0) {
+              const today = new Date();
+              const closestDate = row.details
+                .map(x => {
+                  const date = new Date(x.effectiveDate);
+                  const diffInDays = Math.ceil(Math.abs((today - date) / (1000 * 60 * 60 * 24)));
+                  return { date, diffInDays };
+                })
+                .reduce((closest, current) => (current.diffInDays < closest.diffInDays ? current : closest))
+                .date;
+
+              const daysSinceClosest = Math.ceil(Math.abs((today - closestDate) / (1000 * 60 * 60 * 24)));
+              return '<span style="color: #F56C6C">' + daysSinceClosest + "澶�" + '</span>';
+            } else {
+              return '<span style="color: #F56C6C">' + "鏃犱繚璐ㄦ湡" + '</span>';
+            }
+
+          }
+        }
+        if (column.field == 'sumStock') {
+          column.formatter = (row) => {
+            if (row.details.length > 0) {
+              var sum = 0;
+              const closestDate = row.details
+                .map(x => {
+                  sum += (x.stockQuantity)
+                })
+              return '<span style="color: #F56C6C">' + sum + row.details[0].unit + '</span>';
+            } else {
+              return '<span style="color: #F56C6C">' + "1涓�" + '</span>';
+            }
+
+          }
+        }
+      })
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_Dictionary.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Dictionary.js
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/extension/system/Sys_DictionaryList.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_DictionaryList.js
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.js
new file mode 100644
index 0000000..5b05c40
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Log.js
@@ -0,0 +1,26 @@
+import { h, resolveComponent } from 'vue';
+let extension = {
+  components: {
+    //鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+    //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    gridHeader: "", //{ template: "<div>鎵╁睍缁剎x浠�</div>" },
+    gridBody: '',
+    gridFooter: "",
+    //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    modelHeader: "",
+    modelBody: "",
+    modelFooter: ""
+  },
+  buttons: [], //鎵╁睍鐨勬寜閽�
+  methods: {
+    //浜嬩欢鎵╁睍
+    onInit() {
+      console.log("sys_log")
+      this.setFiexdSearchForm(true);
+    },
+    onInited() {
+      this.height = this.height - 170;
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.js
new file mode 100644
index 0000000..d9ff794
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role.js
@@ -0,0 +1,49 @@
+
+let extension = {
+  components: {//鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+    //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  buttons: [],//鎵╁睍鐨勬寜閽�
+  tableAction:"Sys_Role",
+  methods: {//浜嬩欢鎵╁睍
+    onInited () {
+      this.height = this.height - 80;
+       this.editFormOptions.forEach(x => {
+        x.forEach(item => {
+          if (item.field == 'ParentId') {
+            item.title = "涓婄骇瑙掕壊";
+            //璁剧疆浠绘剰鑺傜偣閮借兘閫変腑(榛樿鍙兘閫変腑鏈�鍚庝竴涓妭鐐�)
+            item.changeOnSelect = true;
+          }
+        })
+      })
+    },
+    onInit() {
+      //璁剧疆treetable鐨勫敮涓�鍊煎瓧娈�(杩欎釜瀛楁鐨勫�煎湪琛ㄩ噷闈㈠繀椤绘槸鍞竴鐨�)
+      this.rowKey="Role_Id";
+    },
+    /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+    loadTreeChildren(tree, treeNode, resolve) { //鍔犺浇瀛愯妭鐐�
+      let url=`api/Sys_Role/getTreeTableChildrenData?roleId=${tree.Role_Id}`;
+      this.http.post(url,{}).then(result=>{
+        resolve(result.rows)
+      })
+    },
+      /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+    searchBefore(params){//鍒ゆ柇鍔犺浇鏍硅妭鐐规垨瀛愯妭鐐�
+      //娌℃湁鏌ヨ鏉′欢锛岄粯璁ゆ煡璇㈣繑鍥炴墍鏈夋牴鑺傜偣鏁版嵁
+      if (!params.wheres.length) {
+        params.value=1;
+      }
+      return true;
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role1.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role1.js
new file mode 100644
index 0000000..2502a52
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_Role1.js
@@ -0,0 +1,61 @@
+
+import { h, resolveComponent } from 'vue';
+let extension = {
+  components: {//鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+    //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    gridHeader: '',
+    gridBody: {
+      render () {
+          return [
+              h(resolveComponent('el-alert'), {
+                  style: { 'margin-bottom': '12px' },
+                  'show-icon': true, type: 'error',
+                  closable: false, title: '鍏充簬TreeTable浣跨敤'
+              }, ' treetable鍚屾牱鍏ㄩ儴浠g爜鑷姩鐢熸垚锛岄〉闈㈢敓鎴愬悗璁剧疆this.rowKe="xxx" tree涓婚敭瀛楁,鍗冲彲瀹屾垚鏍戝舰table閰嶇疆,鍏蜂綋璇存槑瑙丼ys_Role1.js'),
+          ]
+      }
+  },
+
+    gridFooter: '',
+    //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  buttons: [],//鎵╁睍鐨勬寜閽�
+  tableAction:"Sys_Role",
+  methods: {//浜嬩欢鎵╁睍
+    onInited () {
+      this.height = this.height - 80;
+       this.editFormOptions.forEach(x => {
+        x.forEach(item => {
+          if (item.field == 'ParentId') {
+            item.title = "涓婄骇瑙掕壊";
+            //璁剧疆浠绘剰鑺傜偣閮借兘閫変腑(榛樿鍙兘閫変腑鏈�鍚庝竴涓妭鐐�)
+            item.changeOnSelect = true;
+          }
+        })
+      })
+    },
+    onInit() {
+      //璁剧疆treetable鐨勫敮涓�鍊煎瓧娈�(杩欎釜瀛楁鐨勫�煎湪琛ㄩ噷闈㈠繀椤绘槸鍞竴鐨�)
+      this.rowKey="Role_Id";
+    },
+    /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+    loadTreeChildren(tree, treeNode, resolve) { //鍔犺浇瀛愯妭鐐�
+      let url=`api/Sys_Role/getTreeTableChildrenData?roleId=${tree.Role_Id}`;
+      this.http.post(url,{}).then(result=>{
+        resolve(result.rows)
+      })
+    },
+      /***鍔犺浇鍚庡彴鏁版嵁瑙丼ys_RoleController.cs鏂囦欢***/
+    searchBefore(params){//鍒ゆ柇鍔犺浇鏍硅妭鐐规垨瀛愯妭鐐�
+      //娌℃湁鏌ヨ鏉′欢锛岄粯璁ゆ煡璇㈣繑鍥炴墍鏈夋牴鑺傜偣鏁版嵁
+      if (!params.wheres.length) {
+        params.value=1;
+      }
+      return true;
+    }
+  }
+};
+export default extension;
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js
new file mode 100644
index 0000000..b44ab20
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User.js
@@ -0,0 +1,87 @@
+import {  defineAsyncComponent } from "vue";
+let extension = {
+    components: { //鍔ㄦ�佹墿鍏呯粍浠舵垨缁勪欢璺緞
+        //琛ㄥ崟header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+        gridHeader: defineAsyncComponent(() =>
+            import("./Sys_User/Sys_UserGridHeader.vue")),
+        gridBody: '',
+        gridFooter: '',
+        //寮瑰嚭妗�(淇敼銆佺紪杈戙�佹煡鐪�)header銆乧ontent銆乫ooter瀵瑰簲浣嶇疆鎵╁厖鐨勭粍浠�
+        modelHeader: '',
+        modelBody: '',
+        modelFooter: ''
+    },
+    text: "鍙兘鐪嬪埌褰撳墠瑙掕壊涓嬬殑鎵�鏈夊笎鍙�",
+    buttons: [], //鎵╁睍鐨勬寜閽�
+    methods: { //浜嬩欢鎵╁睍
+        onInit() {
+            this.boxOptions.height = 530;
+            this.columns.push({
+                title: '鎿嶄綔',
+                hidden: false,
+                align: "center",
+                fixed: 'right',
+                width: 120,
+                render: (h, { row, column, index }) => {
+                    return h(
+                        "div", { style: { 'font-size': '13px', 'cursor': 'pointer', 'color': '#409eff' } }, [
+                        h(
+                            "a", {
+                            style: { 'margin-right': '15px' },
+                            onClick: (e) => {
+                                e.stopPropagation()
+                                console.log(row);
+                                this.$refs.gridHeader.open(row);
+                            }
+                        }, "淇敼瀵嗙爜"
+                        ),
+                        h(
+                            "a", {
+                            style: {},
+                            onClick: (e) => {
+                                e.stopPropagation()
+                                this.edit(row);
+                            }
+                        },
+                            "缂栬緫"
+                        ),
+                    ])
+                }
+            })
+        },
+        onInited() { },
+        addAfter(result) { //鐢ㄦ埛鏂板缓鍚庯紝鏄剧ず闅忔満鐢熸垚鐨勫瘑鐮�
+            if (!result.status) {
+                return true;
+            }
+            //鏄剧ず鏂板缓鐢ㄦ埛鐨勫瘑鐮�
+            //2020.08.28浼樺寲鏂板缓鎴愬悗鎻愮ず鏂瑰紡
+            this.$confirm(result.message, '鏂板缓鐢ㄦ埛鎴愬姛', {
+                confirmButtonText: '纭畾',
+                type: 'success',
+                center: true
+            }).then(() => { })
+
+            this.boxModel = false;
+            this.refresh();
+            return false;
+        },
+        modelOpenAfter() {
+            //鐐瑰嚮寮瑰嚭妗嗗悗锛屽鏋滄槸缂栬緫鐘舵�侊紝绂佹缂栬緫鐢ㄦ埛鍚嶏紝濡傛灉鏂板缓鐘舵�侊紝灏嗙敤鎴峰悕瀛楁璁剧疆涓哄彲缂栬緫
+            let isEDIT = this.currentAction == this.const.EDIT;
+            this.editFormOptions.forEach(item => {
+                item.forEach(x => {
+                    if (x.field == "UserName") {
+                        x.disabled=isEDIT;
+                    }
+                })
+                //涓嶆槸鏂板缓锛屾�у埆榛樿鍊艰缃负鐢�
+                if (!isEDIT) {
+                    this.editFormFields.Gender = "0";
+                }
+            })
+        }
+
+    }
+};
+export default extension;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue
new file mode 100644
index 0000000..c0306d2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/Sys_User/Sys_UserGridHeader.vue
@@ -0,0 +1,68 @@
+<template>
+  <div>
+    <vol-box v-model="model" :padding="30" title="淇敼瀵嗙爜" :width="500" :height="250">
+      <el-alert type="success">
+        <h3>
+          <span>甯愬彿锛歿{ row.userName }}</span>
+          <span>鐢ㄦ埛锛歿{ row.userTrueName }}</span>
+        </h3>
+      </el-alert>
+      <div>
+        <el-input placeholder="璇疯緭鍏ュ瘑鐮�" v-model="password" size="large" style="width: 100%; margin-top: 15px" />
+      </div>
+      <template #footer>
+        <el-button type="primary" @click="savePwd()">淇敼瀵嗙爜</el-button>
+        <el-button @click="model = false">鍏抽棴</el-button>
+      </template>
+    </vol-box>
+  </div>
+</template>
+<script>
+import { defineComponent, defineAsyncComponent } from "vue";
+export default defineComponent({
+  components: {
+    VolBox: defineAsyncComponent(() => import("@/components/basic/VolBox.vue"))
+  },
+  data() {
+    return {
+      row: {},
+      password: "",
+      model: false,
+    };
+  },
+  methods: {
+    open(row) {
+      this.password = "";
+      this.row = row;
+      this.model = true;
+    },
+    savePwd() {
+      if (!this.password) return this.$Message.error("璇疯緭瀵嗙爜");
+      if (this.password.length < 6)
+        return this.$Message.error("瀵嗙爜闀垮害鑷冲皯6浣�");
+      let url =
+        "/api/Sys_User/ModifyUserPwd?password=" +
+        this.password +
+        "&userName=" +
+        this.row.userName;
+      this.http.post(url, null, true).then((x) => {
+        if (!x.status) {
+          return this.$message.error(x.message);
+        }
+        this.model = false;
+        this.$Message.success(x.message);
+      });
+    },
+  },
+  created() { },
+})
+</script>
+<style lang="less" scoped>
+h3 {
+  font-weight: 500;
+
+  >span:last-child {
+    margin-left: 30px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/extension/system/system/Sys_Department.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/extension/system/system/Sys_Department.js
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js
new file mode 100644
index 0000000..8f1507a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task.js
@@ -0,0 +1,94 @@
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+        let TaskHandCancelBtn = this.buttons.find(x => x.value == 'TaskHandCancel');
+      if (TaskHandCancelBtn) {
+        TaskHandCancelBtn.onClick = function () {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+          var param = rows[0].taskNum;
+          this.http
+            .post("api/Task/TaskCancel?taskNum="+param, "鏁版嵁澶勭悊涓�...")
+            .then((x) => {
+              if (x.status) {
+                this.$Message.success('浠诲姟鍙栨秷鎴愬姛.');
+                this.refresh();
+              } else {
+                return this.$error(x.message);
+              }
+            });
+        }
+      }
+      let TaskHandCompletedBtn = this.buttons.find(x => x.value == 'TaskHandCompleted');
+      if (TaskHandCompletedBtn) {
+        TaskHandCompletedBtn.onClick = function () {
+          let rows = this.$refs.table.getSelected();
+          if (rows.length == 0) return this.$error("璇烽�夋嫨鏁版嵁!");
+          if (rows.length > 1) return this.$error("璇烽�夋嫨涓�鏉℃暟鎹�!");
+          var param = rows[0].taskNum;
+          this.http
+            .post("api/Task/TaskCompleted?taskNum="+param, "鏁版嵁澶勭悊涓�...")
+            .then((x) => {
+              if (x.status) {
+                this.$Message.success('浠诲姟鎵嬪姩瀹屾垚');
+                this.refresh();
+              } else {
+                return this.$error(x.message);
+              }
+            });
+        }
+      }
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        //this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js b/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js
new file mode 100644
index 0000000..24e1d94
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/extension/taskinfo/task_hty.js
@@ -0,0 +1,58 @@
+
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+    components: {
+      //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+      gridHeader: '',
+      gridBody: '',
+      gridFooter: '',
+      //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+      modelHeader: '',
+      modelBody: '',
+      modelFooter: ''
+    },
+    tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+    buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+    methods: {
+       //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+      onInit() {  
+      },
+      onInited() {
+        //妗嗘灦鍒濆鍖栭厤缃悗
+        //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+        //this.detailOptions.columns.forEach(column=>{ });
+      },
+      searchBefore(param) {
+        //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+        //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+        return true;
+      },
+      searchAfter(result) {
+        //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+        return true;
+      },
+      addBefore(formData) {
+        //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+        return true;
+      },
+      updateBefore(formData) {
+        //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+        return true;
+      },
+      rowClick({ row, column, event }) {
+        //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+        this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+      },
+      modelOpenAfter(row) {
+        //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+        //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+        //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+        //(3)this.editFormFields.瀛楁='xxx';
+        //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+        //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+      }
+    }
+  };
+  export default extension;
+  
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/src/main.js b/Code Management/WMS/WIDESEA_WMSClient/src/main.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/main.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/main.js
diff --git a/Code Management/WIDESEA_WCSClient/src/router/charts.js b/Code Management/WMS/WIDESEA_WMSClient/src/router/charts.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/router/charts.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/router/charts.js
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/router/index.js b/Code Management/WMS/WIDESEA_WMSClient/src/router/index.js
new file mode 100644
index 0000000..03ed3ae
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/router/index.js
@@ -0,0 +1,82 @@
+import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
+import viewgird from './viewGird'
+import store from '../store/index'
+import redirect from './redirect'
+import charts from './charts'
+const routes = [
+  {
+    path: '/',
+    name: 'Index',
+    component: () => import('@/views/Index.vue'),
+    redirect: '/home',
+    children: [
+      ...viewgird,
+      ...redirect,
+      ...charts,
+      {
+        path: '/home',
+        name: 'home',
+        component: () => import('@/views/Home.vue')
+      }, {
+        path: '/UserInfo',
+        name: 'UserInfo',
+        component: () => import('@/views/system/UserInfo.vue')
+      },
+      {
+        path: '/sysMenu',
+        name: 'sysMenu',
+        component: () => import('@/views/system/Sys_Menu.vue')
+      }
+    ]
+  },
+  {
+    path: '/login',
+    name: 'login',
+    component: () => import('@/views/Login.vue'),
+    meta:{
+        anonymous:true
+      }
+  },
+  {
+    path: '/bigdata',
+    name: 'bigdata',
+    component: () => import('@/views/charts/bigdata.vue'),
+    meta: {
+      keepAlive: false
+    }
+  }
+]
+
+const router = createRouter({
+  history: createWebHashHistory(), //createWebHistory(process.env.BASE_URL),
+  routes
+})
+
+
+router.beforeEach((to, from, next) => {
+  if (to.matched.length == 0) return next({ path: '/404' });
+  //2020.06.03澧炲姞璺敱鍒囨崲鏃跺姞杞芥彁绀�
+  store.dispatch("onLoading", true);
+  if ((to.hasOwnProperty('meta') && to.meta.anonymous) || store.getters.isLogin() || to.path == '/login') {
+    return next();
+  }
+
+  next({ path: '/login', query: { redirect: Math.random() } });
+})
+router.afterEach((to, from) => {
+  store.dispatch("onLoading", false);
+})
+router.onError((error) => {
+  // const targetPath = router.currentRoute.value.matched;
+  try {
+    console.log(error.message);
+    if (process.env.NODE_ENV == 'development') {
+      alert(error.message)
+    }
+    localStorage.setItem("route_error", error.message)
+  } catch (e) {
+
+  }
+  window.location.href = '/'
+});
+export default router
diff --git a/Code Management/WIDESEA_WCSClient/src/router/redirect.js b/Code Management/WMS/WIDESEA_WMSClient/src/router/redirect.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/router/redirect.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/router/redirect.js
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js b/Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js
new file mode 100644
index 0000000..c07ba89
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/router/viewGird.js
@@ -0,0 +1,84 @@
+
+let viewgird = [
+  {
+    path: '/Sys_Log',
+    name: 'Sys_Log',
+    component: () => import('@/views/system/Sys_Log.vue')
+  },
+  {
+    path: '/Sys_User',
+    name: 'Sys_User',
+    component: () => import('@/views/system/Sys_User.vue')
+  },
+  {
+    path: '/permission',
+    name: 'permission',
+    component: () => import('@/views/system/Permission.vue')
+  },
+  {
+    path: '/permissionPDA',
+    name: 'permissionPDA',
+    component: () => import('@/views/system/PermissionPDA.vue')
+  },
+  {
+    path: '/Sys_Dictionary',
+    name: 'Sys_Dictionary',
+    component: () => import('@/views/system/Sys_Dictionary.vue')
+  },
+  {
+    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: '/locationInfo',
+    name: 'locationInfo',
+    component: () => import('@/views/basic/locationInfo.vue')
+  }, {
+    path: '/materielInfo',
+    name: 'materielInfo',
+    component: () => import('@/views/basic/materielInfo.vue')
+  }, {
+    path: '/warehouse',
+    name: 'warehouse',
+    component: () => import('@/views/basic/warehouse.vue')
+  },{
+    path: '/stockInfo',
+    name: 'stockInfo',
+    component: () => import('@/views/stock/stockInfo.vue')
+  }, {
+    path: '/stockInfoDetail',
+    name: 'stockInfoDetail',
+    component: () => import('@/views/stock/stockInfoDetail.vue')
+  }, {
+    path: '/task',
+    name: 'task',
+    component: () => import('@/views/taskinfo/task.vue')
+  },
+  {
+    path: '/task_hty',
+    name: 'task_hty',
+    component: () => import('@/views/taskinfo/task_hty.vue')
+  }, {
+    path: '/stockView',
+    name: 'stockView',
+    component: () => import('@/views/stock/stockView.vue')
+  }, {
+    path: '/stockQuantityChangeRecord',
+    name: 'stockQuantityChangeRecord',
+    component: () => import('@/views/record/stockQuantityChangeRecord.vue')
+  }, {
+    path: '/locationStatusChangeRecord',
+    name: 'locationStatusChangeRecord',
+    component: () => import('@/views/record/locationStatusChangeRecord.vue')
+  }
+]
+
+export default viewgird
diff --git a/Code Management/WIDESEA_WCSClient/src/store/index.js b/Code Management/WMS/WIDESEA_WMSClient/src/store/index.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/store/index.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/store/index.js
diff --git a/Code Management/WIDESEA_WCSClient/src/uitils/common.js b/Code Management/WMS/WIDESEA_WMSClient/src/uitils/common.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/uitils/common.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/uitils/common.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/Home.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/Home.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/Home.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/Home.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/Index.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/Index.vue
new file mode 100644
index 0000000..55b00c7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/Index.vue
@@ -0,0 +1,753 @@
+<template>
+  <div id="vol-container" :class="['vol-theme-' + theme]">
+    <div class="vol-aside" :style="{ width: menuWidth + 'px' }">
+      <div class="header" :style="{ width: menuWidth - 1 + 'px' }">
+        <img v-show="!isCollapse" v-bind:src="logo" />
+        <i @click="toggleLeft" class="collapse-menu" :class="isCollapse ? 'el-icon-s-unfold' : 'el-icon-s-fold'" />
+      </div>
+      <div class="vol-menu">
+        <el-scrollbar style="height: 100%">
+          <VolMenu :currentMenuId="currentMenuId" :on-select="onSelect" :enable="true" :open-select="false"
+            :isCollapse="isCollapse" :list="menuOptions"></VolMenu>
+        </el-scrollbar>
+      </div>
+    </div>
+    <div class="vol-container" :style="{ left: menuWidth - 1 + 'px' }">
+      <div class="vol-header">
+        <div class="project-name">WMS</div>
+        <div class="header-text">
+          <div class="h-link">
+            <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+              return !c.icon;
+            })" :key="index">
+              <span v-if="!item.icon"> {{ item.text }}</span>
+              <i v-else :class="item.icon"></i>
+            </a>
+          </div>
+        </div>
+        <div class="header-info">
+          <div class="h-link">
+            <a href="javascript:void(0)" @click="to(item)" v-for="(item, index) in links.filter((c) => {
+              return c.icon;
+            })" :key="index">
+              <span v-if="!item.icon"> {{ item.text }}</span>
+              <i v-else :class="item.icon"></i>
+            </a>
+          </div>
+          <!--娑堟伅绠$悊-->
+
+          <div class="h-link" @click="messageModel = true">
+            <a><i class="el-icon-message-solid"><el-badge :value="messageList.length"
+                  :type="messageList.length > 0 ? 'danger' : 'success'" class="item"
+                  style="width: 10px"></el-badge></i></a>
+          </div>
+          <div>
+            <img class="user-header" :src="userImg" :onerror="errorImg" />
+          </div>
+          <div class="user">
+            <span>{{ userTrueName }}</span>
+            <span id="index-date"></span>
+          </div>
+          <div class="settings">
+            <i style="font-size: 20px" class="el-icon-s-tools" @click="drawer_model = true" />
+          </div>
+        </div>
+      </div>
+      <div class="vol-path">
+        <el-tabs @tab-click="selectNav" @tab-remove="removeNav" @contextmenu.prevent="bindRightClickMenu(false)"
+          type="border-card" class="header-navigation" v-model="selectId" :strtch="false">
+          <el-tab-pane v-for="(item, navIndex) in navigation" type="card" :name="navIndex + ''" :closable="navIndex > 0"
+            :key="navIndex" :label="item.name">
+            <span style="display: none">{{ navIndex }}</span>
+          </el-tab-pane>
+        </el-tabs>
+        <!-- 鍙抽敭鑿滃崟 -->
+        <div v-show="contextMenuVisible">
+          <ul :style="{ left: menuLeft + 'px', top: menuTop + 'px' }" class="contextMenu">
+            <li v-show="visibleItem.all">
+              <el-button link @click="closeTabs()">
+                <i class="el-icon-close"></i>
+                {{
+                  navigation.length == 2 ? "鍏抽棴鑿滃崟" : "鍏抽棴鎵�鏈�"
+                }}</el-button>
+            </li>
+            <li v-show="visibleItem.left">
+              <el-button link @click="closeTabs('left')"><i class="el-icon-back"></i>鍏抽棴宸﹁竟</el-button>
+            </li>
+            <li v-show="visibleItem.right">
+              <el-button link @click="closeTabs('right')">
+                <i class="el-icon-right"></i>鍏抽棴鍙宠竟</el-button>
+            </li>
+            <li v-show="visibleItem.other">
+              <el-button link @click="closeTabs('other')"><i class="el-icon-right"></i>鍏抽棴鍏朵粬
+              </el-button>
+            </li>
+          </ul>
+        </div>
+      </div>
+      <div class="vol-main" id="vol-main">
+        <el-scrollbar style="height: 100%" v-if="permissionInited">
+          <loading v-show="$store.getters.isLoading()"></loading>
+          <router-view v-slot="{ Component }">
+            <keep-alive>
+              <component :is="Component" :key="$route.name" v-if="!$route.meta ||
+                ($route.meta && !$route.meta.hasOwnProperty('keepAlive'))
+                " />
+            </keep-alive>
+            <component :is="Component" :key="$route.name" v-if="$route.meta && $route.meta.hasOwnProperty('keepAlive')" />
+          </router-view>
+        </el-scrollbar>
+      </div>
+    </div>
+    <el-drawer title="閫夋嫨涓婚" v-model="drawer_model" direction="rtl" destroy-on-close>
+      <div class="theme-selector">
+        <div @click="changeTheme(item.name)" class="item" v-for="(item, index) in theme_color" :key="index"
+          :style="{ background: item.color }">
+          <div v-show="item.leftColor" :style="{ background: item.leftColor }" style="height: 100%; width: 20px"
+            class="t-left"></div>
+          <div class="t-right"></div>
+        </div>
+      </div>
+    </el-drawer>
+
+    <el-drawer title="娑堟伅鍒楄〃" v-model="messageModel" direction="rtl" destroy-on-close size="40%">
+      <Message :list="messageList"></Message>
+    </el-drawer>
+  </div>
+</template>
+<style lang="less" scoped>
+@import "./index/index.less";
+</style>
+<script>
+import loading from "@/components/basic/RouterLoading.vue";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import Message from "./index/Message.vue";
+import MessageConfig from "./index/MessageConfig.js";
+import imgUrl from "@/assets/imgs/wms_x.png";
+var $this;
+var $interval;
+var $indexDate;
+import {
+  defineComponent,
+  reactive,
+  ref,
+  watch,
+  onMounted,
+  getCurrentInstance,
+  h,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "@/api/http.js";
+import { ElNotification } from "element-plus";
+export default defineComponent({
+  components: {
+    VolMenu,
+    loading,
+    Message,
+  },
+
+  data() {
+    return {
+      allTabs: true,
+      leftTabs: true,
+      rightTabs: true,
+      otherTabs: true,
+      menuLeft: 0,
+      menuTop: 0,
+      client: null,
+      //  contextMenuVisible: false, // 鍙抽敭鍏抽棴鏄�/闅�
+    };
+  },
+  setup(props, context) {
+    let client = ref(null);
+
+    // 鑾峰彇鍏ㄥ眬灞炴�у拰鏂规硶
+    const { proxy } = getCurrentInstance();
+
+    // 鑿滃崟瀵艰埅榛樿瀹藉害
+    const menuWidth = ref(200);
+    const contextMenuVisible = ref(false);
+    const isCollapse = ref(false);
+    const drawer_model = ref(false);
+    const messageModel = ref(false);
+    const theme_color = ref([
+      { name: "blue", color: "rgb(45, 140, 240)" },
+      { name: "blue2", color: "rgb(45, 140, 240)", leftColor: "#0068d6" },
+      { name: "red", color: "rgb(237, 64, 20)" },
+      { name: "red2", color: "rgb(237, 64, 20)", leftColor: "#a90000" },
+      { name: "dark", color: "#272929" },
+      { name: "orange", color: "#ff9900" },
+      { name: "orange2", color: "#ff9900", leftColor: "rgb(232 141 5)" },
+      { name: "green", color: "rgb(25, 190, 107)" },
+      { name: "green2", color: "rgb(25, 190, 107)", leftColor: "#019e4f" },
+      { name: "white", color: "#fff" },
+    ]);
+    const links = ref([
+      { text: "涓汉涓績", path: "/UserInfo", id: -1, icon: "el-icon-s-custom" },
+      {
+        text: "瀹夊叏閫�鍑�",
+        path: "/login",
+        id: -4,
+        icon: "el-icon-switch-button",
+      },
+    ]);
+    const errorImg = ref(
+      'this.src="' + new URL("@/assets/imgs/error-img.png", import.meta.url).href + '"',
+    );
+    const selectId = ref("1");
+    // 銆愰椤点�戞爣绛惧簭鍙�(褰撳墠鍙抽敭閫変腑鐨勮彍鍗�)
+    const selectMenuIndex = ref("0");
+    //2022.05.29澧炲姞tab閫夐」涓庤彍鍗曡仈鍔ㄥ姛鑳�
+    const currentMenuId = ref(0);
+    const userName = ref("--");
+    const userTrueName = ref("--");
+    const userInfo = ref({});
+    const visibleItem = reactive({
+      left: false,
+      right: false,
+      all: false,
+      other: false,
+    });
+    const userImg = ref("");
+    const navigation = reactive([
+      { orderNo: "0", id: "1", name: "棣栭〉", path: "/home" },
+    ]);
+    const logo = ref(imgUrl);
+    const theme = ref("blue2");
+    const menuOptions = ref([]);
+    const permissionInited = ref(false);
+    const messageList = reactive([]);
+    let _config = getCurrentInstance().appContext.config.globalProperties;
+    let router = useRouter();
+    const toggleLeft = () => {
+      isCollapse.value = !isCollapse.value;
+      menuWidth.value = isCollapse.value ? 63 : 200;
+    };
+    //2021.08.28寮�鏀炬墜鍔ㄦ姌鍙犺彍鍗曟柟娉�
+    _config.menu = {
+      show() {
+        toggleLeft();
+      },
+      hide() {
+        toggleLeft();
+      },
+    };
+
+    const handleMessage = (e) => {
+      let data = JSON.parse(e.data);
+      messageList.push(data);
+      ElNotification({
+        title: data.title,
+        message: h("i", { style: "color: teal" }, data.message),
+        position: "bottom-right",
+      });
+    };
+
+    const createSocket = (url) => {
+      // 鍒涘缓WebSocket杩炴帴
+      //"ws://127.0.0.1:9295/admin"
+      client = new WebSocket(url);
+
+      client.onopen = function () {
+        client.onmessage = handleMessage;
+        store.commit("setWebsocket", client);
+        console.log("WebSocket 杩炴帴鎴愬姛");
+      };
+
+      client.onclose = function () {
+        console.log("WebSocket 杩炴帴鍏抽棴");
+        setTimeout(createSocket, 10000);
+      };
+
+      client.onerror = function () { };
+    };
+
+    const changeTheme = (name) => {
+      if (theme.value != name) {
+        theme.value = name;
+      }
+      localStorage.setItem("vol3_theme", name);
+    };
+    const to = (item) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      if (item.path == "#") {
+        window.open("https://github.com/cq-panda/Vue.NetCore");
+        return;
+      }
+      if (item.path.indexOf("http") != -1) {
+        window.open(item.path);
+        return;
+      }
+      if (typeof item == "string" || item.path == "/login") {
+        if (item == "/login" || item.path == "/login") {
+          store.commit("clearUserInfo", "");
+          window.location.href = "/";
+          return;
+        }
+        router.push({ path: item });
+        return;
+      }
+      if (item.path == "#") return;
+      open(item);
+    };
+    const open = (item, useRoute) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let _index = navigation.findIndex((x) => {
+        return x.path == item.path;
+      });
+      if (_index == -1) {
+        navigation.push({
+          //  orderNo: String(navigation.length),// 搴忓彿
+          id: item.id + "",
+          name: item.name || item.text || "鏃犳爣棰�",
+          path: item.path,
+          query: item.query, //2021.03.20淇鑷畾涔変簩娆℃墦寮�$tabs鏃跺弬鏁颁涪澶辩殑闂
+        });
+        //鏂版墦寮�鐨則ab绉昏嚦鏈�鍚庝竴涓�夐」
+        selectId.value = navigation.length - 1 + "";
+      } else {
+        selectId.value = _index + "";
+      }
+      if (useRoute === undefined) {
+        //闈炴爣鍑嗚彍鍗曪紝璁板綍鏈�鍚庝竴娆¤烦杞殑椤甸潰锛岀敤浜庡埛鏂�
+        setItem(item);
+        router.push(item);
+        // this.$router.push(item);
+      }
+      currentMenuId.value = item.id * 1;
+      // tab鑿滃崟缁戝畾鍙抽敭浜嬩欢
+      proxy.$nextTick(function (e) {
+        proxy.bindRightClickMenu(true);
+      });
+    };
+    const close = (path) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let index = navigation.findIndex((x) => {
+        return x.path == path;
+      });
+      if (index == -1) {
+        return _config.$Message.error("鏈壘鍒拌彍鍗�");
+      }
+      removeNav(index);
+    };
+    const setItem = (item) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      localStorage.setItem(
+        window.location.origin + "_tabs",
+        JSON.stringify(item)
+      );
+    };
+    const getItem = () => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      let nav = localStorage.getItem(window.location.origin + "_tabs");
+      return nav ? JSON.parse(nav) : null;
+    };
+    const selectNav = (item) => {
+      //鍗囩骇element姝e紡鐗堜慨鏀�
+      selectId.value = item.props.name;
+      let _path = navigation[item.index].path;
+      currentMenuId.value = (
+        menuOptions.value.find((c) => {
+          return c.path == _path;
+        }) || { id: 0 }
+      ).id;
+
+      router.push({
+        path: navigation[item.index].path,
+        query: navigation[item.index].query,
+      });
+    };
+
+    const removeNav = (_index) => {
+      return new Promise(() => {
+        //鍏抽棴鐨勫綋鍓嶉」,璺宠浆鍒板墠涓�涓〉闈�
+        if (selectId.value == _index + "") {
+          console.log(navigation[_index - 1]);
+          setItem(navigation[_index - 1]);
+          router.push({
+            path: navigation[_index - 1].path,
+            //2022.06.27淇tabs浜屾鍒囨崲鍚庡弬鏁颁涪澶辩殑闂
+            query: navigation[_index - 1].query,
+          });
+          navigation.splice(_index, 1);
+          selectId.value = selectId.value - 1 + "";
+          return;
+        }
+        if (_index < selectId.value) {
+          selectId.value = selectId.value - 1 + "";
+        }
+        navigation.splice(_index, 1);
+        currentMenuId.value = (
+          menuOptions.value.find((c) => {
+            return c.path == navigation[selectId.value * 1].path;
+          }) || { id: 0 }
+        ).id;
+      });
+    };
+
+    const getSelectMenuName = (id) => {
+      return menuOptions.value.find(function (x) {
+        return x.id == id;
+      });
+    };
+    const onSelect = (treeId) => {
+      /* 2020.07.31澧炲姞鎵嬪姩鎵撳紑tabs*/
+      var item = getSelectMenuName(treeId);
+      open(item, false);
+    };
+
+    /**
+     * 鏄剧ず鍙抽敭鑿滃崟
+     * @param {*} e 浜嬩欢瀵硅薄
+     */
+    const openTabsMenu = function (e) {
+      e.preventDefault(); // 闃叉榛樿鑿滃崟寮瑰嚭
+      let tabId = e.target.id.split("-")[1] * 1;
+
+      //璁板綍褰撳墠閫変腑鐨勮彍鍗昳ndex
+      selectMenuIndex.value =
+        document.getElementById("pane-" + tabId).children[0].textContent * 1;
+      //鍙湁棣栭〉鏃朵笉鏄剧ず
+      if (navigation.length == 1) {
+        return;
+      }
+
+      //棣栭〉璁剧疆鏄剧ず鍏抽棴鍙宠竟鑿滃崟
+      if (!selectMenuIndex.value) {
+        visibleItem.all = false;
+        visibleItem.right = true;
+        visibleItem.left = false;
+        visibleItem.other = false;
+      } else {
+        visibleItem.all = true;
+        //涓嶆槸鏈�鍚庝竴涓樉绀哄叧闂彸杈硅彍鍗�
+        visibleItem.right = selectMenuIndex.value != navigation.length - 1;
+        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴宸﹁竟
+        visibleItem.left = navigation.length != 2;
+        //鍙湁涓や釜鑿滃崟鏃朵笉鏄剧ず鍏抽棴鍏朵粬
+        visibleItem.other = navigation.length != 2;
+      }
+      contextMenuVisible.value = true;
+      // 璁剧疆鍙抽敭鑿滃崟鏄剧ず鐨勪綅缃�
+      proxy.menuLeft =
+        e.target.getBoundingClientRect().left - (isCollapse.value ? 63 : 198); //-e.target.clientWidth
+      proxy.menuTop = 36;
+    };
+
+    /**
+     * 鍏抽棴鍙抽敭鑿滃崟
+     */
+    const closeTabsMenu = () => {
+      contextMenuVisible.value = false;
+    };
+    const toHome = () => {
+      open({
+        text: navigation[0].name,
+        path: navigation[0].path,
+      });
+    };
+    /**
+     * 鍏抽棴鍏跺畠鏍囩椤�
+     * @param {*} par 鍏抽棴绫诲瀷(left,right,other)
+     */
+    const closeTabs = (value) => {
+      let _menuId = navigation[selectId.value * 1].id;
+      let currnetIndex = selectId.value * 1; // navigation.findIndex(c => { return c.id == selectId.value });
+      switch (value) {
+        case "left": {
+          // 鍒犻櫎宸︿晶tab鏍囩
+          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+          break;
+        }
+        case "right": {
+          // 鍒犻櫎鍙充晶tab鏍囩
+          if (selectMenuIndex.value == 0) {
+            navigation.splice(currnetIndex); // 鍒犻櫎鍙充晶tab鏍囩
+            toHome();
+          } else {
+            navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩
+            if (selectMenuIndex.value < currnetIndex) {
+              navigation.splice(
+                selectMenuIndex.value,
+                currnetIndex - selectMenuIndex.value
+              );
+            }
+          }
+          break;
+        }
+        case "other": {
+          // 鍒犻櫎鍏朵粬鎵�鏈塼ab鏍囩
+          navigation.splice(currnetIndex + 1); // 鍒犻櫎鍙充晶tab鏍囩(杩欓噷蹇呴』鎸夌収鍙斥啋宸﹂『搴忓垹闄�)
+          navigation.splice(1, currnetIndex - 1); // 鍒犻櫎宸︿晶tab鏍囩
+          break;
+        }
+        default: {
+          //鍏抽棴鎵�鏈�
+          navigation.splice(1, navigation.length);
+          toHome();
+          break;
+        }
+      }
+      selectId.value =
+        navigation.findIndex((c) => {
+          return c.id == _menuId;
+        }) + "";
+      closeTabsMenu();
+    };
+
+    watch(
+      () => contextMenuVisible.value,
+      (newVal, oldVal) => {
+        // 鐩戣
+        if (newVal) {
+          document.body.addEventListener("click", closeTabsMenu);
+        } else {
+          document.body.removeEventListener("click", closeTabsMenu);
+        }
+      }
+    );
+
+    /**
+     * 绯荤粺鍒涘缓寮�濮�
+     */
+    const created = () => {
+      let _theme = localStorage.getItem("vol3_theme");
+      if (_theme) {
+        theme.value = _theme;
+      }
+
+      let _userInfo = store.getters.getUserInfo();
+      if (_userInfo) {
+        userName.value = _userInfo.userName;
+        userTrueName.value = _userInfo.userTrueName;
+        if (_userInfo.img) {
+          userImg.value = _config.base.getImgSrc(_userInfo.img, http.ipAddress);
+        }
+      }
+
+      createSocket("ws://127.0.0.1:9296/" + _userInfo.userName);
+
+      Object.assign(_config.$tabs, { open: open, close: close });
+
+      http.get("api/Sys_Menu/getTreeMenu", {}, true).then((data) => {
+        data.push({ id: "1", name: "棣栭〉", url: "/home" }); // 涓轰簡鑾峰彇閫変腑id浣跨敤
+        data.forEach((d) => {
+          d.path = (d.url || "").replace("/Manager", "");
+          d.to = (d.url || "").replace("/Manager", "");
+          if (!d.icon || d.icon.substring(0, 3) != "el-") {
+            d.icon = "el-icon-menu";
+          }
+        });
+        store.dispatch("setPermission", data);
+        menuOptions.value = data;
+        permissionInited.value = true;
+
+        //寮�鍚秷鎭帹閫侊紙main.js涓缃槸鍚﹀紑鍚痵ignalR锛�2022.05.05
+        if (_config.$global.signalR) {
+          MessageConfig(http, (result) => {
+            messageList.unshift(result);
+            //    console.log(result)
+          });
+        }
+
+        //褰撳墠鍒锋柊鏄笉鏄椤�
+        if (router.currentRoute.value.path != navigation[0].path) {
+          //鏌ユ壘绯荤粺鑿滃崟
+          let item = menuOptions.value.find((x) => {
+            return x.path == router.currentRoute.value.path; //this.$route.path;
+          });
+          if (item) return onSelect(item.id);
+          //鏌ユ壘椤堕儴蹇嵎杩炴帴
+          item = links.value.find((x) => {
+            return x.path == router.currentRoute.value.path; //this.$route.path;
+          });
+          //鏌ユ壘鏈�鍚庝竴娆¤烦杞殑椤甸潰
+          if (!item) {
+            item = getItem();
+          }
+          if (item) {
+            return open(item, false);
+          }
+        }
+        selectId.value = "1";
+      });
+    };
+    created();
+    return {
+      menuWidth,
+      isCollapse,
+      drawer_model,
+      theme_color,
+      errorImg,
+      userInfo,
+      userName,
+      userTrueName,
+      userImg,
+      selectId,
+      selectMenuIndex,
+      navigation,
+      links,
+      onSelect,
+      openTabsMenu,
+      selectNav,
+      getSelectMenuName,
+      removeNav,
+      logo,
+      theme,
+      menuOptions,
+      permissionInited,
+      changeTheme,
+      to,
+      toggleLeft,
+      messageModel,
+      messageList,
+      contextMenuVisible,
+      visibleItem,
+      closeTabsMenu,
+      closeTabs,
+      currentMenuId,
+    };
+  },
+  /**
+   * 鎸傝浇閽╁瓙鍑芥暟
+   */
+  mounted() {
+    let _date = showTime();
+    $indexDate = document.getElementById("index-date");
+    $indexDate.innerText = _date;
+    $interval = setInterval(function () {
+      $indexDate.innerText = showTime();
+    }, 1000);
+
+    this.bindRightClickMenu(true);
+  },
+
+  methods: {
+    /**
+     * 缁戝畾鍙抽敭浜嬩欢
+     * @param {*} enable 鏄惁鍚敤鍙抽敭浜嬩欢[true:鍚敤;false:绂佺敤;]
+     * @param {*} $event 浜嬩欢
+     */
+    bindRightClickMenu(enable) {
+      if (!enable) return;
+      let that = this;
+      // 浣跨敤鍘熺敓js 涓哄崟涓猟om缁戝畾榧犳爣鍙冲嚮浜嬩欢
+      that.$nextTick(() => {
+        let tab_top_dom = Object.assign(
+          [],
+          document.getElementsByClassName("el-tabs__item is-top")
+        );
+        tab_top_dom.forEach((item, index) => {
+          item.oncontextmenu = that.openTabsMenu;
+        });
+      });
+    },
+  },
+
+  /**
+   * 閿�姣侀挬瀛愬嚱鏁�
+   */
+  destroyed() {
+    $this = null;
+    clearInterval($interval);
+  },
+});
+const week = new Array(
+  "鏄熸湡涓�",
+  "鏄熸湡浜�",
+  "鏄熸湡涓�",
+  "鏄熸湡鍥�",
+  "鏄熸湡浜�",
+  "鏄熸湡鍏�",
+  "鏄熸湡鏃�"
+);
+function showTime() {
+  let date = new Date();
+  let year = date.getFullYear();
+  let month = date.getMonth() + 1;
+  let day = date.getDate();
+  let hour = date.getHours();
+  let minutes = date.getMinutes();
+  let second = date.getSeconds();
+
+  return (
+    year +
+    "." +
+    (month < 10 ? "0" + month : month) +
+    "." +
+    (day < 10 ? "0" + day : day) + //202.08.08淇鏃ユ湡澶╂暟灏忎簬10鏃舵坊鍔�0
+    "" +
+    " " +
+    (hour < 10 ? "0" + hour : hour) +
+    ":" +
+    (minutes < 10 ? "0" + minutes : minutes) +
+    ":" +
+    (second < 10 ? "0" + second : second) +
+    " " + //2020.08.30淇棣栭〉鏃ユ湡鏄熸湡澶╀笉鏄剧ず鐨勯棶棰�
+    (week[date.getDay() - 1] || week[6])
+  );
+}
+</script>
+
+<style lang="less" scoped>
+.vol-container .vol-path ::v-deep(.el-tabs__content) {
+  padding: 0;
+}
+
+.item {
+  margin-top: -20px;
+  margin-right: 40px;
+}
+
+.contextMenu {
+  width: 120px;
+  margin: 0;
+  border: 1px solid #eaeaea;
+  background: #fff;
+  z-index: 30000;
+  position: absolute;
+  list-style-type: none;
+  padding: 5px 0;
+  border-radius: 4px;
+  font-size: 14px;
+  color: #333;
+  box-shadow: 2px 2px 3px 0 rgb(182 182 182 / 20%);
+
+  i,
+  button {
+    font-size: 14px !important;
+  }
+}
+
+.contextMenu li {
+  margin: 0;
+  padding: 5px 17px;
+}
+
+.contextMenu li:hover {
+  background: #fafafa;
+  cursor: pointer;
+}
+
+.contextMenu li button {
+  color: #626060;
+  font-size: 14px;
+  letter-spacing: 1px;
+}
+
+.el-tabs.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:last-child,
+.el-tabs--top.el-tabs--border-card.header-navigation>.el-tabs__header .el-tabs__item:nth-child(2) {
+  padding: 0;
+}
+
+.header-navigation ::v-deep(.el-tabs__item.is-top) {
+  padding: 0 15px;
+}
+</style>
+<style>
+.horizontal-collapse-transition {
+  transition: 0s width ease-in-out, 0s padding-left ease-in-out,
+    0s padding-right ease-in-out;
+}
+</style>
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/Login.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/Login.vue
new file mode 100644
index 0000000..d1eb5a3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/Login.vue
@@ -0,0 +1,387 @@
+<template>
+  <div class="login-container">
+    <div class="project-name">WIDESEA_WMS</div>
+    <div class="login-form">
+      <div class="form-user" @keypress="loginPress">
+        <div class="login-text">
+          <div>
+            <div>娆㈣繋鐧诲綍...</div>
+            <div class="login-line"></div>
+          </div>
+          <div style="flex: 1"></div>
+        </div>
+        <div class="login-text-small">WELCOME TO LOGIN</div>
+        <div class="item">
+          <div class="input-icon el-icon-user"></div>
+          <input type="text" v-focus v-model="userInfo.userName" placeholder="璇疯緭鍏ヨ处鍙�" />
+        </div>
+        <div class="item">
+          <div class="input-icon el-icon-lock"></div>
+          <input type="password" v-focus v-model="userInfo.password" placeholder="璇疯緭鍏ュ瘑鐮�" />
+        </div>
+        <div class="item">
+          <div class="input-icon el-icon-mobile"></div>
+
+          <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="杈撳叆楠岃瘉鐮�" />
+          <div class="code" @click="getVierificationCode">
+            <img v-show="codeImgSrc != ''" :src="codeImgSrc" />
+          </div>
+        </div>
+      </div>
+      <div class="loging-btn">
+        <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long>
+          <span v-if="!loading">鐧诲綍</span>
+          <span v-else>姝e湪鐧诲綍...</span>
+        </el-button>
+      </div>
+
+      <!-- 璐﹀彿淇℃伅 -->
+      <!-- <div class="account-info">
+        <p>婕旂ず璐﹀彿锛歛dmin666 &nbsp; &nbsp;瀵嗙爜:123456</p>
+        <p>鏈湴璐﹀彿锛歛dmin &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;瀵嗙爜:123456</p>
+        <p><a href="https://jq.qq.com/?_wv=1027&k=Sqstuy0M" style="text-decoration: none"
+            target="_blank">QQ3缇�:743852316</a>
+          &nbsp; &nbsp;&nbsp; &nbsp;
+          <a href="http://v2.volcore.xyz/document/guide" style="text-decoration: none" target="_blank">妗嗘灦鏂囨。</a>
+        </p>
+      </div> -->
+      <!-- 閾炬帴浣嶇疆 -->
+      <!-- <div class="app-link" >
+        <a href="#" style="text-decoration: none">绉诲姩绔壂鐮�</a>
+        <a>
+          <i class="el-icon-chat-dot-round"></i> 灏忕▼搴�
+          <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/wechat.jpg" /></a>
+        <a>
+          <i class="el-icon-apple"></i>
+          Android
+          <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/Android.png" /></a>
+        <a>
+          <i class="el-icon-document"></i>
+          H5
+          <img src="https://app-1256993465.cos.ap-nanjing.myqcloud.com/H5.png" /></a>
+      </div> -->
+    </div>
+
+    <!-- 椤甸潰搴曢儴 -->
+    <!-- <div class="login-footer">
+      <a style="text-decoration: none" href="https://beian.miit.gov.cn/" target="_blank">浜琁CP澶�19056538鍙�-1</a>
+
+
+      <a href="https://dotnet9.com/" style="text-decoration: none" target="blank">Dotnet9</a>
+      <a href="https://space.bilibili.com/525836469" style="text-decoration: none" target="blank">NET瑙嗛鏁欑▼(寰蒋MVP-ACE褰曞埗)</a>
+      <a href="https://www.cctalk.com/m/group/90268531" style="text-decoration: none" target="blank">VOL妗嗘灦瑙嗛</a>
+      <a href="http://120.48.115.252:9990" style="text-decoration: none" target="blank">瑙嗛婕旂ず鍦板潃</a>
+    </div> -->
+
+    <img class="login-bg" src="/static/login_bg.png" />
+  </div>
+</template>
+
+
+<script >
+import {
+  defineComponent,
+  ref,
+  reactive,
+  toRefs,
+  getCurrentInstance,
+} from "vue";
+import { useRouter, useRoute } from "vue-router";
+import store from "../store/index";
+import http from "@/api/http.js";
+export default defineComponent({
+  setup(props, context) {
+    store.commit("clearUserInfo", "");
+    const loading = ref(false);
+    const codeImgSrc = ref("");
+    const userInfo = reactive({
+      userName: "admin",
+      password: "123456",
+      verificationCode: "1234",
+      UUID: undefined,
+    });
+
+    const getVierificationCode = () => {
+      http.get("/api/Sys_User/getVierificationCode").then((x) => {
+        codeImgSrc.value = "data:image/png;base64," + x.img;
+        userInfo.UUID = x.uuid;
+      });
+    };
+    getVierificationCode();
+
+    let appContext = getCurrentInstance().appContext;
+    let $message = appContext.config.globalProperties.$message;
+    let router = useRouter();
+
+    const login = () => {
+      if (!userInfo.userName) return $message.error("璇疯緭鍏ョ敤鎴峰悕");
+      if (!userInfo.password) return $message.error("璇疯緭鍏ュ瘑鐮�");
+      if (!userInfo.verificationCode) {
+        return $message.error("璇疯緭鍏ラ獙璇佺爜");
+      }
+      loading.value = true;
+      http.post("/api/Sys_User/login", userInfo, "姝e湪鐧诲綍....").then((result) => {
+        if (!result.status) {
+          loading.value = false;
+          getVierificationCode();
+          return $message.error(result.message);
+        }
+        $message.success("鐧诲綍鎴愬姛,姝e湪璺宠浆!");
+        store.commit("setUserInfo", result.data);
+
+        router.push({ path: "/" });
+      });
+    };
+    const loginPress = (e) => {
+      if (e.keyCode == 13) {
+        login();
+      }
+    };
+    const openUrl = (url) => {
+      window.open(url, "_blank");
+    };
+    return {
+      loading,
+      codeImgSrc,
+      getVierificationCode,
+      login,
+      userInfo,
+      loginPress,
+      openUrl,
+    };
+  },
+  directives: {
+    focus: {
+      inserted: function (el) {
+        el.focus();
+      },
+    },
+  },
+});
+</script>
+<style lang="less" scoped>
+.login-container {
+  display: flex;
+  width: 100%;
+  height: 100%;
+  background: rgb(246, 247, 252);
+  justify-content: flex-end;
+  align-items: center;
+}
+
+.login-form {
+  align-items: center;
+  width: 50%;
+  display: flex;
+  flex-direction: column;
+  // margin-right: 150px;
+  z-index: 999;
+
+  .form-user {
+    // margin: 25px 0;
+
+    .item {
+      border-radius: 5px;
+      border: 1px solid #ececec;
+      display: flex;
+      margin-bottom: 30px;
+      background: #ffff;
+      height: 45px;
+      padding-left: 20px;
+      display: flex;
+
+      .code {
+        position: relative;
+        cursor: pointer;
+        width: 74px;
+        padding: 5px 10px 0 0;
+      }
+
+      .input-icon {
+        line-height: 45px;
+        color: #7a7a7a;
+        padding-right: 20px;
+      }
+    }
+  }
+
+  input:-webkit-autofill {
+    box-shadow: 0 0 0px 1000px white inset;
+    -webkit-box-shadow: 0 0 0px 1000px white inset !important;
+  }
+
+  input {
+    background: white;
+    display: block;
+    box-sizing: border-box;
+    width: 100%;
+    min-width: 0;
+    margin: 0;
+    padding: 0;
+    color: #323233;
+    line-height: inherit;
+    text-align: left;
+    border: 0;
+    outline: none;
+    font-size: 16px;
+    line-height: 20px;
+  }
+}
+
+.form-user,
+.loging-btn {
+  width: 400px;
+}
+
+.loging-btn {
+  box-shadow: 2px 4px 11px #a4c2ff;
+  margin-top: 10px;
+
+  button {
+    padding: 21px;
+    font-size: 14px !important;
+    width: 100%;
+  }
+}
+
+.login-text {
+  font-weight: bolder;
+  font-size: 20px;
+  letter-spacing: 2px;
+
+  position: relative;
+  display: flex;
+
+  .login-line {
+    z-index: -1;
+    padding: 5px;
+    position: relative;
+    top: -8px;
+    width: 100%;
+    background-image: linear-gradient(to right, #6598ff, white);
+  }
+}
+
+.login-text-small {
+  margin-bottom: 20px;
+  font-size: 13px;
+  color: #7d7c7c;
+}
+
+.login-bg {
+  left: 0;
+  position: absolute;
+  height: 100%;
+  width: 50%;
+  z-index: 0;
+}
+
+.project-name {
+  position: absolute;
+  top: 40px;
+  left: 40px;
+  z-index: 9999;
+  font-weight: bolder;
+  background-image: linear-gradient(to right, #1850c1, #9c009c);
+  -webkit-background-clip: text;
+  color: transparent;
+  font-size: 25px;
+}
+</style>
+<style lang="less" scoped>
+.app-link {
+  // font-weight: bolder;
+  text-align: center;
+  padding-top: 5px;
+  font-size: 12px;
+  width: 400px;
+  padding-left: 40px;
+  display: flex;
+
+  a {
+    flex: 1;
+    position: relative;
+    cursor: pointer;
+    width: 70px;
+    color: #666666;
+    margin: 2px 10px 0 0;
+  }
+
+  img {
+    display: none;
+  }
+
+  a:hover {
+    color: #0545f6 !important;
+
+    img {
+      display: block;
+      position: absolute;
+      z-index: 999999999;
+      top: -130px;
+      width: 120px;
+      left: -22px;
+
+      border: 1px solid #b1b1b1;
+    }
+  }
+}
+
+.login-footer {
+  position: absolute;
+  width: 50%;
+  bottom: 0.5rem;
+  font-size: 12px;
+  text-align: center;
+  padding-bottom: 10px;
+  color: #4f4f4f;
+
+  a {
+    margin-right: 10px;
+    font-size: 12px;
+    color: #4f4f4f;
+  }
+
+  div {
+    margin-bottom: 5px;
+  }
+
+  a:hover {
+    cursor: pointer;
+    color: #0540e3 !important;
+  }
+}
+
+.account-info {
+  font-size: 12px;
+  color: #636363;
+  margin-top: 15px;
+}
+</style>
+
+<style lang="less" scoped>
+@media screen and (max-width: 700px) {
+
+  .login-bg,
+  .account-info,
+  .app-link,
+  .login-footer,
+  .project-name {
+    display: none;
+  }
+
+  .login-container {
+    padding: 2rem;
+    justify-content: center;
+  }
+
+  .login-form {
+    width: 100%;
+  }
+
+  .form-user,
+  .loging-btn {
+    width: 100%;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue
new file mode 100644
index 0000000..b6a588f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/locationInfo.vue
@@ -0,0 +1,217 @@
+
+<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/basic/locationInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "璐т綅淇℃伅",
+      name: "locationInfo",
+      url: "/LocationInfo/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      locationStatus: "",
+    });
+    const editFormOptions = ref([
+      [
+        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "select",dataKey: "locationStatusEnum",data: [],},
+      ],
+    ]);
+    const searchFormFields = ref({
+      locationCode: "",
+      roadwayNo: "",
+      locationType: "",
+      enableStatus: "",
+      locationStatus: "",
+      row: "",
+      column: "",
+      layer: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "璐т綅缂栧彿", field: "locationCode", type: "like" },
+        { title: "宸烽亾缂栧彿", field: "roadwayNo",type:"like" },
+        { title: "璐т綅绫诲瀷", field: "locationType",type: "select",dataKey: "locationTypeEnum",data: [], },
+        { title: "绂佺敤鐘舵��", field: "enableStatus" ,type: "select",dataKey: "enableStatusEnum",data: [],},
+      ],
+      [
+        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
+        { title: "琛�", field: "row" ,type: "int"},
+        { title: "鍒�", field: "column" ,type: "int"},
+        { title: "灞�", field: "layer" ,type: "int"}
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 100,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      // {
+      //   field: "areaId",
+      //   title: "鍖哄煙涓婚敭",
+      //   type: "string",
+      //   width: 90,
+      //   align: "left",
+      //   bind: {key: "areainfo",data: []}
+      // },
+      {
+        field: "locationCode",
+        title: "璐т綅缂栧彿",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "locationName",
+        title: "璐т綅鍚嶇О",
+        type: "string",
+        width: 280,
+        align: "left",
+      },
+      {
+        field: "roadwayNo",
+        title: "宸烽亾缂栧彿",
+        type: "decimal",
+        width: 100,
+        align: "left",
+      },
+      {
+        field: "row",
+        title: "璐т綅琛�",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "column",
+        title: "璐т綅鍒�",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "layer",
+        title: "璐т綅灞�",
+        type: "string",
+        width: 200,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "depth",
+        title: "璐т綅娣卞害",
+        type: "string",
+        width: 180,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "locationType",
+        title: "璐т綅绫诲瀷",
+        type: "string",
+        width: 120,
+        align: "left",
+        bind:{key: "locationTypeEnum", data: []}
+      },
+      {
+        field: "locationStatus",
+        title: "璐т綅鐘舵��",
+        type: "string",
+        width: 120,
+        align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
+      },
+      {
+        field: "enableStatus",
+        title: "绂佺敤鐘舵��",
+        type: "string",
+        width: 80,
+        align: "left",
+        bind: { key: "enableStatusEnum", data: [] },
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "createDate",
+        title: "鍒涘缓鏃堕棿",
+        type: "datetime",
+        width: 160,
+        align: "left",
+        sort: true,
+        hidden: 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: 100,
+        align: "left",
+        hidden: true
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue
new file mode 100644
index 0000000..aaacaa0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/materielInfo.vue
@@ -0,0 +1,226 @@
+
+<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/basic/materielInfo.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "鐗╂枡淇℃伅",
+      name: "materielInfo",
+      url: "/MaterielInfo/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      warehouseId: "",
+      materielCode: "",
+      materielName: "",
+      materielDes: "",
+      isMixBatch: "",
+      isMixMateriel: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          title: "浠撳簱",
+          required: true,
+          field: "warehouseId",
+          type: "string",
+        },
+        {
+          title: "鐗╂枡缂栧彿",
+          required: true,
+          field: "materielCode",
+          type: "string",
+        },
+        {
+          title: "鐗╂枡鍚嶇О",
+          required: true,
+          field: "materielName",
+          type: "string",
+        },
+        {
+          title: "璁¢噺鍗曚綅",
+          required: true,
+          field: "unit",
+          type: "string",
+        },
+      ],
+      [
+        
+        {
+          title: "鐗╂枡鎻忚堪",
+          field: "materielDes",
+          type: "textarea",
+        },
+      ],
+    ]);
+    const searchFormFields = ref({
+      materielCode: "",
+      materielName: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "鐗╂枡缂栧彿", field: "materielCode", type: "like" },
+        { title: "鐗╂枡鍚嶇О", field: "materielName", type: "like" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "warehouseId",
+        title: "浠撳簱",
+        type: "string",
+        width: 100,
+        align: "left",
+        bind: { key: "warehouses", data: [] },
+      },
+      {
+        field: "materielCode",
+        title: "鐗╂枡缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "materielName",
+        title: "鐗╂枡鍚嶇О",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "materielDes",
+        title: "鐗╂枡鎻忚堪",
+        type: "decimal",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "cotainerType",
+        title: "瀹瑰櫒绫诲瀷",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden:true
+      },
+      {
+        field: "packspes",
+        title: "鍖呰瑙勬牸",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden:true
+      },
+      {
+        field: "attribute",
+        title: "鐗╂枡灞炴��",
+        type: "string",
+        width: 200,
+        align: "left",
+        hidden:true
+      },
+      {
+        field: "unit",
+        title: "璁¢噺鍗曚綅",
+        type: "string",
+        width: 180,
+        align: "left",
+      },
+      {
+        field: "validity",
+        title: "鏈夋晥鏈�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "safetyStock",
+        title: "瀹夊叏搴撳瓨",
+        type: "string",
+        width: 120,
+        align: "left",
+        hidden:true
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue
new file mode 100644
index 0000000..83c3c29
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/basic/warehouse.vue
@@ -0,0 +1,182 @@
+
+<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/basic/warehouse.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "浠撳簱淇℃伅",
+      name: "warehouse",
+      url: "/Warehouse/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      warehouseCode: "",
+      warehouseName: "",
+      warehouseType: "",
+      warehouseStatus: "",
+      warehouseDes: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          title: "浠撳簱缂栧彿",
+          required: true,
+          field: "warehouseCode",
+          type: "string",
+        },
+        {
+          title: "浠撳簱鍚嶇О",
+          required: true,
+          field: "warehouseName",
+          type: "string",
+        },
+        {
+          title: "浠撳簱鎻忚堪",
+          field: "warehouseDes",
+          type: "textarea",
+        },
+      ],
+    ]);
+    const searchFormFields = ref({
+      warehouseCode: "",
+      warehouseName: "",
+      warehouseType: "",
+      warehouseStatus: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "浠撳簱缂栧彿", field: "warehouseCode", type: "like" },
+        { title: "浠撳簱鍚嶇О", field: "warehouseName", type: "like" },
+        { title: "浠撳簱绫诲瀷", field: "warehouseType", type: "like" },
+        {
+          title: "浠撳簱鐘舵��",
+          field: "warehouseStatus",
+          type: "select",
+          dataKey: "enableEnum",
+          data: [],
+        },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "warehouseCode",
+        title: "浠撳簱缂栧彿",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "warehouseName",
+        title: "浠撳簱鍚嶇О",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "warehouseType",
+        title: "浠撳簱绫诲瀷",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "warehouseStatus",
+        title: "浠撳簱鐘舵��",
+        type: "decimal",
+        width: 90,
+        align: "left",
+        bind: { key: "enableEnum", data: [] },
+      },
+      {
+        field: "warehouseDes",
+        title: "浠撳簱鎻忚堪",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+        hidden: true
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/IviewCircle.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/IviewCircle.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/IviewCircle.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/chart-options.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/chart-options.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/chart-options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/head_bg.png
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/head_bg.png
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/head_bg.png
Binary files differ
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/layout.less
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/bigdata/layout.less
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/bigdata/layout.less
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/chart.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chart.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/chart.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chart.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/chartOptions.js b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chartOptions.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/chartOptions.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/chartOptions.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/flex.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/flex.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/flex.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/flex.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/formChart.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formChart.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/formChart.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formChart.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/charts/formOptions.js b/Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formOptions.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/charts/formOptions.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/charts/formOptions.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/home/home-chart-options.js b/Code Management/WMS/WIDESEA_WMSClient/src/views/home/home-chart-options.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/home/home-chart-options.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/home/home-chart-options.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/Message.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/index/Message.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/index/Message.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/index/Message.vue
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/MessageConfig.js b/Code Management/WMS/WIDESEA_WMSClient/src/views/index/MessageConfig.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/index/MessageConfig.js
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/index/MessageConfig.js
diff --git a/Code Management/WIDESEA_WCSClient/src/views/index/index.less b/Code Management/WMS/WIDESEA_WMSClient/src/views/index/index.less
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/index/index.less
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/index/index.less
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue
new file mode 100644
index 0000000..a22ee58
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/record/locationStatusChangeRecord.vue
@@ -0,0 +1,207 @@
+
+<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/record/locationStatusChangeRecord.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "璐т綅鐘舵�佸彉鍔ㄨ褰�",
+      name: "locationStatusChangeRecord",
+      url: "/LocationStatusChangeRecord/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      deviceCode: "",
+      deviceName: "",
+      deviceType: "",
+      deviceStatus: "",
+      deviceIp: "",
+      devicePort: "",
+      devicePlcType: "",
+      deviceRemark: "",
+    });
+    const editFormOptions = ref([]);
+    const searchFormFields = ref({
+      locationCode: "",
+      orderNo: "",
+      taskNum: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "璐т綅鍙�", field: "locationCode" },
+        { title: "鍗曟嵁缂栧彿", field: "orderNo" },
+        { title: "浠诲姟鍙�", field: "taskNum" },
+      ],
+      [
+        {
+          title: "鍙樺姩鍓嶈揣浣嶇姸鎬�",
+          field: "beforeStatus",
+          type: "selectList",
+          dataKey: "locationStatusEnum",
+          data: [],
+        },
+        {
+          title: "鍙樺姩鍚庤揣浣嶇姸鎬�",
+          field: "afterStatus",
+          type: "selectList",
+          dataKey: "locationStatusEnum",
+          data: [],
+        },
+        {
+          title: "鍙樺姩绫诲瀷",
+          field: "changeType",
+          type: "selectList",
+          dataKey: "locationChangeType",
+          data: [],
+        },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "locationId",
+        title: "璐т綅涓婚敭",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "taskNum",
+        title: "浠诲姟鍙�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "locationCode",
+        title: "璐т綅缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "beforeStatus",
+        title: "鍙樺姩鍓嶈揣浣嶇姸鎬�",
+        type: "string",
+        width: 150,
+        align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
+      },
+      {
+        field: "afterStatus",
+        title: "鍙樺姩鍚庤揣浣嶇姸鎬�",
+        type: "decimal",
+        width: 150,
+        align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
+      },
+      {
+        field: "changeType",
+        title: "鍙樺姩绫诲瀷",
+        type: "string",
+        width: 90,
+        align: "left",
+        bind: { key: "locationChangeType", data: [] },
+      },
+      {
+        field: "orderId",
+        title: "鍗曟嵁涓婚敭",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "orderNo",
+        title: "鍗曟嵁缂栧彿",
+        type: "int",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "orderDetailId",
+        title: "鍗曟嵁鏄庣粏涓婚敭",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue
new file mode 100644
index 0000000..f7d65a4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/record/stockQuantityChangeRecord.vue
@@ -0,0 +1,218 @@
+
+<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/record/stockQuantityChangeRecord.js";
+  import { ref, defineComponent } from "vue";
+  export default defineComponent({
+    setup() {
+      const table = ref({
+        key: "id",
+        footer: "Foots",
+        cnName: "搴撳瓨鍙樺姩淇℃伅璁板綍",
+        name: "stockQuantityChangeRecord",
+        url: "/StockQuantityChangeRecord/",
+        sortName: "id",
+      });
+      const editFormFields = ref({
+        
+      });
+      const editFormOptions = ref([
+        
+      ]);
+      const searchFormFields = ref({
+        palleCode: "",
+        materielCode: "",
+        orderNo: "",
+      });
+      const searchFormOptions = ref([
+        [
+          { title: "鎵樼洏鍙�", field: "palleCode" },
+          { title: "鐗╂枡缂栧彿", field: "materielCode" },
+          { title: "鍗曟嵁缂栧彿", field: "orderNo" },
+          { title: "鍙樺姩绫诲瀷", field: "changeType" ,type: "selectList",dataKey: "stockChangeType",data: [],},
+        ],
+        [
+          { title: "鎵规鍙�", field: "batchNo" },
+          { title: "浠诲姟鍙�", field: "taskNum" },
+          { title: "搴忓垪鍙�", field: "serilNumber" },
+        ],
+      ]);
+      const columns = ref([
+        {
+          field: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          require: true,
+          align: "left",
+        },
+        {
+          field: "stockDetailId",
+          title: "搴撳瓨鏄庣粏ID",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "palleCode",
+          title: "鎵樼洏缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+        {
+          field: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+        {
+          field: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "decimal",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "batchNo",
+          title: "鎵规鍙�",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "serilNumber",
+          title: "搴忓垪鍙�",
+          type: "int",
+          width: 280,
+          align: "left",
+        },
+        {
+          field: "orderNo",
+          title: "鍗曟嵁缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+        {
+          field: "taskNum",
+          title: "浠诲姟鍙�",
+          type: "string",
+          width: 90,
+          align: "left",
+        },
+        {
+          field: "changeType",
+          title: "鍙樺姩绫诲瀷",
+          type: "int",
+          width: 120,
+          align: "left",
+          bind: { key: "stockChangeType", data: [] },
+        },
+        {
+          field: "changeQuantity",
+          title: "鍙樺姩鏁伴噺",
+          type: "string",
+          width: 100,
+          align: "left",
+        },
+        {
+          field: "beforeQuantity",
+          title: "鍙樺姩鍓嶅簱瀛橀噺",
+          type: "string",
+          width: 100,
+          align: "left",
+        },
+        {
+          field: "afterQuantity",
+          title: "鍙樺姩鍚庡簱瀛橀噺",
+          type: "string",
+          width: 100,
+          align: "left",
+        },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+          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: "orderId",
+          title: "鍗曟嵁涓婚敭",
+          type: "string",
+          width: 180,
+          align: "left",
+        },
+        {
+          field: "orderDetailId",
+          title: "鍗曟嵁鏄庣粏涓婚敭",
+          type: "string",
+          width: 120,
+          align: "left",
+        },
+        {
+          field: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 100,
+          align: "left",
+        },
+      ]);
+      const detail = ref({
+        cnName: "#detailCnName",
+        table: "",
+        columns: [],
+        sortName: "",
+      });
+      return {
+        table,
+        extend,
+        editFormFields,
+        editFormOptions,
+        searchFormFields,
+        searchFormOptions,
+        columns,
+        detail,
+      };
+    },
+  });
+  </script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue
new file mode 100644
index 0000000..22f2eea
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo.vue
@@ -0,0 +1,154 @@
+
+<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/stockInfo.js";
+  import { ref, defineComponent } from "vue";
+  export default defineComponent({
+    setup() {
+      const table = ref({
+        key: "id",
+        footer: "Foots",
+        cnName: "搴撳瓨淇℃伅",
+        name: "stockInfo",
+        url: "/StockInfo/",
+        sortName: "id",
+      });
+      const editFormFields = ref({
+        deviceCode: "",
+        deviceName: "",
+        deviceType: "",
+        deviceStatus: "",
+        deviceIp: "",
+        devicePort: "",
+        devicePlcType: "",
+        deviceRemark: "",
+      });
+      const editFormOptions = ref([
+       [
+        {field:'palletCode',title:'鎵樼洏缂栧彿',type:'string'},
+        {field:'locationCode',title:'璐т綅缂栧彿',type:'string'},
+       ]
+      ]);
+      const searchFormFields = ref({
+        palletCode: "",
+        locationCode: "",
+      });
+      const searchFormOptions = ref([
+        [
+          { title: "鎵樼洏缂栧彿", field: "palletCode" },
+          { title: "璐т綅缂栧彿", field: "locationCode" },
+        ],
+      ]);
+      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: 90,
+          align: "left",
+        },
+        {
+          field: "locationCode",
+          title: "璐т綅缂栧彿",
+          type: "string",
+          width: 150,
+          align: "left",
+        },
+        // {
+        //   field: "isFull",
+        //   title: "鏄惁婊$洏",
+        //   type: "string",
+        //   width: 150,
+        //   align: "left",
+        //   bind: { key: "yesno", data: [] },
+        // },
+         {
+          field: "warehouseId",
+          title: "浠撳簱",
+          type: "select",
+          width: 100,
+          align: "left",
+          bind: { key: "warehouses", data: [] },
+        },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+          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: 100,
+          align: "left",
+          hidden:true
+        },
+      ]);
+      const detail = ref({
+        cnName: "#detailCnName",
+        table: "",
+        columns: [],
+        sortName: "",
+      });
+      return {
+        table,
+        extend,
+        editFormFields,
+        editFormOptions,
+        searchFormFields,
+        searchFormOptions,
+        columns,
+        detail,
+      };
+    },
+  });
+  </script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue
new file mode 100644
index 0000000..0b94c04
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail.vue
@@ -0,0 +1,200 @@
+<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/stockInfoDetail.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "id",
+      footer: "Foots",
+      cnName: "搴撳瓨淇℃伅鏄庣粏",
+      name: "stockInfoDetail",
+      url: "/StockInfoDetail/",
+      sortName: "id",
+    });
+    const editFormFields = ref({
+      deviceCode: "",
+      deviceName: "",
+      deviceType: "",
+      deviceStatus: "",
+      deviceIp: "",
+      devicePort: "",
+      devicePlcType: "",
+      deviceRemark: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          title: "鐗╂枡缂栧彿",
+          required: true,
+          field: "materielCode",
+          type: "string",
+        },
+        {
+          title: "鍗曟嵁缂栧彿",
+          required: true,
+          field: "materielName",
+          type: "string",
+        },
+        {
+          title: "鎵规鍙�",
+          required: true,
+          field: "orderNo",
+          type: "string",
+        },
+        {
+          title: "搴忓垪鍙�",
+          required: true,
+          field: "serialNumber",
+          type: "string",
+        },
+      ],
+      
+    ]);
+    const searchFormFields = ref({
+      materielCode: "",
+      materielName: "",
+      orderNo: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "鐗╂枡缂栧彿", field: "materielCode" },
+        { title: "鐗╂枡鍚嶇О", field: "materielName" },
+        { title: "鍗曟嵁缂栧彿", field: "orderNo" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "stockId",
+        title: "搴撳瓨淇℃伅涓婚敭",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "materielCode",
+        title: "鐗╂枡缂栧彿",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "materielName",
+        title: "鐗╂枡鍚嶇О",
+        type: "string",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "orderNo",
+        title: "鍗曟嵁缂栧彿",
+        type: "decimal",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "batchNo",
+        title: "鎵规鍙�",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "serialNumber",
+        title: "搴忓垪鍙�",
+        type: "int",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "stockQuantity",
+        title: "搴撳瓨鏁伴噺",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "outboundQuantity",
+        title: "鍑哄簱鏁伴噺",
+        type: "string",
+        width: 180,
+        align: "left",
+      },
+      {
+        field: "status",
+        title: "搴撳瓨鏄庣粏鐘舵��",
+        type: "string",
+        width: 120,
+        align: "left",
+        bind: { key: "stockStatusEmun", data: [] },
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail_Hty.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail_Hty.vue
new file mode 100644
index 0000000..e97706c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfoDetail_Hty.vue
@@ -0,0 +1,72 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/order/Dt_StockInfoDetail_Hty.js姝ゅ缂栧啓
+ -->
+<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/stockInfoDetail_Hty.js";
+    import { ref, defineComponent } from "vue";
+    export default defineComponent({
+        setup() {
+            const table = ref({
+                key: 'id',
+                footer: "Foots",
+                cnName: '鍘嗗彶搴撳瓨淇℃伅鏄庣粏',
+                name: 'stockInfoDetail_Hty',
+                url: "/StockInfoDetail_Hty/",
+                sortName: "id"
+            });
+            const editFormFields = ref({});
+            const editFormOptions = ref([]);
+            const searchFormFields = ref({});
+            const searchFormOptions = ref([]);
+            const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+                       {field:'stockId',title:'搴撳瓨淇℃伅涓婚敭',type:'int',width:110,require:true,align:'left',sort:true},
+                       {field:'materielCode',title:'鐗╂枡缂栧彿',type:'string',width:110,require:true,align:'left'},
+                       {field:'materielName',title:'鐗╂枡鍚嶇О',type:'string',width:180,require:true,align:'left'},
+                       {field:'orderNo',title:'鍗曟嵁缂栧彿',type:'string',width:110,require:true,align:'left'},
+                       {field:'batchNo',title:'鎵规鍙�',type:'string',width:110,require:true,align:'left'},
+                       {field:'serialNumber',title:'搴忓垪鍙�',type:'string',width:120,require:true,align:'left'},
+                       {field:'stockQuantity',title:'搴撳瓨鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+                       {field:'outboundQuantity',title:'鍑哄簱鏁伴噺',type:'decimal',width:110,require:true,align:'left'},
+                       {field:'status',title:'搴撳瓨鏄庣粏鐘舵��',type:'int',width:110,require:true,align:'left'},
+                       {field:'remark',title:'澶囨敞',type:'string',width:220,align:'left'},
+                       {field:'sourceId',title:'婧愪富閿�',type:'int',width:110,require:true,align:'left'},
+                       {field:'operateType',title:'澶囨敞',type:'string',width:110,require:true,align:'left'},
+                       {field:'creater',title:'鍒涘缓浜�',type:'string',width:110,require:true,align:'left'},
+                       {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+                       {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+                       {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}]);
+            const detail = ref({
+                cnName: "#detailCnName",
+                table: "#detailTable",
+                columns: [],
+                sortName: "",
+                key: ""
+            });
+            return {
+                table,
+                extend,
+                editFormFields,
+                editFormOptions,
+                searchFormFields,
+                searchFormOptions,
+                columns,
+                detail,
+            };
+        },
+    });
+</script>
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo_Hty.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo_Hty.vue
new file mode 100644
index 0000000..e0a65ff
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockInfo_Hty.vue
@@ -0,0 +1,67 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/鍘嗗彶搴撳瓨淇℃伅/Dt_StockInfo_Hty.js姝ゅ缂栧啓
+ -->
+<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/stockInfo_Hty.js";
+    import { ref, defineComponent } from "vue";
+    export default defineComponent({
+        setup() {
+            const table = ref({
+                key: 'id',
+                footer: "Foots",
+                cnName: '鍘嗗彶搴撳瓨淇℃伅',
+                name: 'stockInfo_Hty',
+                url: "/StockInfo_Hty/",
+                sortName: "id"
+            });
+            const editFormFields = ref({});
+            const editFormOptions = ref([]);
+            const searchFormFields = ref({});
+            const searchFormOptions = ref([]);
+            const columns = ref([{field:'id',title:'涓婚敭',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+                       {field:'palletCode',title:'鎵樼洏缂栧彿',type:'string',width:110,require:true,align:'left',sort:true},
+                       {field:'locationCode',title:'璐т綅缂栧彿',type:'string',width:110,align:'left'},
+                       {field:'isFull',title:'鏄惁婊$洏',type:'bool',width:110,require:true,align:'left'},
+                       {field:'stockStatus',title:'搴撳瓨鐘舵��',type:'int',width:110,require:true,align:'left'},
+                       {field:'remark',title:'澶囨敞',type:'string',width:220,align:'left'},
+                       {field:'sourceId',title:'婧愪富閿�',type:'int',width:110,require:true,align:'left'},
+                       {field:'operateType',title:'澶囨敞',type:'string',width:110,require:true,align:'left'},
+                       {field:'creater',title:'鍒涘缓浜�',type:'string',width:110,require:true,align:'left'},
+                       {field:'createDate',title:'鍒涘缓鏃堕棿',type:'datetime',width:150,require:true,align:'left',sort:true},
+                       {field:'modifier',title:'淇敼浜�',type:'string',width:100,align:'left'},
+                       {field:'modifyDate',title:'淇敼鏃ユ湡',type:'datetime',width:150,align:'left',sort:true}]);
+            const detail = ref({
+                cnName: "#detailCnName",
+                table: "#detailTable",
+                columns: [],
+                sortName: "",
+                key: ""
+            });
+            return {
+                table,
+                extend,
+                editFormFields,
+                editFormOptions,
+                searchFormFields,
+                searchFormOptions,
+                columns,
+                detail,
+            };
+        },
+    });
+</script>
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue
new file mode 100644
index 0000000..fc8b569
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/stock/stockView.vue
@@ -0,0 +1,392 @@
+
+<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/stockView.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "stockId",
+      footer: "Foots",
+      cnName: "搴撳瓨瑙嗗浘",
+      name: "stockView",
+      url: "/stockView/",
+      sortName: "stockId",
+    });
+    const editFormFields = ref({
+      palletCode: "",
+      locationCode: "",
+      locationName: "",
+    });
+    const editFormOptions = ref([
+      
+    ]);
+    const searchFormFields = ref({
+      palletCode: "",
+      // locationCode: "",
+      materielCode:"",
+      batchNo:""
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "鎵樼洏缂栧彿", field: "palletCode",type: "like" },
+        // { title: "璐т綅缂栧彿", field: "locationCode",type: "like" },
+        { title: "璐т綅鐘舵��", field: "locationStatus" ,type: "selectList",dataKey: "locationStatusEnum",data: [],},
+        { title: "搴撳瓨鐘舵��", field: "stockStatus",type: "selectList",dataKey: "stockStatusEmun",data: [],},
+      ],
+      [
+        { title: "鐗╂枡缂栧彿", field: "materielCode",type: "like"},
+        { title: "鎵规鍙�", field: "batchNo",type: "like"},
+        { title: "鎵�灞炰粨搴�", field: "warehouseId",type: "selectList",dataKey: "warehouses",data: [],},
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "stockId",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "palletCode",
+        title: "鎵樼洏缂栧彿",
+        type: "string",
+        width: 150,
+        link: true,
+        align: "left",
+      },
+      {
+        field: "locationCode",
+        title: "璐т綅缂栧彿",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "locationName",
+        title: "璐т綅鍚嶇О",
+        type: "string",
+        width: 270,
+        align: "left",
+      },
+      {
+        field: "warehouseId",
+        title: "鎵�灞炰粨搴�",
+        type: "string",
+        width: 80,
+        align: "left",
+        bind: { key: "warehouses", data: [] },
+      },
+      {
+        field: "roadwayNo",
+        title: "宸烽亾缂栧彿",
+        type: "decimal",
+        width: 100,
+        align: "left",
+        hidden:true
+      },
+      {
+        field: "materielCode",
+        title: "鎵�鍚墿鏂欑紪鍙�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "batchNo",
+        title: "鎵�鍚墿鏂欐壒娆�",
+        type: "string",
+        width: 200,
+        align: "left"
+      },
+      {
+        field: "materielInfo",
+        title: "鎵�鍚墿鏂欐渶鏃╀复鏈�",
+        type: "string",
+        width: 140,
+        align: "left",
+      },
+      {
+        field: "sumStock",
+        title: "鎬诲簱瀛�",
+        type: "string",
+        width: 140,
+        align: "left",
+      },
+      {
+        field: "row",
+        title: "璐т綅琛�",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "column",
+        title: "璐т綅鍒�",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "layer",
+        title: "璐т綅灞�",
+        type: "string",
+        width: 200,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "depth",
+        title: "璐т綅娣卞害",
+        type: "string",
+        width: 180,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "stockStatus",
+        title: "搴撳瓨鐘舵��",
+        type: "string",
+        width: 200,
+        align: "left",
+        bind: { key: "stockStatusEmun", data: [] },
+      },
+      {
+        field: "locationType",
+        title: "璐т綅绫诲瀷",
+        type: "string",
+        width: 100,
+        align: "left",
+        bind:{key: "locationTypeEnum", data: []}
+      },
+      {
+        field: "locationStatus",
+        title: "璐т綅鐘舵��",
+        type: "string",
+        width: 120,
+        align: "left",
+        bind: { key: "locationStatusEnum", data: [] },
+      },
+      {
+        field: "enalbeStatus",
+        title: "绂佺敤鐘舵��",
+        type: "string",
+        width: 80,
+        align: "left",
+        bind: { key: "enableStatusEnum", data: [] },
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+        hidden:true
+      },
+    ]);
+    const detail = ref({
+      cnName: "搴撳瓨鏄庣粏淇℃伅",
+      table: "StockInfoDetail",
+      columns: [
+        {
+          field: "id",
+          title: "Id",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          require: true,
+          align: "left",
+        },
+        {
+          field: "stockId",
+          title: "搴撳瓨淇℃伅涓婚敭",
+          type: "string",
+          width: 90,
+          align: "left",
+          hidden: true
+        },
+        {
+          field: "materielCode",
+          title: "鐗╂枡缂栧彿",
+          type: "string",
+          width: 110,
+          align: "left",
+        },
+        {
+          field: "materielName",
+          title: "鐗╂枡鍚嶇О",
+          type: "string",
+          width: 130,
+          align: "left",
+        },
+        {
+          field: "orderNo",
+          title: "鍗曟嵁缂栧彿",
+          type: "decimal",
+          width: 130,
+          align: "left",
+        },
+        {
+          field: "batchNo",
+          title: "鎵规鍙�",
+          type: "string",
+          width: 180,
+          align: "left",
+        },
+        {
+          field: "serialNumber",
+          title: "搴忓垪鍙�",
+          type: "int",
+          width: 120,
+          align: "left",
+          hidden: true,
+        },
+        {
+          field: "stockQuantity",
+          title: "搴撳瓨鏁伴噺",
+          type: "string",
+          width: 80,
+          align: "left",
+        },
+        {
+          field: "outboundQuantity",
+          title: "鍑哄簱鏁伴噺",
+          type: "string",
+          width: 80,
+          align: "left",
+        },
+        {
+          field: "unit",
+          title: "鍗曚綅",
+          type: "string",
+          width: 50,
+          align: "left",
+        },
+        {
+          field: "productionDate",
+          title: "鐢熶骇鏃ユ湡",
+          type: "string",
+          width: 80,
+          align: "left",
+        },
+        {
+          field: "effectiveDate",
+          title: "鏈夋晥鏃ユ湡",
+          type: "string",
+          width: 80,
+          align: "left",
+        },
+        {
+          field: "status",
+          title: "搴撳瓨鏄庣粏鐘舵��",
+          type: "string",
+          width: 120,
+          align: "left",
+          bind: { key: "stockStatusEmun", data: [] }
+        },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 90,
+          align: "left",
+          hidden: true
+        },
+        {
+          field: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 160,
+          align: "left",
+          hidden: true
+        },
+        {
+          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: 100,
+          align: "left",
+          hidden: true
+        },
+      ],
+      sortName: "id",
+      key: "id",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue
new file mode 100644
index 0000000..6cca058
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission.vue
@@ -0,0 +1,359 @@
+<template>
+  <div class="role-container">
+    <div class="role-tree-left flex-col">
+      <div class="title"><i class="el-icon-user"></i>瑙掕壊鍒楄〃</div>
+      <el-scrollbar class="el-role-list">
+        <el-tree
+          :data="tree"
+          @node-click="nodeClick"
+          node-key="id"
+          :default-expanded-keys="openKeys"
+          :expand-on-click-node="false"
+          style="padding: 5px 0; margin-right: 2px"
+        >
+          <template #default="{ data }">
+            <div class="action-group">
+              <div class="action-text">
+                {{ data.roleName }}
+              </div>
+            </div>
+          </template>
+        </el-tree>
+      </el-scrollbar>
+    </div>
+    <div class="role-tree-right flex-col">
+      <div class="title">
+        <div><i class="el-icon-folder-opened"></i>鑿滃崟鏉冮檺</div>
+        <el-button type="primary" @click="save">淇濆瓨</el-button>
+      </div>
+      <el-scrollbar class="el-role-list">
+        <el-tree
+          @check-change="leftCheckChange"
+          @check="nodeCheck"
+          :data="roleTree"
+          :show-checkbox="false"
+          style="padding: 15px"
+          node-key="id"
+          default-expand-all
+          :expand-on-click-node="false"
+        >
+          <template #default="{ data }">
+            <div class="action-group">
+              <div
+                class="action-text"
+                :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }"
+              >
+                <el-checkbox v-model="data.leftCk" @change="allChange(data)">{{
+                  // data.text + (data.isApp ? "(app)" : "")
+                  data.text 
+                }}</el-checkbox>
+              </div>
+              <div class="action-item">
+                <el-checkbox
+                  v-for="(item, index) in data.actions"
+                  :key="index"
+                  v-model="item.checked"
+                  @change="actionChange(data, item.checked)"
+                  >{{ item.text }}</el-checkbox
+                >
+              </div>
+            </div>
+          </template>
+        </el-tree>
+      </el-scrollbar>
+    </div>
+  </div>
+</template>
+
+<script>
+import { defineComponent, ref, reactive, getCurrentInstance } from "vue";
+import http from "@/api/http.js";
+export default defineComponent({
+  setup() {
+    const selectId = ref(-1);
+    const checked = ref(false);
+    const tree = reactive([]);
+    const list = reactive([]);
+    const roles = reactive([]);
+    const roleList = reactive([]);
+    const roleTree = reactive([]);
+    const openKeys = reactive([]);
+
+    const leftCheckChange = (node, selected) => {
+      node.actions.forEach((x, index) => {
+        x.checked = selected;
+      });
+    };
+    const nodeCheck = (node, data) => {
+      let rootData = roleList.find((x) => {
+        return x.id === node.pid;
+      });
+      if (rootData && rootData.actions.length) {
+        rootData.actions[0].checked =
+          node.actions.some((x) => {
+            return x.checked;
+          }) ||
+          data.halfCheckedNodes.some((x) => {
+            return x.id === node.pid;
+          });
+      }
+    };
+
+    const allChange = (data) => {
+      data.actions.forEach((item) => {
+        item.checked = data.leftCk;
+      });
+      if (!data.children) {
+        return;
+      }
+      setChildrenChecked(data, data.leftCk);
+    };
+    const setChildrenChecked = (data, ck) => {
+      data.children.forEach((item) => {
+        item.leftCk = ck;
+        item.actions.forEach((c) => {
+          c.checked = ck;
+        });
+        if (item.children) {
+          setChildrenChecked(item, ck);
+        }
+      });
+    };
+    const actionChange = (data, ck) => {
+      ck =
+        data.actions.filter((x) => {
+          return x.checked;
+        }).length == data.actions.length;
+      data.leftCk = ck;
+    };
+
+    const load = () => {
+      const url = "api/Sys_Role/getUserChildRoles";
+      http.post(url, {}, true).then((result) => {
+        
+        if (!result.status) return;
+        list.splice(0);
+        list.push(...result.data);
+        list.forEach((x) => {
+          if (x.parentId == 0) {
+            x.lv = 1;
+            x.children = [];
+            tree.push(x);
+            getTree(x.id, x);
+          }
+        });
+        openKeys.push(tree[0].id);
+        selectId.value = openKeys[0];
+      });
+    };
+    const getTree = (id, data) => {
+      list.forEach((x) => {
+        if (x.parentId == id) {
+          x.lv = data.lv + 1;
+          if (!data.children) data.children = [];
+          data.children.push(x);
+          getTree(x.id, x);
+        }
+      });
+    };
+    const nodeClick = (node, selected) => {
+      selectId.value = node.id;
+      getUserRole(node);
+    };
+    const getUserRole = (item) => {
+      selectId.value = item.id;
+      roleList.forEach((x) => {
+        x.actions.forEach((a) => {
+          a.checked = false;
+        });
+      });
+      let url = `/api/Sys_Role/getUserTreePermission?roleId=${item.id}`;
+      http.post(url, {}, true).then((result) => {
+        if (!result.status) return;
+        result.data.forEach((item) => {
+          if (item.actions.length == 0) return;
+          let sourceItem = roleList.find((f) => f.id == item.id);
+          if (!sourceItem) return;
+          item.actions.forEach((actions) => {
+            sourceItem.actions.forEach((soure) => {
+              if (soure.value == actions.value) {
+                soure.checked = true;
+              }
+            });
+          });
+        });
+      });
+    };
+
+    const getRoleTree = (id, data, isRootId) => {
+      roleList.forEach((x) => {
+        if (x.pid == id) {
+          x.lv = data.lv + 1;
+          if (isRootId) {
+            x.rootId = id;
+          }
+          if (!data.children) data.children = [];
+          data.children.push(x);
+          getRoleTree(x.id, x, isRootId);
+        }
+      });
+    };
+
+    const getCurrentTreePermission = () => {
+      let url = "/api/Sys_Role/getCurrentTreePermission";
+      http.post(url, {}, true).then((result) => {
+        if (!result.status) return;
+        roleList.splice(0);
+        roles.splice(0);
+        roleList.push(...result.data.tree);
+        roles.push(...result.data.roles);
+        roleList.forEach((x) => {
+          if (x.pid == 0) {
+            x.lv = 1;
+            x.children = [];
+            roleTree.push(x);
+            getRoleTree(x.id, x);
+          }
+        });
+      });
+    };
+    let $message =
+      getCurrentInstance().appContext.config.globalProperties.$message;
+    const save = () => {
+      if (selectId.value <= 0) {
+        return $message.error("璇烽�夋嫨瑙掕壊!");
+      }
+      let userPermissions = [];
+      roleList.forEach((x) => {
+        let checkedPermission = x.actions.filter((f) => {
+          return f.checked;
+        });
+        if (checkedPermission.length > 0) {
+          let actions = checkedPermission.map((m) => {
+            return { text: m.text, value: m.value };
+          });
+          userPermissions.push({
+            id: x.id,
+            actions: actions,
+          });
+        }
+      });
+      let url = `api/Sys_Role/SavePermission?roleId=${selectId.value}`;
+      http.post(url, userPermissions, true).then((result) => {
+        $message[result.status ? "success" : "error"](result.message);
+      });
+    };
+
+    load();
+    getCurrentTreePermission();
+    return {
+      list,
+      nodeClick,
+      checked,
+      tree,
+      selectId,
+      openKeys,
+      getUserRole,
+      roles,
+      roleList,
+      getCurrentTreePermission,
+      leftCheckChange,
+      nodeCheck,
+      roleTree,
+      allChange,
+      actionChange,
+      save,
+    };
+  },
+});
+</script>
+<style lang="less" scoped>
+.role-container {
+  position: absolute;
+  background: #f6f6f6;
+  height: 100%;
+  width: 100%;
+  padding: 10px;
+  display: flex;
+  .flex-col {
+    display: flex;
+    flex-direction: column;
+  }
+  .role-tree-left {
+    border: 1px solid #f2f2f2;
+    background: #fff;
+    width: 230px;
+    margin-right: 10px;
+    .title {
+      i {
+        margin-left: 10px;
+      }
+    }
+  }
+  .role-tree-right {
+    background: #fff;
+    border: 1px solid #f2f2f2;
+    width: 0;
+    flex: 1;
+    .title {
+      display: flex;
+      i {
+        margin-left: 10px;
+      }
+      div {
+        flex: 1;
+      }
+    }
+    .action-group {
+      display: flex;
+      // line-height: 32px;
+      justify-content: center;
+      align-items: center;
+      label {
+        float: left;
+      }
+      .action-text {
+        line-height: 33px;
+        label {
+          margin-right: 5px;
+        }
+      }
+    }
+  }
+  .title {
+    padding: 10px;
+    background: rgb(246 250 255);
+    font-weight: bold;
+    font-size: 14px;
+    letter-spacing: 2px;
+  }
+  .el-role-list {
+    flex: 1;
+    height: 0;
+    overflow-x: hidden;
+  }
+}
+.role-tree-left ::v-deep(.el-tree-node__content) {
+  cursor: pointer;
+  height: auto;
+  padding: 5px;
+  margin: 2px 10px;
+  font-size: 15px;
+}
+.role-tree-left ::v-deep(.el-tree-node__content:hover) {
+  background: #f4f4f4;
+  border-radius: 20px;
+}
+.role-tree-left ::v-deep(.is-current > .el-tree-node__content:first-child) {
+  background: #f2f2f2;
+  border-radius: 20px;
+}
+.role-tree-right ::v-deep(.el-tree-node__content) {
+  margin-bottom: 5px;
+  height: auto;
+}
+.role-tree-right ::v-deep(.el-checkbox__label) {
+  position: relative;
+  top: 2px;
+}
+</style>
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/system/Permission/RoleTree.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/system/Permission/RoleTree.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/PermissionPDA.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/PermissionPDA.vue
new file mode 100644
index 0000000..4dda402
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/PermissionPDA.vue
@@ -0,0 +1,369 @@
+<template>
+  <div class="role-container">
+    <div class="role-tree-left flex-col">
+      <div class="title"><i class="el-icon-user"></i>瑙掕壊鍒楄〃</div>
+      <el-scrollbar class="el-role-list">
+        <el-tree
+          :data="tree"
+          @node-click="nodeClick"
+          node-key="id"
+          :default-expanded-keys="openKeys"
+          :expand-on-click-node="false"
+          style="padding: 5px 0; margin-right: 2px"
+        >
+          <template #default="{ data }">
+            <div class="action-group">
+              <div class="action-text">
+                {{ data.roleName }}
+              </div>
+            </div>
+          </template>
+        </el-tree>
+      </el-scrollbar>
+    </div>
+    <div class="role-tree-right flex-col">
+      <div class="title">
+        <div><i class="el-icon-folder-opened"></i>PDA鑿滃崟鏉冮檺</div>
+        <el-button type="primary" @click="save">淇濆瓨</el-button>
+      </div>
+      <el-scrollbar class="el-role-list">
+        <el-tree
+        ref="eltreerole"
+          @check-change="leftCheckChange"
+          @check="nodeCheck"
+          :data="roleTree"
+          :show-checkbox="false"
+          style="padding: 15px"
+          node-key="id"
+          default-expand-all
+          :expand-on-click-node="false"
+        >
+          <template #default="{ data }">
+            <div class="action-group">
+              <div
+                class="action-text"
+                :style="{ width: (4 - data.lv) * 18 + 150 + 'px' }"
+              >
+                <el-checkbox v-model="data.leftCk" @change="allChange(data)">{{
+                  // data.text + (data.isApp ? "(app)" : "")
+                  data.text 
+                }}</el-checkbox>
+              </div>
+              <div class="action-item">
+                <el-checkbox
+                  v-for="(item, index) in data.actions"
+                  :key="index"
+                  v-model="item.checked"
+                  @change="actionChange(data, item.checked)"
+                  >{{ item.text }}</el-checkbox
+                >
+              </div>
+            </div>
+          </template>
+        </el-tree>
+      </el-scrollbar>
+    </div>
+  </div>
+</template>
+
+<script>
+import { defineComponent, ref, reactive, getCurrentInstance } from "vue";
+import http from "@/api/http.js";
+export default defineComponent({
+  setup() {
+    const selectId = ref(-1);
+    const checked = ref(false);
+    const tree = reactive([]);
+    const list = reactive([]);
+    const roles = reactive([]);
+    const roleList = reactive([]);
+    const roleTree = reactive([]);
+    const openKeys = reactive([]);
+
+    const leftCheckChange = (node, selected) => {
+      node.actions.forEach((x, index) => {
+        x.checked = selected;
+      });
+    };
+    const nodeCheck = (node, data) => {
+      let rootData = roleList.find((x) => {
+        return x.id === node.pid;
+      });
+      if (rootData && rootData.actions.length) {
+        rootData.actions[0].checked =
+          node.actions.some((x) => {
+            return x.checked;
+          }) ||
+          data.halfCheckedNodes.some((x) => {
+            return x.id === node.pid;
+          });
+      }
+    };
+
+    const allChange = (data) => {
+      data.actions.forEach((item) => {
+        item.checked = data.leftCk;
+      });
+      if (!data.children) {
+        return;
+      }
+      setChildrenChecked(data, data.leftCk);
+    };
+    const setChildrenChecked = (data, ck) => {
+      data.children.forEach((item) => {
+        item.leftCk = ck;
+        item.actions.forEach((c) => {
+          c.checked = ck;
+        });
+        if (item.children) {
+          setChildrenChecked(item, ck);
+        }
+      });
+    };
+    const actionChange = (data, ck) => {
+      ck =
+        data.actions.filter((x) => {
+          return x.checked;
+        }).length == data.actions.length;
+      data.leftCk = ck;
+    };
+
+    const load = () => {
+      const url = "api/Sys_Role/getUserChildRoles";
+      http.post(url, {}, true).then((result) => {
+        
+        if (!result.status) return;
+        list.splice(0);
+        list.push(...result.data);
+        list.forEach((x) => {
+          if (x.parentId == 0) {
+            x.lv = 1;
+            x.children = [];
+            tree.push(x);
+            getTree(x.id, x);
+          }
+        });
+        openKeys.push(tree[0].id);
+        selectId.value = openKeys[0];
+      });
+    };
+    const getTree = (id, data) => {
+      list.forEach((x) => {
+        if (x.parentId == id) {
+          x.lv = data.lv + 1;
+          if (!data.children) data.children = [];
+          data.children.push(x);
+          getTree(x.id, x);
+        }
+      });
+    };
+    const nodeClick = (node, selected) => {
+      selectId.value = node.id;
+      getUserRole(node);
+    };
+    const getUserRole = (item) => {
+      selectId.value = item.id;
+      roleList.forEach((x) => {
+        x.actions.forEach((a) => {
+          a.checked = false;
+        });
+      });
+      let url = `/api/Sys_Role/getUserTreePermissionPDA?roleId=${item.id}`;
+      http.post(url, {}, true).then((result) => {
+        if (!result.status) return;
+        result.data.forEach((item) => {
+          if (item.actions.length == 0) return;
+          let sourceItem = roleList.find((f) => f.id == item.id);
+          if (!sourceItem) return;
+          item.actions.forEach((actions) => {
+            sourceItem.actions.forEach((soure) => {
+              if (soure.value == actions.value) {
+                soure.checked = true;
+              }
+            });
+          });
+        });
+      });
+    };
+
+    const getRoleTree = (id, data, isRootId) => {
+      roleList.forEach((x) => {
+        if (x.pid == id) {
+          x.lv = data.lv + 1;
+          if (isRootId) {
+            x.rootId = id;
+          }
+          if (!data.children) data.children = [];
+          data.children.push(x);
+          getRoleTree(x.id, x, isRootId);
+        }
+      });
+    };
+
+    const getCurrentTreePermission = () => {
+      let url = "/api/Sys_Role/getCurrentTreePermissionPDA";
+      http.post(url, {}, true).then((result) => {
+        if (!result.status) return;
+        roleList.splice(0);
+        roles.splice(0);
+        roleList.push(...result.data.tree);
+        roles.push(...result.data.roles);
+        roleList.forEach((x) => {
+          if (x.pid == 0) {
+            x.lv = 1;
+            x.children = [];
+            roleTree.push(x);
+            getRoleTree(x.id, x);
+          }
+        });
+      });
+    };
+    let $message =
+      getCurrentInstance().appContext.config.globalProperties.$message;
+    const save = () => {
+      if (selectId.value <= 0) {
+        return $message.error("璇烽�夋嫨瑙掕壊!");
+      }
+      // var keys = this.$refs.eltreerole.getCheckedKeys().concat(this.$refs.eltreerole.getHalfCheckedKeys());
+      // console.log(keys)
+      let userPermissions = [];
+      // keys.forEach((x) => {
+      //   userPermissions.push({
+      //     id: x,
+      //     actions: null,
+      //     text: "PDA",
+      //   });
+      // });
+      roleList.forEach((x) => {
+        let checkedPermission = x.actions.filter((f) => {
+          return f.checked;
+        });
+        if (checkedPermission.length > 0) {
+          let actions = checkedPermission.map((m) => {
+            return { text: m.text, value: m.value };
+          });
+          userPermissions.push({
+            id: x.id,
+            actions: actions,
+          });
+        }
+      });
+      let url = `api/Sys_Role/SavePermissionPDA?roleId=${selectId.value}`;
+      http.post(url, userPermissions, true).then((result) => {
+        $message[result.status ? "success" : "error"](result.message);
+      });
+    };
+
+    load();
+    getCurrentTreePermission();
+    return {
+      list,
+      nodeClick,
+      checked,
+      tree,
+      selectId,
+      openKeys,
+      getUserRole,
+      roles,
+      roleList,
+      getCurrentTreePermission,
+      leftCheckChange,
+      nodeCheck,
+      roleTree,
+      allChange,
+      actionChange,
+      save,
+    };
+  },
+});
+</script>
+<style lang="less" scoped>
+.role-container {
+  position: absolute;
+  background: #f6f6f6;
+  height: 100%;
+  width: 100%;
+  padding: 10px;
+  display: flex;
+  .flex-col {
+    display: flex;
+    flex-direction: column;
+  }
+  .role-tree-left {
+    border: 1px solid #f2f2f2;
+    background: #fff;
+    width: 230px;
+    margin-right: 10px;
+    .title {
+      i {
+        margin-left: 10px;
+      }
+    }
+  }
+  .role-tree-right {
+    background: #fff;
+    border: 1px solid #f2f2f2;
+    width: 0;
+    flex: 1;
+    .title {
+      display: flex;
+      i {
+        margin-left: 10px;
+      }
+      div {
+        flex: 1;
+      }
+    }
+    .action-group {
+      display: flex;
+      // line-height: 32px;
+      justify-content: center;
+      align-items: center;
+      label {
+        float: left;
+      }
+      .action-text {
+        line-height: 33px;
+        label {
+          margin-right: 5px;
+        }
+      }
+    }
+  }
+  .title {
+    padding: 10px;
+    background: rgb(246 250 255);
+    font-weight: bold;
+    font-size: 14px;
+    letter-spacing: 2px;
+  }
+  .el-role-list {
+    flex: 1;
+    height: 0;
+    overflow-x: hidden;
+  }
+}
+.role-tree-left ::v-deep(.el-tree-node__content) {
+  cursor: pointer;
+  height: auto;
+  padding: 5px;
+  margin: 2px 10px;
+  font-size: 15px;
+}
+.role-tree-left ::v-deep(.el-tree-node__content:hover) {
+  background: #f4f4f4;
+  border-radius: 20px;
+}
+.role-tree-left ::v-deep(.is-current > .el-tree-node__content:first-child) {
+  background: #f2f2f2;
+  border-radius: 20px;
+}
+.role-tree-right ::v-deep(.el-tree-node__content) {
+  margin-bottom: 5px;
+  height: auto;
+}
+.role-tree-right ::v-deep(.el-checkbox__label) {
+  position: relative;
+  top: 2px;
+}
+</style>
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue
new file mode 100644
index 0000000..51df000
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Dictionary.vue
@@ -0,0 +1,316 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Dictionary.js姝ゅ缂栧啓
+ -->
+<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_Dictionary.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "dicId",
+      footer: "Foots",
+      cnName: "瀛楀吀鏁版嵁",
+      name: "Sys_Dictionary",
+      url: "/Sys_Dictionary/",
+      sortName: "dicId",
+    });
+    const editFormFields = ref({
+      dicNo: "",
+      dicName: "",
+      parentId: "",
+      orderNo: "",
+      enable: "",
+      sql: "",
+      remark: "",
+    });
+    const editFormOptions = ref([
+      [
+        { title: "瀛楀吀缂栧彿", required: true, field: "dicNo" },
+        { title: "瀛楀吀鍚嶇О", required: true, field: "dicName" },
+        { title: "鐖剁骇ID", required: true, field: "parentId", type: "number" },
+      ],
+      [
+        { title: "鎺掑簭鍙�", field: "orderNo", type: "number" },
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍚敤",
+          required: true,
+          field: "enable",
+          type: "select",
+        },
+      ],
+      [
+        { title: "sql璇彞", field: "sql", colSize: 8, type: "textarea" },
+        { title: "澶囨敞", field: "remark", type: "textarea" },
+      ],
+    ]);
+    const searchFormFields = ref({
+      dicNo: "",
+      dicName: "",
+      parentId: "",
+      enable: "",
+      createDate: "",
+      modifyDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "瀛楀吀缂栧彿", field: "dicNo" },
+        { title: "瀛楀吀鍚嶇О", field: "dicName", type: "textarea" },
+        { title: "鐖剁骇ID", field: "parentId", type: "number" },
+      ],
+      [
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍚敤",
+          field: "enable",
+          type: "select",
+        },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+        { title: "淇敼鏃堕棿", field: "modifyDate", type: "datetime" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "dicId",
+        title: "瀛楀吀ID",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "dicNo",
+        title: "瀛楀吀缂栧彿",
+        type: "string",
+        width: 90,
+        require: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "dicName",
+        title: "瀛楀吀鍚嶇О",
+        type: "string",
+        link: true,
+        width: 140,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "parentId",
+        title: "鐖剁骇ID",
+        type: "int",
+        width: 90,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "config",
+        title: "閰嶇疆椤�",
+        type: "string",
+        width: 300,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "sql",
+        title: "sql璇彞",
+        type: "string",
+        width: 200,
+        align: "left",
+      },
+      {
+        field: "orderNo",
+        title: "鎺掑簭鍙�",
+        type: "int",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "remark",
+        title: "澶囨敞",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "enable",
+        title: "鏄惁鍚敤",
+        type: "byte",
+        bind: { key: "enable", data: [] },
+        width: 90,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 130,
+        hidden: true,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "createDate",
+        title: "鍒涘缓鏃堕棿",
+        type: "datetime",
+        width: 150,
+        readonly: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "modifier",
+        title: "淇敼浜�",
+        type: "string",
+        width: 130,
+        hidden: true,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "modifyDate",
+        title: "淇敼鏃堕棿",
+        type: "datetime",
+        width: 150,
+        readonly: true,
+        align: "left",
+        sort: true,
+      },
+    ]);
+    const detail = ref({
+      cnName: "瀛楀吀鏄庣粏",
+      table: "Sys_DictionaryList",
+      columns: [
+        {
+          field: "dicList_ID",
+          title: "DicList_ID",
+          type: "int",
+          width: 90,
+          hidden: true,
+          readonly: true,
+          require: true,
+          align: "left",
+        },
+        {
+          field: "dicId",
+          title: "鏁版嵁婧怚D",
+          type: "int",
+          width: 90,
+          readonly: true,
+          align: "left",
+          sort: true,
+        },
+        {
+          field: "dicValue",
+          title: "鏁版嵁婧怴alue",
+          type: "string",
+          width: 90,
+          edit: { type: "text" },
+          align: "left",
+        },
+        {
+          field: "dicName",
+          title: "鏁版嵁婧怲ext",
+          type: "string",
+          width: 90,
+          edit: { type: "text" },
+          align: "left",
+        },
+        {
+          field: "orderNo",
+          title: "鎺掑簭鍙�",
+          type: "int",
+          width: 90,
+          edit: { type: "text" },
+          align: "left",
+        },
+        {
+          field: "remark",
+          title: "澶囨敞",
+          type: "string",
+          width: 90,
+          edit: { type: "text" },
+          align: "left",
+        },
+       
+        {
+          field: "createID",
+          title: "CreateID",
+          type: "int",
+          width: 90,
+          hidden: true,
+          align: "left",
+        },
+        {
+          field: "creater",
+          title: "鍒涘缓浜�",
+          type: "string",
+          width: 130,
+          readonly: true,
+          align: "left",
+        },
+        {
+          field: "createDate",
+          title: "鍒涘缓鏃堕棿",
+          type: "datetime",
+          width: 90,
+          readonly: true,
+          align: "left",
+          sort: true,
+        },
+        
+        {
+          field: "modifier",
+          title: "淇敼浜�",
+          type: "string",
+          width: 130,
+          align: "left",
+        },
+        {
+          field: "modifyDate",
+          title: "淇敼鏃堕棿",
+          type: "datetime",
+          width: 90,
+          align: "left",
+          sort: true,
+        },
+      ],
+      sortName: "dicId",
+      key: "dicId",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/system/Sys_DictionaryList.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_DictionaryList.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue
new file mode 100644
index 0000000..67e913d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Log.vue
@@ -0,0 +1,157 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Log.js姝ゅ缂栧啓
+ -->
+ <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_Log.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "Id",
+      footer: "Foots",
+      cnName: "绯荤粺鏃ュ織",
+      name: "Sys_Log",
+      url: "/Sys_Log/",
+      sortName: "Id",
+    });
+    const editFormFields = ref({});
+    const editFormOptions = ref([]);
+    const searchFormFields = ref({
+      url: "",
+      requestParam: "",
+      responseParam: "",
+      beginDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "璇锋眰鍦板潃", field: "url", type: "like" },
+        { title: "璇锋眰鍙傛暟", field: "requestParam", type: "like" },
+        { title: "鍝嶅簲鍙傛暟", field: "responseParam", type: "like" },
+      ],
+      [{ title: "寮�濮嬫椂闂�", field: "beginDate", type: "datetime" }],
+    ]);
+    const columns = ref([
+      {
+        field: "id",
+        title: "Id",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "beginDate",
+        title: "寮�濮嬫椂闂�",
+        type: "datetime",
+        width: 140,
+        align: "left",
+        sortable: true,
+      },
+      {
+        field: "elapsedTime",
+        title: "鏃堕暱",
+        type: "int",
+        width: 60,
+        align: "left",
+      },
+      {
+        field: "endDate",
+        title: "缁撴潫鏃堕棿",
+        type: "datetime",
+        width: 150,
+        hidden: true,
+        align: "left",
+        sortable: true,
+      },
+      {
+        field: "requestParam",
+        title: "璇锋眰鍙傛暟",
+        type: "string",
+        width: 70,
+        align: "left",
+      },
+      {
+        field: "responseParam",
+        title: "鍝嶅簲鍙傛暟",
+        type: "string",
+        width: 70,
+        align: "left",
+      },
+      {
+        field: "url",
+        title: "璇锋眰鍦板潃",
+        type: "string",
+        width: 110,
+        align: "left",
+      },
+      {
+        field: "userName",
+        title: "鐢ㄦ埛鍚嶇О",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "success",
+        title: "鍝嶅簲鐘舵��",
+        type: "int",
+        bind: { key: "restatus", data: [] },
+        width: 80,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "userIP",
+        title: "鐢ㄦ埛IP",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "userId",
+        title: "鐢ㄦ埛ID",
+        type: "int",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      columns: [],
+      sortName: "",
+      key: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+  
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue
new file mode 100644
index 0000000..4eee23d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Menu.vue
@@ -0,0 +1,672 @@
+<template>
+  <div class="menu-container">
+    <!-- <el-input/> -->
+    <vol-box
+      :width="940"
+      :mask="true"
+      :height="500"
+      title="鍥炬爣鍒楄〃"
+      v-model="model"
+    >
+      <Icons :onSelect="onSelect"></Icons>
+      <template #footer>
+        <el-button type="primary" size="mini" @click="model = false"
+          >纭� 璁�</el-button
+        >
+      </template>
+    </vol-box>
+    <vol-box
+      :width="600"
+      :mask="true"
+      :height="270"
+      title="鍏朵粬鏉冮檺"
+      v-model="actionModel"
+    >
+      <vol-form
+        ref="actionForm"
+        :formRules="actionOptions"
+        :formFields="actionFields"
+      >
+        <template #header>
+          <div>
+            <el-alert show-icon type="success">
+              閰嶇疆鐨勫叾浠栨潈闄�
+              <br />1銆佹坊鍔犳柊鐨勬潈闄愬悗璇峰湪vue椤圭洰涓璫onfig鏂囦欢澶逛笅buttns.js娣诲姞姝ゆ潈闄愮殑鎸夐挳銆�
+              <br />2銆佸鏋滄潈闄愬彧鍦ㄦ煇灏戞暟鍑犱釜鍔熻兘涓娇鐢�,鍦╲ue鐨勫搴旈〉闈㈡墿灞昬xtension鏂囦欢鎵惧埌瀵瑰簲js,娣诲姞鍒癳l-buttons瀵硅薄涓�,鏍煎紡鍚宑onfig鏂囦欢澶逛笅buttns.js涓�鏍枫��
+            </el-alert>
+          </div>
+        </template>
+      </vol-form>
+      <template #footer>
+        <el-button type="primary" size="mini" @click="otherAction"
+          >纭� 璁�</el-button
+        >
+      </template>
+    </vol-box>
+
+    <!-- v-if="tree.length" -->
+    <div class="menu-left">
+      <div class="m-title"><i class="el-icon-warning-outline"></i>鑿滃崟鍒楄〃</div>
+      <el-scrollbar style="height: 100%; width: 200px">
+        <VolMenu
+          :onSelect="getTreeItem"
+          :list="tree"
+          :isCollapse="false"
+        ></VolMenu>
+      </el-scrollbar>
+    </div>
+    <div class="menu-right">
+      <el-scrollbar style="height: 100%">
+        <el-alert
+          title="鑿滃崟閰嶇疆璇存槑"
+          type="warning"
+          :closable="false"
+          show-icon
+        >
+          <div>
+            1銆佸鏋滄槸鐢ㄤ唬鐮佺敓鍣ㄧ敓鎴愮殑Vue椤甸潰,Url涓篤ue椤圭洰涓璼rc->router->viewGrid.js瀵瑰簲琛ㄥ悕鐨刾ath灞炴��
+          </div>
+          <div style="padding-top: 5px">
+            2銆� 濡傛灉鍙槸寤轰竴绾ц彍鍗曟垨绌鸿彍鍗晆rl涓嶇敤濉啓,銆愯鍥�/琛ㄥ悕銆戝~鍐�.鎴栬��/
+          </div>
+        </el-alert>
+        <div style="padding: 0px 30px 0 20px">
+          <vol-form
+            class="form-content"
+            ref="form"
+            :formRules="options"
+            :formFields="fields"
+          >
+          </vol-form>
+          <div>
+            <div class="auth-group">
+              <label style="width: 100px">鏉冮檺鎸夐挳锛�</label>
+              <div class="ck">
+                <el-checkbox-group v-model="actions">
+                  <el-checkbox
+                    v-for="(item, index) in action"
+                    :key="index"
+                    :label="item.value"
+                    >{{ item.text + "(" + item.value + ")" }}</el-checkbox
+                  >
+                </el-checkbox-group>
+              </div>
+            </div>
+          </div>
+          <div style="padding-left: 100px">
+            <el-button @click="handleCheckAll" size="mini" type="success" plain
+              ><i class="el-icon-check"></i>鍏� 閫�</el-button
+            >
+            <el-button
+              @click="actionModel = true"
+              size="mini"
+              type="primary"
+              plain
+              ><i class="el-icon-plus"></i>鍏朵粬鏉冮檺</el-button
+            >
+          </div>
+          <div class="m-btn">
+            <el-button type="primary" @click="save"
+              ><i class="el-icon-check"></i>淇濆瓨</el-button
+            >
+            <el-button type="success" @click="add"
+              ><i class="el-icon-plus"></i>鏂板缓</el-button
+            >
+            <el-button type="warning" @click="addChild"
+              ><i class="el-icon-plus"></i>娣诲姞瀛愮骇</el-button
+            >
+            <el-button type="primary" plain @click="addBrother"
+              ><i class="el-icon-circle-plus"></i> 娣诲姞鍚岀骇</el-button
+            >
+            <el-button type="warning" plain @click="delMenu"
+              ><i class="el-icon-delete"></i> 鍒犻櫎鑿滃崟</el-button
+            >
+          </div>
+        </div>
+      </el-scrollbar>
+    </div>
+  </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+import Icons from "@/components/basic/Icons.vue";
+import VolMenu from "@/components/basic/VolElementMenu.vue";
+import {
+  defineComponent,
+  reactive,
+  ref,
+  toRefs,
+  onMounted,
+  h,
+  resolveComponent,
+} from "vue";
+
+import http from "@/api/http";
+export default defineComponent({
+  components: {
+    VolForm: VolForm,
+    VolBox: VolBox,
+    Icons: Icons,
+    VolMenu,
+  },
+  methods: {
+    otherAction() {
+      this.$refs.actionForm.validate(() => {
+        let exist = this.action.some((x) => {
+          return (
+            x.text == this.actionFields.name ||
+            x.value == this.actionFields.value
+          );
+        });
+        if (exist) {
+          return this.$message.error("鏉冮檺鍚嶇О鎴栨潈闄愬�煎凡瀛樺湪");
+        }
+        this.actionModel = false;
+        this.action.push({
+          text: this.actionFields.name,
+          value: this.actionFields.value,
+        });
+      });
+    },
+    handleCheckAll() {
+      if (this.actions == this.action.length) {
+        this.checkAll = false;
+      } else {
+        this.checkAll = !this.checkAll;
+      }
+      if (this.checkAll) {
+        this.actions = this.action.map((x) => {
+          return x.value;
+        });
+      } else {
+        this.actions = [];
+      }
+    },
+    checkAllGroupChange(data) {
+      if (data.length === this.action.length) {
+        this.checkAll = true;
+      } else if (data.length > 0) {
+        this.checkAll = false;
+      } else {
+        this.checkAll = false;
+      }
+    },
+    add(obj) {
+      this.$refs.form.reset(
+        Object.assign({ enable: 1 }, obj || { parentId: 0 })
+      );
+      this.icon = "";
+      // this.actions = [];
+      //2020.08.07鏂板缓鑿滃崟鏃讹紝榛樿閫変腑鏌ヨ鎸夐挳鏉冮檺
+      this.actions = ["Search"];
+    },
+    addChild() {
+      if (!this.isSelect()) return;
+      this.add({ parentId: this.fields.menuId });
+    },
+    addBrother() {
+      if (!this.isSelect()) return;
+      this.add({ parentId: this.fields.parentId });
+    },
+    delMenu() {
+      //2020.08.07澧炲姞鑿滃崟鍒犻櫎鍔熻兘
+      if (this.fields.menuId == 0) {
+        return this.$Message.error("璇烽�夋嫨鑿滃崟");
+      }
+
+      let tigger = false;
+      this.$confirm(
+        "纭瑕佸垹闄ゃ��" + this.fields.menuName + "銆戣彍鍗曞悧锛�",
+        "璀﹀憡",
+        {
+          confirmButtonText: "纭畾",
+          cancelButtonText: "鍙栨秷",
+          type: "warning",
+          center: true,
+        }
+      ).then(() => {
+        if (tigger) return;
+        tigger = true;
+        let menuId = this.fields.menuId;
+        this.http
+          .post(
+            "/api/Sys_Menu/delMenu?menuId=" + menuId,
+            {},
+            "姝e湪鍒犻櫎鏁版嵁...."
+          )
+          .then((x) => {
+            if (!x.status) return this.$Message.error(x.message);
+            this.$refs.form.reset();
+            this.$Message.info(x.message);
+            this.initTree();
+          });
+      });
+    },
+    save() {
+      this.$refs.form.validate(() => {
+        this.fields.auth = "";
+        if (this.actions) {
+          this.fields.auth = this.action.filter((x) => {
+            return this.actions.indexOf(x.value) != -1;
+          });
+        }
+        if (
+          this.fields.auth &&
+          this.fields.auth instanceof Array &&
+          this.fields.auth.length > 0
+        ) {
+          this.fields.auth = JSON.stringify(this.fields.auth);
+        } else {
+          this.fields.auth = "";
+        }
+        this.http.post("/api/Sys_Menu/save", this.fields, true).then((x) => {
+          if (!x.status) {
+            this.$Message.error(x.message);
+            return;
+          }
+
+          this.$Message.info(x.message);
+          if (this.fields.menuId) {
+            this.tree.forEach((t) => {
+              if (t.id == this.fields.menuId) {
+                t.name = this.fields.menuName;
+                t.orderNo = this.fields.orderNo;
+                t.parentId = this.fields.parentId;
+              }
+            });
+            return;
+          }
+          this.fields.menuId = x.data.menuId;
+          this.fields.createDate = x.data.createDate;
+          this.tree.push({
+            id: x.data.menuId,
+            name: this.fields.menuName,
+            orderNo: this.fields.orderNo,
+            parentId: this.fields.parentId,
+          });
+          console.log(this.tree);
+        });
+      });
+    },
+    isSelect() {
+      let id = this.fields.menuId;
+      if (!id) {
+        this.$message.error("璇烽�夋嫨鑺傜偣");
+        return false;
+      }
+      return true;
+    },
+    onSelect(icon) {
+      this.fields.icon = icon;
+      this.$message.info(icon);
+    },
+    onOpenChange(node) {
+      if (node.length == 0) return;
+      this.getTreeItem(node[node.length > 1 ? node.length - 1 : 0]);
+    },
+  },
+  created() {},
+  setup() {
+    const tree = ref([]);
+    const actionValues = ref([]);
+    const action = ref([
+      { text: "鏌ヨ", value: "Search" },
+      { text: "鏂板缓", value: "Add" },
+      { text: "鍒犻櫎", value: "Delete" },
+      { text: "缂栬緫", value: "Update" },
+      { text: "瀵煎叆", value: "Import" },
+      { text: "瀵煎嚭", value: "Export" },
+      // { text: "涓婁紶", value: "Upload" },
+      // { text: "瀹℃牳", value: "Audit" },
+    ]);
+    const actions = ref([]);
+    actionValues.value = action.value.map((x) => {
+      return x.value;
+    });
+    const initTree = () => {
+      http.post("/api/Sys_Menu/getMenu", {}, true).then((x) => {
+        x.forEach((item) => {
+          item.icon = "el-icon-menu";
+        });
+
+        tree.value = x;
+      });
+    };
+    onMounted(() => {
+      initTree();
+    });
+    const actionModel = ref(false);
+    const checkAll = ref(false);
+    const model = ref(false);
+
+    const fields = ref({
+      menuId: 0,
+      parentId: 0,
+      menuName: "",
+      tableName: "",
+      url: "",
+      auth: "",
+      icon: "",
+      orderNo: "",
+      enable: 1,
+      menuType: 0,
+    });
+
+    const actionFields = ref({
+      name: "",
+      value: "",
+    });
+    const actionOptions = ref([
+      [
+        {
+          title: "鏉冮檺鍚嶇О",
+          field: "name",
+          placeholder: "鏉冮檺鍚嶇О,濡傦細鏂板",
+          required: true,
+        },
+      ],
+      [
+        {
+          title: "鏉� 闄� 鍊�",
+          field: "value",
+          placeholder: "鏉冮檺鍊�,濡傦細Add",
+          required: true,
+        },
+      ],
+    ]);
+
+    const options = ref([
+      [
+        {
+          title: "鑿� 鍗� ID",
+          field: "menuId",
+          placeholder: "鑿滃崟ID",
+          min: 0,
+          disabled: true,
+        },
+        {
+          title: "鐖� 绾� ID",
+          required: true,
+          type: "number",
+          min: 0,
+          field: "parentId",
+          // min: 0, max: 50
+        },
+        {
+          title: "鑿滃崟鍚嶇О",
+          field: "menuName",
+          required: true,
+        },
+      ],
+      [
+        {
+          title: "瑙嗗浘/琛ㄥ悕",
+          field: "tableName",
+          placeholder: "涓庝唬鐮佺敓鎴愬櫒浣跨敤鐨勫悕绉扮浉鍚�",
+          required: true,
+        },
+        {
+          title: "(璺敱)Url",
+          field: "url",
+          placeholder: "瑙�:涓婇潰鑿滃崟閰嶇疆璇存槑",
+        },
+        {
+          title: "鎺掑簭鍙�",
+          field: "orderNo",
+          type: "number",
+          min: 0,
+          placeholder: "鍊艰秺澶ф樉绀鸿秺闈犲墠",
+          required: true,
+        },
+      ],
+      [
+        {
+          title: "鏄惁鍚敤",
+          field: "enable",
+          required: true,
+          type: "select",
+          colSize: 4,
+          data: [
+            { key: 1, value: "鍚敤" },
+            { key: 2, value: "鍚敤涓嶆樉绀�" },
+            { key: 0, value: "绂佺敤" },
+          ],
+        },
+        {
+          title: "鑿滃崟绫诲瀷",
+          field: "menuType",
+          required: true,
+          type: "select",
+          colSize: 4,
+          data: [
+            { key: 0, value: "PC绔彍鍗�" },
+            { key: 1, value: "绉诲姩绔彍鍗�" },
+          ],
+        },
+        {
+          title: "鍥炬爣Icon",
+          field: "icon",
+          render: (h) => {
+            return h("div", {}, [
+              h("i", {
+                style: {
+                  "font-size": "25px",
+                  margin: "0px 9px",
+                  position: "relative",
+                  top: "4px",
+                },
+                class: [fields.value.icon],
+              }),
+              h(
+                resolveComponent("el-button"),
+                {
+                  size: "small",
+                  style: { padding: "0px 9px" },
+                  type: "primary",
+                  plain: true,
+                  onClick: () => {
+                    model.value = true;
+                  },
+                },
+                "閫夋嫨鍥炬爣"
+              ),
+            ]);
+          },
+        },
+      ],
+    ]);
+    const refForm = ref();
+    const getTreeItem = (node) => {
+      http
+        .post("api/Sys_Menu/getTreeItem?menuId=" + node, {}, true)
+        .then((x) => {
+          try {
+            fields.value.icon = x.icon;
+            if (x.auth) {
+              x.auth = JSON.parse(x.auth);
+              action.value.splice(8, action.value.length);
+
+              actions.value = x.auth.map((element) => {
+                if (actionValues.value.indexOf(element.value) == -1) {
+                  action.value.push(element);
+                }
+                return element.value;
+              });
+            } else {
+              action.value.splice(8, action.value.length);
+              x.auth = [];
+              fields.value.icon = "";
+              actions.value = [];
+            }
+          } catch (error) {
+            console.log("鑿滃崟鍔熻兘鏉冮檺杞崲鎴怞SON澶辫触:" + x.auth);
+            x.auth = [];
+            //   this.icon = "";
+            actions.value = [];
+          }
+          refForm.value.reset(x);
+        });
+    };
+    return {
+      tree,
+      initTree,
+      action,
+      actions,
+      actionValues,
+      actionModel,
+      checkAll,
+      model,
+      fields,
+      actionFields,
+      actionOptions,
+      options,
+      form: refForm,
+      getTreeItem,
+    };
+  },
+  data() {
+    return {};
+  },
+});
+</script>
+
+<style lang="less" scoped>
+.on-icon {
+  line-height: 20px;
+  position: relative;
+
+  .remove {
+    display: none;
+    color: red;
+    right: 7px;
+    position: absolute;
+    top: -14px;
+    font-size: 13px;
+  }
+}
+
+.on-icon:hover {
+  cursor: pointer;
+
+  .remove {
+    display: block;
+  }
+}
+
+.action {
+  width: 100%;
+  display: flex;
+
+  margin-bottom: 15px;
+
+  .ivu-checkbox-wrapper {
+    margin-right: 20px;
+  }
+
+  .ck {
+    line-height: 33px;
+    display: inline-block;
+    display: flex;
+
+    label:first-child {
+      min-width: 58px;
+      float: left;
+      margin-top: 1px;
+    }
+
+    > div {
+      float: left;
+    }
+  }
+}
+
+.menu-container {
+  display: flex;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  padding: 8px;
+  background: #f7f7f7;
+
+  .menu-left {
+    height: 100%;
+    width: 201px;
+    border: 1px solid #eee;
+    display: flex;
+    background: white;
+    flex-direction: column;
+
+    .module-name {
+      border-radius: 0px;
+      /* height: 5%; */
+      line-height: 21px;
+      margin-bottom: 0;
+    }
+  }
+
+  .menu-right {
+    flex: 1;
+    border-radius: 3px;
+    border: 1px solid #eee;
+    background: white;
+    margin-left: 9px;
+    margin-right: 3px;
+  }
+}
+
+.m-btn {
+  margin-top: 20px;
+  text-align: center;
+}
+
+.m-title {
+  line-height: 40px;
+  font-size: 15px;
+  background: #66b1ff0f;
+  font-weight: bold;
+  padding: 6px 16px;
+  border-bottom: 1px solid #eee;
+
+  i {
+    padding-right: 5px;
+  }
+}
+
+.form-content {
+  margin-top: 30px;
+}
+
+.menu-left ::v-deep(.el-scrollbar__bar.is-vertical) {
+  width: 2px;
+}
+
+.auth-group {
+  display: flex;
+
+  label {
+    display: inline-block;
+    width: 100px;
+    text-align: right;
+    color: #797979;
+    font-size: 14px;
+  }
+
+  .ck {
+    flex: 1;
+  }
+
+  .el-checkbox {
+    min-width: 105px;
+    width: auto !important;
+    margin-right: 5px;
+    display: inline-block;
+    padding-bottom: 10px;
+  }
+}
+
+.auth-group ::v-deep(.el-checkbox__label) {
+  padding-left: 4px;
+}
+</style>
+
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue
new file mode 100644
index 0000000..7da98d2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role.vue
@@ -0,0 +1,220 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/system/Sys_Role.js姝ゅ缂栧啓
+ -->
+<template>
+  <view-grid
+    ref="grid"
+    :columns="columns"
+    :detail="detail"
+    :editFormFields="editFormFields"
+    :editFormOptions="editFormOptions"
+    :searchFormFields="searchFormFields"
+    :searchFormOptions="searchFormOptions"
+    :table="table"
+    :extend="extend"
+  >
+  </view-grid>
+</template>
+<script>
+import extend from "@/extension/system/Sys_Role.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "roleId",
+      footer: "Foots",
+      cnName: "瑙掕壊绠$悊",
+      name: "Sys_Role",
+      url: "/Sys_Role/",
+      sortName: "roleId",
+    });
+    const editFormFields = ref({
+      parentId: "",
+      roleName: "",
+      deptId: "",
+      enable: "",
+      // creater: "",
+      // createDate: "",
+      // modifier: "",
+      // modifyDate: "",
+    });
+    const editFormOptions = ref([
+      [
+        {
+          dataKey: "tree_roles",
+          data: [],
+          title: "鐖剁骇ID",
+          required: true,
+          field: "parentId",
+          type: "select",
+        },
+        { title: "瑙掕壊鍚嶇О", required: true, field: "roleName" },
+        {
+          title: "鏁版嵁鏉冮檺",
+          field: "authorityScope",
+          type: "selectList",
+          dataKey: "authorityScope",
+          data: [],
+        },
+      ],
+      [
+        { title: "閮ㄩ棬ID", field: "deptId" },
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍚敤",
+          field: "enable",
+          type: "switch",
+        },
+      ],
+    ]);
+    const searchFormFields = ref({
+      roleName: "",
+      deptId: "",
+      enable: "",
+      createDate: "",
+      modifyDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "瑙掕壊鍚嶇О", field: "roleName", type: "text" },
+        { title: "閮ㄩ棬ID", field: "deptId", type: "text" },
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍚敤",
+          field: "enable",
+          type: "select",
+        },
+      ],
+      [
+        { title: "鍒涘缓鏃堕棿", field: "createDate", type: "datetime" },
+        { title: "淇敼鏃堕棿", field: "modifyDate", type: "datetime" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "roleId",
+        title: "瑙掕壊ID",
+        type: "int",
+        width: 70,
+        readonly: true,
+        require: true,
+        align: "left",
+        sortable: true,
+      },
+      {
+        field: "parentId",
+        title: "鐖剁骇ID",
+        type: "int",
+        bind: { key: "tree_roles", data: [] },
+        width: 70,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "roleName",
+        title: "瑙掕壊鍚嶇О",
+        type: "string",
+        link: true,
+        width: 90,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "roleId",
+        title: "鏁版嵁鏉冮檺",
+        type: "string",
+        width: 90,
+        require: true,
+        align: "left",
+        bind: { key: "authorityScopes", data: [] },
+      },
+      {
+        field: "deptId",
+        title: "閮ㄩ棬ID",
+        type: "int",
+        width: 90,
+        // hidden: true,
+        align: "left",
+      },
+      //   {
+      //     field: "deptName",
+      //     title: "閮ㄩ棬鍚嶇О",
+      //     type: "string",
+      //     width: 90,
+      //     align: "left",
+      //   },
+      {
+        field: "enable",
+        title: "鏄惁鍚敤",
+        type: "byte",
+        bind: { key: "enable", data: [] },
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "orderNo",
+        title: "鎺掑簭",
+        type: "int",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 130,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "createDate",
+        title: "鍒涘缓鏃堕棿",
+        type: "datetime",
+        width: 90,
+        readonly: true,
+        align: "left",
+        sortable: true,
+      },
+      {
+        field: "modifier",
+        title: "淇敼浜�",
+        type: "string",
+        width: 130,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "modifyDate",
+        title: "淇敼鏃堕棿",
+        type: "datetime",
+        width: 90,
+        readonly: true,
+        align: "left",
+        sortable: true,
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      columns: [],
+      sortName: "",
+      key: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role1.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/system/Sys_Role1.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_Role1.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue
new file mode 100644
index 0000000..c6dcf81
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/Sys_User.vue
@@ -0,0 +1,361 @@
+
+<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_User.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "userId",
+      footer: "Foots",
+      cnName: "鐢ㄦ埛绠$悊",
+      name: "Sys_User",
+      url: "/Sys_User/",
+      sortName: "userId",
+    });
+    const editFormFields = ref({
+      systemType: "0",
+      userName: "",
+      userTrueName: "",
+      roleId: "",
+      deptIds: "",
+      enable: "",
+      gender: "",
+      remark: "",
+      headImageUrl: "",
+    });
+    const editFormOptions = ref([
+      [{ title: "甯愬彿", required: true, field: "userName" }],
+      [{ title: "濮撳悕", required: true, field: "userTrueName", type: "text" }],
+      [
+        {
+          dataKey: "tree_roles",
+          data: [],
+          title: "瑙掕壊",
+          required: true,
+          field: "roleId",
+          type: "select",
+        },
+      ],
+      // [
+      //   {
+      //     dataKey: "缁勭粐鏈烘瀯",
+      //     data: [],
+      //     title: "缁勭粐鏋勬灦",
+      //     field: "deptIds",
+      //     colSize: 12,
+      //     type: "treeSelect",
+      //   },
+      // ],
+      [
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍙敤",
+          required: true,
+          field: "enable",
+          type: "select",
+        },
+      ],
+      [
+        {
+          dataKey: "gender",
+          data: [],
+          title: "鎬у埆",
+          field: "gender",
+          type: "select",
+        },
+      ],
+      [{ title: "澶囨敞", field: "remark", colSize: 12, type: "textarea" }],
+      [{ title: "澶村儚", field: "headImageUrl", type: "img" }],
+    ]);
+    const searchFormFields = ref({
+      systemType: "0",
+      userName: "",
+      userTrueName: "",
+      gender: "",
+      deptName: "",
+      role_Id: [],
+      token: "",
+      appType: [],
+      createDate: "",
+      isRegregisterPhone: "",
+      phoneNo: "",
+      enable: "",
+      lastLoginDate: "",
+      address: "",
+      email: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "甯愬彿", field: "userName" },
+        { title: "濮撳悕", field: "userTrueName" },
+        {
+          dataKey: "gender",
+          data: [],
+          title: "鎬у埆",
+          field: "gender",
+          type: "select",
+        },
+      ],
+      [
+        {
+          dataKey: "enable",
+          data: [],
+          title: "鏄惁鍙敤",
+          field: "enable",
+          type: "select",
+        },
+        { title: "娉ㄥ唽鏃堕棿", field: "createDate", type: "datetime" },
+      ],
+    ]);
+    const columns = ref([
+      {
+        field: "userId",
+        title: "UserId",
+        type: "int",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "userName",
+        title: "甯愬彿",
+        type: "string",
+        link: true,
+        width: 120,
+        readonly: true,
+        require: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "userTrueName",
+        title: "濮撳悕",
+        type: "string",
+        width: 120,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "gender",
+        title: "鎬у埆",
+        type: "int",
+        bind: { key: "gender", data: [] },
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "headImageUrl",
+        title: "澶村儚",
+        type: "img",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "deptId",
+        title: "涓嶇敤",
+        type: "int",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "deptName",
+        title: "涓嶇敤",
+        type: "string",
+        width: 150,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "roleId",
+        title: "瑙掕壊",
+        type: "int",
+        bind: { key: "tree_roles", data: [] },
+        width: 130,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "roleName",
+        title: "涓嶇敤",
+        type: "string",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "token",
+        title: "Token",
+        type: "string",
+        width: 180,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "appType",
+        title: "绫诲瀷",
+        type: "int",
+        bind: { key: "ut", data: [] },
+        width: 150,
+        hidden: true,
+        align: "left",
+      },
+      // {
+      //   field: "deptIds",
+      //   title: "缁勭粐鏋勬灦",
+      //   type: "string",
+      //   bind: { key: "缁勭粐鏈烘瀯", data: [] },
+      //   width: 140,
+      //   hidden: true,
+      //   align: "left",
+      // },
+      {
+        field: "createDate",
+        title: "娉ㄥ唽鏃堕棿",
+        type: "datetime",
+        width: 150,
+        readonly: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "phoneNo",
+        title: "鎵嬫満鍙�",
+        type: "string",
+        width: 150,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "tel",
+        title: "Tel",
+        type: "string",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 130,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "enable",
+        title: "鏄惁鍙敤",
+        type: "byte",
+        bind: { key: "enable", data: [] },
+        width: 90,
+        require: true,
+        align: "left",
+      },
+      {
+        field: "modifier",
+        title: "淇敼浜�",
+        type: "string",
+        width: 130,
+        hidden: true,
+        readonly: true,
+        align: "left",
+      },
+      {
+        field: "modifyDate",
+        title: "淇敼鏃堕棿",
+        type: "datetime",
+        width: 90,
+        hidden: true,
+        readonly: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "auditStatus",
+        title: "瀹℃牳鐘舵��",
+        type: "int",
+        bind: { key: "audit", data: [] },
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "auditor",
+        title: "瀹℃牳浜�",
+        type: "string",
+        width: 90,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "auditDate",
+        title: "瀹℃牳鏃堕棿",
+        type: "datetime",
+        width: 150,
+        hidden: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "lastModifyPwdDate",
+        title: "鏈�鍚庡瘑鐮佷慨鏀规椂闂�",
+        type: "datetime",
+        width: 150,
+        hidden: true,
+        align: "left",
+        sort: true,
+      },
+      {
+        field: "address",
+        title: "鍦板潃",
+        type: "string",
+        width: 190,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "email",
+        title: "Email",
+        type: "string",
+        width: 140,
+        hidden: true,
+        align: "left",
+      },
+      {
+        field: "remark",
+        title: "澶囨敞",
+        type: "string",
+        width: 180,
+        hidden: true,
+        align: "left",
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "#detailTable",
+      columns: [],
+      sortName: "",
+      key: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue
new file mode 100644
index 0000000..0e722ae
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/UserInfo.vue
@@ -0,0 +1,317 @@
+<template>
+  <VolBox :width="500" :height="270" v-model="modifyOptions.model" title="淇敼瀵嗙爜">
+    <div style="padding:10px;20px;">
+      <VolForm ref="pwd" :formRules="modifyOptions.data" :formFields="modifyOptions.fields"></VolForm>
+    </div>
+    <template #footer>
+      <div style="text-align: center;">
+        <el-button type="primary" size="mini" icon="md-checkmark-circle" long @click="savePwd">淇濆瓨</el-button>
+      </div>
+    </template>
+  </VolBox>
+  <div class="user-info">
+    <div class="left">
+      <div>
+        <img class="header-img" :src="userInfo.img" :onerror="errorImg" />
+        <div class="text">
+          <p class="name">
+            <span style="font-size: 13px">{{ userInfo.userName }}</span>
+          </p>
+          <p class="date">
+            <span>娉ㄥ唽鏃ユ湡锛歿{ userInfo.createDate }}</span>
+          </p>
+          <p>
+            <el-button type="error" @click="modifyPwd" size="small" icon="md-lock" long>淇敼瀵嗙爜</el-button>
+            <!-- <el-button
+              style="padding: 3px 16px"
+              @click="modifyImg"
+              type="primary"
+              size="mini"
+              ghost
+              >淇敼澶村儚</el-button
+            > -->
+          </p>
+        </div>
+      </div>
+    </div>
+    <div class="right">
+      <vol-form ref="form" :load-key="true" :width="500" :formRules="editFormOptions" :formFields="editFormFields">
+        <div class="footer">
+          <!-- <el-button
+            style="margin-top: 2px"
+            type="primary"
+            size="small"
+            icon="md-checkmark-circle"
+            long
+            @click="modifyInfo"
+            >淇濆瓨</el-button
+          > -->
+        </div>
+      </vol-form>
+    </div>
+
+  </div>
+</template>
+<script>
+import VolForm from "@/components/basic/VolForm.vue";
+import VolBox from "@/components/basic/VolBox.vue";
+export default {
+  components: {
+    VolForm,
+    VolBox,
+  },
+  methods: {
+    modifyImg() {
+      this.$message.info("淇敼澶村儚");
+    },
+    modifyEmail() {
+      this.$message.info("淇敼閭");
+    },
+    modifyPhone() {
+      this.$message.info("淇敼鐢佃瘽");
+    },
+    modifyPwd() {
+      this.modifyOptions.model = true;
+    },
+    savePwd() {
+      if (!this.$refs.pwd.validate()) return;
+      if (
+        this.modifyOptions.fields.newPwd != this.modifyOptions.fields.newPwd1
+      ) {
+        return this.$message.error("涓ゆ瀵嗙爜涓嶄竴鑷�");
+      }
+      let url =
+        "/api/Sys_User/modifyPwd?oldPwd=" +
+        this.modifyOptions.fields.oldPwd +
+        "&newPwd=" +
+        this.modifyOptions.fields.newPwd;
+      this.http.post(url, {}, true).then((x) => {
+        if (!x.status) {
+          return this.$message.error(x.message);
+        }
+        this.modifyOptions.model = false;
+        this.$Message.success(x.message);
+        this.$refs.pwd.reset();
+      });
+    },
+    modifyInfo() {
+      this.$message.info("淇敼涓汉淇℃伅");
+    },
+  },
+  created() {
+    this.http.post("/api/Sys_User/getCurrentUserInfo", {}, true).then((x) => {
+      if (!x.status) {
+        return this.$message(x.message);
+      }
+      x.data.createDate = (x.data.createDate || "").replace("T", " ");
+      x.data.gender = x.data.gender + "";
+      this.$refs.form.reset(x.data);
+      this.userInfo.img = this.base.getImgSrc(
+        x.data.headImageUrl,
+        this.http.ipAddress
+      );
+      this.userInfo.createDate = x.data.createDate;
+      this.userInfo.userName = x.data.userTrueName;
+      this.userInfo.phoneNo = x.data.phoneNo;
+      this.userInfo.email = x.data.email;
+      //   this.editFormFields = x.data;
+    });
+  },
+  data() {
+    return {
+      errorImg: 'this.src="' + new URL("@/assets/imgs/error-img.png", import.meta.url).href + '"',
+      modifyOptions: {
+        model: false,
+        fields: { oldPwd: "", newPwd: "", newPwd1: "" },
+        data: [
+          [
+            {
+              columnType: "string",
+              required: true,
+              title: "鏃у瘑鐮�",
+              field: "oldPwd",
+            },
+          ],
+          [
+            {
+              type: "password",
+              required: true,
+              title: "鏂板瘑鐮�",
+              field: "newPwd",
+            },
+          ],
+          [
+            {
+              type: "password",
+              required: true,
+              title: "纭瀵嗙爜",
+              field: "newPwd1",
+            },
+          ],
+        ],
+      },
+      binging: [{}],
+      userInfo: {
+        img: "",
+        createDate: "--",
+        userName: "--",
+        email: "",
+        phoneNo: "",
+      },
+      editFormFields: {
+        roleName: "",
+        userName: "",
+        userTrueName: "",
+        address: "",
+        gender: "",
+        remark: "",
+      },
+      editFormOptions: [
+        [
+          {
+            columnType: "string",
+            title: "鐢ㄦ埛鍚�",
+            field: "userName",
+            disabled: true,
+          },
+        ],
+        [
+          {
+            columnType: "string",
+            title: "瑙掕壊",
+            field: "roleName",
+            disabled: true,
+            type: "text",
+          },
+        ],
+        [
+          {
+            columnType: "string",
+            title: "鐪熷疄濮撳悕",
+            field: "userTrueName",
+            required: true,
+            disabled: true,
+            type: "text",
+          },
+        ],
+        [
+          {
+            columnType: "string",
+            title: "鍦板潃",
+            field: "address",
+            disabled: true,
+            type: "text",
+          },
+        ],
+        [
+          {
+            dataKey: "gender",
+            title: "鎬у埆",
+            field: "gender",
+            disabled: true,
+            data: [],
+            type: "select",
+          },
+        ],
+        [
+          {
+            columnType: "string",
+            title: "澶囨敞",
+            field: "remark",
+            disabled: true,
+            colSize: 12,
+            type: "textarea",
+          },
+        ],
+      ],
+    };
+  },
+};
+</script>
+<style scoped>
+.binding-group {
+  width: 100%;
+  padding-bottom: 20px;
+}
+
+.binding-group>>>.ivu-cell-link {
+  text-align: left;
+}
+
+.binding-group>>>.ivu-card-body {
+  padding: 0 16px;
+}
+
+.binding-group>>>.ivu-cell-title {
+  line-height: 24px;
+  font-size: 12px;
+}
+</style>
+
+<style lang="less" scoped>
+img[src=""],
+img:not([src]) {
+  opacity: 0;
+}
+
+.user-info {
+  box-shadow: #d6d6d6 0px 4px 21px;
+  position: absolute;
+  transform: translateY(-40%);
+  top: 40%;
+  /* position: relative; */
+  margin: 0 auto;
+  left: 0;
+  width: 950px;
+  right: 0;
+  text-align: center;
+  padding: 0px;
+  padding: 20px;
+
+  .text {
+    padding: 5px;
+
+    .name {
+      font-weight: bolder;
+      font-size: 15px;
+      font-weight: 900;
+    }
+
+    >p {
+      padding-top: 5px;
+    }
+  }
+
+  .header-img {
+    height: 150px;
+    width: 150px;
+    border-radius: 50%;
+    margin-right: 0px;
+    top: 4px;
+    position: relative;
+    border: 3px solid #dfdfdf;
+  }
+
+  >div {
+    float: left;
+    // height: 480px;
+    padding-top: 10px;
+  }
+
+  .left {
+    width: 320px;
+    border-right: 1px solid #eee;
+    // box-shadow: #d6d6d6 7px 4px 20px;
+    // flex: 1;
+  }
+
+  .right {
+    padding-left: 30px;
+    width: 570px;
+    // background: #fefefe;
+    // flex: 3;
+  }
+}
+</style>
+
+
diff --git a/Code Management/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/src/views/system/system/Sys_Department.vue
copy to Code Management/WMS/WIDESEA_WMSClient/src/views/system/system/Sys_Department.vue
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue
new file mode 100644
index 0000000..f8fed3d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task.vue
@@ -0,0 +1,230 @@
+
+<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/task.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "taskId",
+      footer: "Foots",
+      cnName: "浠诲姟淇℃伅",
+      name: "task",
+      url: "/Task/",
+      sortName: "CreateDate",
+    });
+    const editFormFields = ref({});
+    const editFormOptions = ref([]);
+    const searchFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      taskStatus: "",
+      taskType: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+    });
+    const searchFormOptions = ref([
+      [
+        { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
+        { title: "鍒涘缓浜�", field: "creater", type: "like" },
+      ],
+      [
+        { title: "浠诲姟绫诲瀷",field: "taskType",type: "selectList",dataKey: "taskType",data: [],},
+        { title: "浠诲姟鐘舵��",field: "taskStatus",type: "selectList",dataKey: "taskStatusEnum",data: [],},
+        { title: "宸烽亾鍙�", field: "roadway", type: "like" },
+      ],
+      [
+        { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
+        { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", 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: 120,
+        align: "left",
+      },
+      {
+        field: "palletCode",
+        title: "鎵樼洏缂栧彿",
+        type: "string",
+        width: 160,
+        align: "left",
+      },
+      {
+        field: "roadway",
+        title: "宸烽亾鍙�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "taskType",
+        title: "浠诲姟绫诲瀷",
+        type: "int",
+        width: 120,
+        align: "left",
+        bind: { key: "taskType", data: [] },
+      },
+      {
+        field: "taskStatus",
+        title: "浠诲姟鐘舵��",
+        type: "int",
+        width: 150,
+        align: "left",
+        bind: { key: "taskStatusEnum", data: [] },
+      },
+      {
+        field: "sourceAddress",
+        title: "璧峰鍦板潃",
+        type: "int",
+        width: 220,
+        align: "left",
+      },
+      {
+        field: "targetAddress",
+        title: "鐩爣鍦板潃",
+        type: "string",
+        width: 220,
+        align: "left",
+      },
+      // {
+      //   field: "currentAddress",
+      //   title: "褰撳墠浣嶇疆",
+      //   type: "string",
+      //   width: 120,
+      //   align: "left",
+      // },
+      // {
+      //   field: "nextAddress",
+      //   title: "涓嬩竴浣嶇疆",
+      //   type: "string",
+      //   width: 120,
+      //   align: "left",
+      // },
+      {
+        field: "exceptionMessage",
+        title: "寮傚父淇℃伅",
+        type: "string",
+        width: 90,
+        align: "left",
+      },
+      {
+        field: "grade",
+        title: "浼樺厛绾�",
+        type: "int",
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "depth",
+        title: "娣卞害",
+        type: "int",
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "dispatchertime",
+        title: "浠诲姟涓嬪彂鏃堕棿",
+        type: "datetime",
+        width: 160,
+        align: "left",
+        hidden:true,
+      },
+      {
+        field: "wMSId",
+        title: "WMS浠诲姟涓婚敭",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+        hidden: true,
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue b/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
new file mode 100644
index 0000000..c0ade98
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSClient/src/views/taskinfo/task_hty.vue
@@ -0,0 +1,230 @@
+
+<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/task_hty.js";
+import { ref, defineComponent } from "vue";
+export default defineComponent({
+  setup() {
+    const table = ref({
+      key: "taskId",
+      footer: "Foots",
+      cnName: "浠诲姟鍘嗗彶淇℃伅",
+      name: "task_hty",
+      url: "/Task_Hty/",
+      sortName: "taskId",
+    });
+    const editFormFields = ref({});
+    const editFormOptions = ref([]);
+    const searchFormFields = ref({
+      taskNum: "",
+      palletCode: "",
+      roadway: "",
+      taskStatus: "",
+      taskType: "",
+      sourceAddress: "",
+      targetAddress: "",
+      currentAddress: "",
+      nextAddress: "",
+      creater: "",
+      createDate: "",
+    });
+    const searchFormOptions = ref([
+    [
+        { title: "浠诲姟鍙�", field: "taskNum", type: "int" },
+        { title: "鎵樼洏缂栧彿", field: "palletCode", type: "like" },
+        { title: "鍒涘缓浜�", field: "creater", type: "like" },
+      ],
+      [
+        { title: "浠诲姟绫诲瀷",field: "taskType",type: "selectList",dataKey: "taskType",data: [],},
+        { title: "浠诲姟鐘舵��",field: "taskStatus",type: "selectList",dataKey: "taskStatusEnum",data: [],},
+        { title: "宸烽亾鍙�", field: "roadway", type: "like" },
+      ],
+      [
+        { title: "璧峰鍦板潃", field: "sourceAddress", type: "like" },
+        { title: "鐩爣鍦板潃", field: "targetAddress", type: "like" },
+        { title: "鍒涘缓鏃堕棿", field: "createDate", 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: 120,
+        align: "left",
+      },
+      {
+        field: "palletCode",
+        title: "鎵樼洏缂栧彿",
+        type: "string",
+        width: 160,
+        align: "left",
+      },
+      {
+        field: "roadway",
+        title: "宸烽亾鍙�",
+        type: "string",
+        width: 120,
+        align: "left",
+      },
+      {
+        field: "taskType",
+        title: "浠诲姟绫诲瀷",
+        type: "int",
+        width: 120,
+        align: "left",
+        bind: { key: "taskType", data: [] },
+      },
+      {
+        field: "taskStatus",
+        title: "浠诲姟鐘舵��",
+        type: "int",
+        width: 150,
+        align: "left",
+        bind: { key: "taskStatusEnum", data: [] },
+      },
+      {
+        field: "sourceAddress",
+        title: "璧峰鍦板潃",
+        type: "int",
+        width: 220,
+        align: "left",
+      },
+      {
+        field: "targetAddress",
+        title: "鐩爣鍦板潃",
+        type: "string",
+        width: 220,
+        align: "left",
+      },
+      // {
+      //   field: "currentAddress",
+      //   title: "褰撳墠浣嶇疆",
+      //   type: "string",
+      //   width: 120,
+      //   align: "left",
+      // },
+      // {
+      //   field: "nextAddress",
+      //   title: "涓嬩竴浣嶇疆",
+      //   type: "string",
+      //   width: 120,
+      //   align: "left",
+      // },
+      {
+        field: "exceptionMessage",
+        title: "寮傚父淇℃伅",
+        type: "string",
+        width: 90,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "grade",
+        title: "浼樺厛绾�",
+        type: "int",
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "depth",
+        title: "娣卞害",
+        type: "int",
+        width: 80,
+        align: "left",
+      },
+      {
+        field: "dispatchertime",
+        title: "浠诲姟涓嬪彂鏃堕棿",
+        type: "datetime",
+        width: 150,
+        align: "left",
+      },
+      {
+        field: "wMSId",
+        title: "WMS浠诲姟涓婚敭",
+        type: "int",
+        width: 120,
+        align: "left",
+        hidden: true,
+      },
+      {
+        field: "creater",
+        title: "鍒涘缓浜�",
+        type: "string",
+        width: 90,
+        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: 100,
+        align: "left",
+        hidden: true,
+      },
+    ]);
+    const detail = ref({
+      cnName: "#detailCnName",
+      table: "",
+      columns: [],
+      sortName: "",
+    });
+    return {
+      table,
+      extend,
+      editFormFields,
+      editFormOptions,
+      searchFormFields,
+      searchFormOptions,
+      columns,
+      detail,
+    };
+  },
+});
+</script>
+    
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSClient/tests/unit/example.spec.js b/Code Management/WMS/WIDESEA_WMSClient/tests/unit/example.spec.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/tests/unit/example.spec.js
copy to Code Management/WMS/WIDESEA_WMSClient/tests/unit/example.spec.js
diff --git a/Code Management/WIDESEA_WCSClient/vite.config.js b/Code Management/WMS/WIDESEA_WMSClient/vite.config.js
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/vite.config.js
copy to Code Management/WMS/WIDESEA_WMSClient/vite.config.js
diff --git a/Code Management/WIDESEA_WCSClient/yarn.lock b/Code Management/WMS/WIDESEA_WMSClient/yarn.lock
similarity index 100%
copy from Code Management/WIDESEA_WCSClient/yarn.lock
copy to Code Management/WMS/WIDESEA_WMSClient/yarn.lock
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.editorconfig b/Code Management/WMS/WIDESEA_WMSServer/.editorconfig
new file mode 100644
index 0000000..54621aa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.editorconfig
@@ -0,0 +1,4 @@
+锘縖*.cs]
+
+# CS8618: 鍦ㄩ��鍑烘瀯閫犲嚱鏁版椂锛屼笉鍙负 null 鐨勫瓧娈靛繀椤诲寘鍚潪 null 鍊笺�傝鑰冭檻娣诲姞 "required" 淇グ绗︽垨澹版槑涓哄彲涓� null銆�
+dotnet_diagnostic.CS8618.severity = silent
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db
new file mode 100644
index 0000000..19605a6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
new file mode 100644
index 0000000..0f9b204
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-shm
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
new file mode 100644
index 0000000..9ef92b2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/CodeChunks.db-wal
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
new file mode 100644
index 0000000..596891d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
new file mode 100644
index 0000000..b919bf7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-shm
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
new file mode 100644
index 0000000..33c3315
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1569.27729/SemanticSymbols.db-wal
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db
new file mode 100644
index 0000000..e12861f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-shm b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-shm
new file mode 100644
index 0000000..174ea98
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-shm
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-wal b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-wal
new file mode 100644
index 0000000..6fef9f3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/CodeChunks.db-wal
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db
new file mode 100644
index 0000000..b3c67ae
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-shm b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-shm
new file mode 100644
index 0000000..5ba9c94
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-shm
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-wal b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-wal
new file mode 100644
index 0000000..e2395fe
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.995.13737/SemanticSymbols.db-wal
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config
new file mode 100644
index 0000000..269dc55
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/config/applicationhost.config
@@ -0,0 +1,1021 @@
+锘�<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    IIS configuration sections.
+
+    For schema documentation, see
+    %IIS_BIN%\config\schema\IIS_schema.xml.
+    
+    Please make a backup of this file before making any changes to it.
+
+    NOTE: The following environment variables are available to be used
+          within this file and are understood by the IIS Express.
+
+          %IIS_USER_HOME% - The IIS Express home directory for the user
+          %IIS_SITES_HOME% - The default home directory for sites
+          %IIS_BIN% - The location of the IIS Express binaries
+          %SYSTEMDRIVE% - The drive letter of %IIS_BIN%
+
+-->
+
+<configuration>
+
+    <!--
+
+        The <configSections> section controls the registration of sections.
+        Section is the basic unit of deployment, locking, searching and
+        containment for configuration settings.
+        
+        Every section belongs to one section group.
+        A section group is a container of logically-related sections.
+        
+        Sections cannot be nested.
+        Section groups may be nested.
+        
+        <section
+            name=""  [Required, Collection Key] [XML name of the section]
+            allowDefinition="Everywhere" [MachineOnly|MachineToApplication|AppHostOnly|Everywhere] [Level where it can be set]
+            overrideModeDefault="Allow"  [Allow|Deny] [Default delegation mode]
+            allowLocation="true"  [true|false] [Allowed in location tags]
+        />
+        
+        The recommended way to unlock sections is by using a location tag:
+        <location path="Default Web Site" overrideMode="Allow">
+            <system.webServer>
+                <asp />
+            </system.webServer>
+        </location>
+
+    -->
+    <configSections>
+        <sectionGroup name="system.applicationHost">
+            <section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="configHistory" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="serviceAutoStartProviders" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+        </sectionGroup>
+
+        <sectionGroup name="system.webServer">
+            <section name="asp" overrideModeDefault="Deny" />
+            <section name="caching" overrideModeDefault="Allow" />
+            <section name="cgi" overrideModeDefault="Deny" />
+            <section name="defaultDocument" overrideModeDefault="Allow" />
+            <section name="directoryBrowse" overrideModeDefault="Allow" />
+            <section name="fastCgi" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="globalModules" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+            <section name="handlers" overrideModeDefault="Deny" />
+            <section name="httpCompression" overrideModeDefault="Allow" allowDefinition="Everywhere" />
+            <section name="httpErrors" overrideModeDefault="Allow" />
+            <section name="httpLogging" overrideModeDefault="Deny" />
+            <section name="httpProtocol" overrideModeDefault="Allow" />
+            <section name="httpRedirect" overrideModeDefault="Allow" />
+            <section name="httpTracing" overrideModeDefault="Deny" />
+            <section name="isapiFilters" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="modules" allowDefinition="MachineToApplication" overrideModeDefault="Deny" />
+            <section name="applicationInitialization" allowDefinition="MachineToApplication" overrideModeDefault="Allow" />
+            <section name="odbcLogging" overrideModeDefault="Deny" />
+            <sectionGroup name="security">
+                <section name="access" overrideModeDefault="Deny" />
+                <section name="applicationDependencies" overrideModeDefault="Deny" />
+                <sectionGroup name="authentication">
+                    <section name="anonymousAuthentication" overrideModeDefault="Deny" />
+                    <section name="basicAuthentication" overrideModeDefault="Deny" />
+                    <section name="clientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="digestAuthentication" overrideModeDefault="Deny" />
+                    <section name="iisClientCertificateMappingAuthentication" overrideModeDefault="Deny" />
+                    <section name="windowsAuthentication" overrideModeDefault="Deny" />
+                </sectionGroup>
+                <section name="authorization" overrideModeDefault="Allow" />
+                <section name="ipSecurity" overrideModeDefault="Deny" />
+                <section name="dynamicIpSecurity" overrideModeDefault="Deny" />
+                <section name="isapiCgiRestriction" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />
+                <section name="requestFiltering" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="serverRuntime" overrideModeDefault="Deny" />
+            <section name="serverSideInclude" overrideModeDefault="Deny" />
+            <section name="staticContent" overrideModeDefault="Allow" />
+            <sectionGroup name="tracing">
+                <section name="traceFailedRequests" overrideModeDefault="Allow" />
+                <section name="traceProviderDefinitions" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <section name="urlCompression" overrideModeDefault="Allow" />
+            <section name="validation" overrideModeDefault="Allow" />
+            <sectionGroup name="webdav">
+                <section name="globalSettings" overrideModeDefault="Deny" />
+                <section name="authoring" overrideModeDefault="Deny" />
+                <section name="authoringRules" overrideModeDefault="Deny" />
+            </sectionGroup>
+            <sectionGroup name="rewrite">
+                <section name="allowedServerVariables" overrideModeDefault="Deny" />
+                <section name="rules" overrideModeDefault="Allow" />
+                <section name="outboundRules" overrideModeDefault="Allow" />
+                <section name="globalRules" overrideModeDefault="Deny" allowDefinition="AppHostOnly" />
+                <section name="providers" overrideModeDefault="Allow" />
+                <section name="rewriteMaps" overrideModeDefault="Allow" />
+            </sectionGroup>
+            <section name="webSocket" overrideModeDefault="Deny" />
+        </sectionGroup>
+    </configSections>
+
+    <configProtectedData>
+        <providers>
+            <add name="IISWASOnlyRsaProvider" type="" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useMachineContainer="true" useOAEP="false" />
+            <add name="AesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisConfigurationKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAA/HKxkz6alrlAPez0IUgujj/6k3WxCDriHp6jvpv3yEZmo7h6SMzGLxo4mTrIQVHSkB7tmElHKfUFTzE2BWF7nFWHY6Z6qmGBauFzwJMwESjril7Gjz69RBFH259HQ6aRDq9Xfx7U7H4HtdmnKNqGjgl/hwPQBGeIlWiDh+sYv3vKB0QU971tjX6H2B+9armlnC8UOuA6JYMDMI/VLLL16sng0fWAy5JYe0YVABVjiAWDW264RZW9Tr1Oax4qHZKg+SdjULxeOc2YmpX+d0yeITo1HkPF1hN1gHpIPIUDo05ilHUNfR3OkjVCIQK4cFKCq1s8NH+y+13MxUC4Fn1AlQ==" />
+            <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="AQIAAA5mAAAApAAALmU8lTC+v2qtfQiiiquvvLpUQqKLEXs+jSKoWCM/uPhyB++k4dwug19mGidNK5FYiWK2KYE1yhjVJcbp12E98Q0R2nT7eBiCMY2JairxQ591rqABK7keGaIjwH7PwGzSpILl3RJ4YFvJ/7ZXEJxeDZIjW8ZxWVXx+/VyHs9U3WguLEkgMUX3jrxJi8LouxaIVPJAv/YQ1ZCWs8zImitxX/C/7o7yaIxznfsN5nGQzQfpUDPeby99aw2zPVTtZI2LaWIBON8guABvZ6JtJVDWmfdK6sodbnwdZkr6/Z2rfvamT1dC1SpQrGG7ulR/f9/GXvCaW10ZVKxekBF/CYlNMg==" />
+        </providers>
+    </configProtectedData>
+
+    <system.applicationHost>
+
+        <applicationPools>
+            <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
+            <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
+            <applicationPoolDefaults managedRuntimeVersion="v4.0">
+                <processModel loadUserProfile="true" setProfileEnvironment="false" />
+            </applicationPoolDefaults>
+        </applicationPools>
+
+        <!--
+
+          The <listenerAdapters> section defines the protocols with which the
+          Windows Process Activation Service (WAS) binds.
+
+        -->
+        <listenerAdapters>
+            <add name="http" />
+        </listenerAdapters>
+
+        <sites>
+            <site name="WebSite1" id="1" serverAutoStart="true">
+                <application path="/">
+                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%\WebSite1" />
+                </application>
+                <bindings>
+                    <binding protocol="http" bindingInformation=":8080:localhost" />
+                </bindings>
+            </site>
+            <siteDefaults>
+                <!-- To enable logging, please change the below attribute "enabled" to "true" -->
+                <logFile logFormat="W3C" directory="%AppData%\Microsoft\IISExpressLogs" enabled="false"/>
+                <traceFailedRequestsLogging directory="%AppData%\Microsoft" enabled="false" maxLogFileSizeKB="1024" />
+            </siteDefaults>
+            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
+            <virtualDirectoryDefaults allowSubDirConfig="true" />
+        </sites>
+
+        <webLimits />
+
+    </system.applicationHost>
+
+    <system.webServer>
+
+        <serverRuntime />
+
+        <asp scriptErrorSentToBrowser="true">
+            <cache diskTemplateCacheDirectory="%TEMP%\iisexpress\ASP Compiled Templates" />
+            <limits />
+        </asp>
+
+        <caching enabled="true" enableKernelCache="true">
+        </caching>
+
+        <cgi />
+
+        <defaultDocument enabled="true">
+            <files>
+                <add value="Default.htm" />
+                <add value="Default.asp" />
+                <add value="index.htm" />
+                <add value="index.html" />
+                <add value="iisstart.htm" />
+                <add value="default.aspx" />
+            </files>
+        </defaultDocument>
+
+        <directoryBrowse enabled="false" />
+
+        <fastCgi />
+
+        <!--
+
+          The <globalModules> section defines all native-code modules.
+          To enable a module, specify it in the <modules> section.
+
+        -->
+        <globalModules>
+            <add name="HttpLoggingModule" image="%IIS_BIN%\loghttp.dll" />
+            <add name="UriCacheModule" image="%IIS_BIN%\cachuri.dll" />
+            <add name="TokenCacheModule" image="%IIS_BIN%\cachtokn.dll" />
+            <add name="DynamicCompressionModule" image="%IIS_BIN%\compdyn.dll" />
+            <add name="StaticCompressionModule" image="%IIS_BIN%\compstat.dll" />
+            <add name="DefaultDocumentModule" image="%IIS_BIN%\defdoc.dll" />
+            <add name="DirectoryListingModule" image="%IIS_BIN%\dirlist.dll" />
+            <add name="ProtocolSupportModule" image="%IIS_BIN%\protsup.dll" />
+            <add name="HttpRedirectionModule" image="%IIS_BIN%\redirect.dll" />
+            <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />
+            <add name="StaticFileModule" image="%IIS_BIN%\static.dll" />
+            <add name="AnonymousAuthenticationModule" image="%IIS_BIN%\authanon.dll" />
+            <add name="CertificateMappingAuthenticationModule" image="%IIS_BIN%\authcert.dll" />
+            <add name="UrlAuthorizationModule" image="%IIS_BIN%\urlauthz.dll" />
+            <add name="BasicAuthenticationModule" image="%IIS_BIN%\authbas.dll" />
+            <add name="WindowsAuthenticationModule" image="%IIS_BIN%\authsspi.dll" />
+            <add name="IISCertificateMappingAuthenticationModule" image="%IIS_BIN%\authmap.dll" />
+            <add name="IpRestrictionModule" image="%IIS_BIN%\iprestr.dll" />
+            <add name="DynamicIpRestrictionModule" image="%IIS_BIN%\diprestr.dll" />
+            <add name="RequestFilteringModule" image="%IIS_BIN%\modrqflt.dll" />
+            <add name="CustomLoggingModule" image="%IIS_BIN%\logcust.dll" />
+            <add name="CustomErrorModule" image="%IIS_BIN%\custerr.dll" />
+            <add name="FailedRequestsTracingModule" image="%IIS_BIN%\iisfreb.dll" />
+            <add name="RequestMonitorModule" image="%IIS_BIN%\iisreqs.dll" />
+            <add name="IsapiModule" image="%IIS_BIN%\isapi.dll" />
+            <add name="IsapiFilterModule" image="%IIS_BIN%\filter.dll" />
+            <add name="CgiModule" image="%IIS_BIN%\cgi.dll" />
+            <add name="FastCgiModule" image="%IIS_BIN%\iisfcgi.dll" />
+<!--            <add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" /> -->
+            <add name="RewriteModule" image="%IIS_BIN%\rewrite.dll" />
+            <add name="ConfigurationValidationModule" image="%IIS_BIN%\validcfg.dll" />
+            <add name="WebSocketModule" image="%IIS_BIN%\iiswsock.dll" />
+            <add name="WebMatrixSupportModule" image="%IIS_BIN%\webmatrixsup.dll" />
+            <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
+            <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
+            <add name="ManagedEngineV4.0_32bit" image="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
+            <add name="ManagedEngineV4.0_64bit" image="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
+            <add name="ApplicationInitializationModule" image="%IIS_BIN%\warmup.dll" />
+        </globalModules>
+
+        <httpCompression directory="%TEMP%">
+            <scheme name="gzip" dll="%IIS_BIN%\gzip.dll" />
+            <dynamicTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/x-javascript" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </dynamicTypes>
+            <staticTypes>
+                <add mimeType="text/*" enabled="true" />
+                <add mimeType="message/*" enabled="true" />
+                <add mimeType="application/javascript" enabled="true" />
+                <add mimeType="application/atom+xml" enabled="true" />
+                <add mimeType="application/xaml+xml" enabled="true" />
+                <add mimeType="image/svg+xml" enabled="true" />
+                <add mimeType="*/*" enabled="false" />
+            </staticTypes>
+        </httpCompression>
+
+        <httpErrors lockAttributes="allowAbsolutePathsWhenDelegated,defaultPath">
+            <error statusCode="401" prefixLanguageFilePath="%IIS_BIN%\custerr" path="401.htm" />
+            <error statusCode="403" prefixLanguageFilePath="%IIS_BIN%\custerr" path="403.htm" />
+            <error statusCode="404" prefixLanguageFilePath="%IIS_BIN%\custerr" path="404.htm" />
+            <error statusCode="405" prefixLanguageFilePath="%IIS_BIN%\custerr" path="405.htm" />
+            <error statusCode="406" prefixLanguageFilePath="%IIS_BIN%\custerr" path="406.htm" />
+            <error statusCode="412" prefixLanguageFilePath="%IIS_BIN%\custerr" path="412.htm" />
+            <error statusCode="500" prefixLanguageFilePath="%IIS_BIN%\custerr" path="500.htm" />
+            <error statusCode="501" prefixLanguageFilePath="%IIS_BIN%\custerr" path="501.htm" />
+            <error statusCode="502" prefixLanguageFilePath="%IIS_BIN%\custerr" path="502.htm" />
+        </httpErrors>
+
+        <httpLogging dontLog="false" />
+
+        <httpProtocol>
+            <customHeaders>
+                <clear />
+                <add name="X-Powered-By" value="ASP.NET" />
+            </customHeaders>
+            <redirectHeaders>
+                <clear />
+            </redirectHeaders>
+        </httpProtocol>
+
+        <httpRedirect enabled="false" />
+
+        <httpTracing />
+
+        <isapiFilters>
+            <filter name="ASP.Net_2.0.50727-64" path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0.50727.0" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv2.0" />
+            <filter name="ASP.Net_2.0_for_v1.1" path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="runtimeVersionv1.1" />
+            <filter name="ASP.Net_4.0_32bit" path="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness32,runtimeVersionv4.0" />
+            <filter name="ASP.Net_4.0_64bit" path="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_filter.dll" enableCache="true" preCondition="bitness64,runtimeVersionv4.0" />
+        </isapiFilters>
+
+        <odbcLogging />
+
+        <security>
+
+            <access sslFlags="None" />
+
+            <applicationDependencies>
+                <application name="Active Server Pages" groupId="ASP" />
+            </applicationDependencies>
+
+            <authentication>
+
+                <anonymousAuthentication enabled="true" userName="" />
+
+                <basicAuthentication enabled="false" />
+
+                <clientCertificateMappingAuthentication enabled="false" />
+
+                <digestAuthentication enabled="false" />
+
+                <iisClientCertificateMappingAuthentication enabled="false">
+                </iisClientCertificateMappingAuthentication>
+
+                <windowsAuthentication enabled="false">
+                    <providers>
+                        <add value="Negotiate" />
+                        <add value="NTLM" />
+                    </providers>
+                </windowsAuthentication>
+
+            </authentication>
+
+            <authorization>
+                <add accessType="Allow" users="*" />
+            </authorization>
+
+            <ipSecurity allowUnlisted="true" />
+
+            <isapiCgiRestriction notListedIsapisAllowed="true" notListedCgisAllowed="true">
+                <add path="%windir%\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" allowed="true" groupId="ASP.NET_v4.0" description="ASP.NET_v4.0" />
+                <add path="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+                <add path="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" allowed="true" groupId="ASP.NET v2.0.50727" description="ASP.NET v2.0.50727" />
+            </isapiCgiRestriction>
+
+            <requestFiltering>
+                <fileExtensions allowUnlisted="true" applyToWebDAV="true">
+                    <add fileExtension=".asa" allowed="false" />
+                    <add fileExtension=".asax" allowed="false" />
+                    <add fileExtension=".ascx" allowed="false" />
+                    <add fileExtension=".master" allowed="false" />
+                    <add fileExtension=".skin" allowed="false" />
+                    <add fileExtension=".browser" allowed="false" />
+                    <add fileExtension=".sitemap" allowed="false" />
+                    <add fileExtension=".config" allowed="false" />
+                    <add fileExtension=".cs" allowed="false" />
+                    <add fileExtension=".csproj" allowed="false" />
+                    <add fileExtension=".vb" allowed="false" />
+                    <add fileExtension=".vbproj" allowed="false" />
+                    <add fileExtension=".webinfo" allowed="false" />
+                    <add fileExtension=".licx" allowed="false" />
+                    <add fileExtension=".resx" allowed="false" />
+                    <add fileExtension=".resources" allowed="false" />
+                    <add fileExtension=".mdb" allowed="false" />
+                    <add fileExtension=".vjsproj" allowed="false" />
+                    <add fileExtension=".java" allowed="false" />
+                    <add fileExtension=".jsl" allowed="false" />
+                    <add fileExtension=".ldb" allowed="false" />
+                    <add fileExtension=".dsdgm" allowed="false" />
+                    <add fileExtension=".ssdgm" allowed="false" />
+                    <add fileExtension=".lsad" allowed="false" />
+                    <add fileExtension=".ssmap" allowed="false" />
+                    <add fileExtension=".cd" allowed="false" />
+                    <add fileExtension=".dsprototype" allowed="false" />
+                    <add fileExtension=".lsaprototype" allowed="false" />
+                    <add fileExtension=".sdm" allowed="false" />
+                    <add fileExtension=".sdmDocument" allowed="false" />
+                    <add fileExtension=".mdf" allowed="false" />
+                    <add fileExtension=".ldf" allowed="false" />
+                    <add fileExtension=".ad" allowed="false" />
+                    <add fileExtension=".dd" allowed="false" />
+                    <add fileExtension=".ldd" allowed="false" />
+                    <add fileExtension=".sd" allowed="false" />
+                    <add fileExtension=".adprototype" allowed="false" />
+                    <add fileExtension=".lddprototype" allowed="false" />
+                    <add fileExtension=".exclude" allowed="false" />
+                    <add fileExtension=".refresh" allowed="false" />
+                    <add fileExtension=".compiled" allowed="false" />
+                    <add fileExtension=".msgx" allowed="false" />
+                    <add fileExtension=".vsdisco" allowed="false" />
+                    <add fileExtension=".rules" allowed="false" />
+                </fileExtensions>
+                <verbs allowUnlisted="true" applyToWebDAV="true" />
+                <hiddenSegments applyToWebDAV="true">
+                    <add segment="web.config" />
+                    <add segment="bin" />
+                    <add segment="App_code" />
+                    <add segment="App_GlobalResources" />
+                    <add segment="App_LocalResources" />
+                    <add segment="App_WebReferences" />
+                    <add segment="App_Data" />
+                    <add segment="App_Browsers" />
+                </hiddenSegments>
+            </requestFiltering>
+
+        </security>
+
+        <serverSideInclude ssiExecDisable="false" />
+
+        <staticContent lockAttributes="isDocFooterFileName">
+            <mimeMap fileExtension=".323" mimeType="text/h323" />
+            <mimeMap fileExtension=".3g2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp2" mimeType="video/3gpp2" />
+            <mimeMap fileExtension=".3gp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".3gpp" mimeType="video/3gpp" />
+            <mimeMap fileExtension=".aac" mimeType="audio/aac" />
+            <mimeMap fileExtension=".aaf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".aca" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".accdb" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accde" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".accdt" mimeType="application/msaccess" />
+            <mimeMap fileExtension=".acx" mimeType="application/internet-property-stream" />
+            <mimeMap fileExtension=".adt" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".adts" mimeType="audio/vnd.dlna.adts" />
+            <mimeMap fileExtension=".afm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ai" mimeType="application/postscript" />
+            <mimeMap fileExtension=".aif" mimeType="audio/x-aiff" />
+            <mimeMap fileExtension=".aifc" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".aiff" mimeType="audio/aiff" />
+            <mimeMap fileExtension=".appcache" mimeType="text/cache-manifest" />
+            <mimeMap fileExtension=".application" mimeType="application/x-ms-application" />
+            <mimeMap fileExtension=".art" mimeType="image/x-jg" />
+            <mimeMap fileExtension=".asd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asf" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".asm" mimeType="text/plain" />
+            <mimeMap fileExtension=".asr" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".asx" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".atom" mimeType="application/atom+xml" />
+            <mimeMap fileExtension=".au" mimeType="audio/basic" />
+            <mimeMap fileExtension=".avi" mimeType="video/avi" />
+            <mimeMap fileExtension=".axs" mimeType="application/olescript" />
+            <mimeMap fileExtension=".bas" mimeType="text/plain" />
+            <mimeMap fileExtension=".bcpio" mimeType="application/x-bcpio" />
+            <mimeMap fileExtension=".bin" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".bmp" mimeType="image/bmp" />
+            <mimeMap fileExtension=".c" mimeType="text/plain" />
+            <mimeMap fileExtension=".cab" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".calx" mimeType="application/vnd.ms-office.calx" />
+            <mimeMap fileExtension=".cat" mimeType="application/vnd.ms-pki.seccat" />
+            <mimeMap fileExtension=".cdf" mimeType="application/x-cdf" />
+            <mimeMap fileExtension=".chm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".class" mimeType="application/x-java-applet" />
+            <mimeMap fileExtension=".clp" mimeType="application/x-msclip" />
+            <mimeMap fileExtension=".cmx" mimeType="image/x-cmx" />
+            <mimeMap fileExtension=".cnf" mimeType="text/plain" />
+            <mimeMap fileExtension=".cod" mimeType="image/cis-cod" />
+            <mimeMap fileExtension=".cpio" mimeType="application/x-cpio" />
+            <mimeMap fileExtension=".cpp" mimeType="text/plain" />
+            <mimeMap fileExtension=".crd" mimeType="application/x-mscardfile" />
+            <mimeMap fileExtension=".crl" mimeType="application/pkix-crl" />
+            <mimeMap fileExtension=".crt" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".csh" mimeType="application/x-csh" />
+            <mimeMap fileExtension=".css" mimeType="text/css" />
+            <mimeMap fileExtension=".csv" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".cur" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dcr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".deploy" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".der" mimeType="application/x-x509-ca-cert" />
+            <mimeMap fileExtension=".dib" mimeType="image/bmp" />
+            <mimeMap fileExtension=".dir" mimeType="application/x-director" />
+            <mimeMap fileExtension=".disco" mimeType="text/xml" />
+            <mimeMap fileExtension=".dll" mimeType="application/x-msdownload" />
+            <mimeMap fileExtension=".dll.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".dlm" mimeType="text/dlm" />
+            <mimeMap fileExtension=".doc" mimeType="application/msword" />
+            <mimeMap fileExtension=".docm" mimeType="application/vnd.ms-word.document.macroEnabled.12" />
+            <mimeMap fileExtension=".docx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.document" />
+            <mimeMap fileExtension=".dot" mimeType="application/msword" />
+            <mimeMap fileExtension=".dotm" mimeType="application/vnd.ms-word.template.macroEnabled.12" />
+            <mimeMap fileExtension=".dotx" mimeType="application/vnd.openxmlformats-officedocument.wordprocessingml.template" />
+            <mimeMap fileExtension=".dsp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dtd" mimeType="text/xml" />
+            <mimeMap fileExtension=".dvi" mimeType="application/x-dvi" />
+            <mimeMap fileExtension=".dvr-ms" mimeType="video/x-ms-dvr" />
+            <mimeMap fileExtension=".dwf" mimeType="drawing/x-dwf" />
+            <mimeMap fileExtension=".dwp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".dxr" mimeType="application/x-director" />
+            <mimeMap fileExtension=".eml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".emz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".eot" mimeType="application/vnd.ms-fontobject" />
+            <mimeMap fileExtension=".eps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".esd" mimeType="application/vnd.ms-cab-compressed" />
+            <mimeMap fileExtension=".etx" mimeType="text/x-setext" />
+            <mimeMap fileExtension=".evy" mimeType="application/envoy" />
+            <mimeMap fileExtension=".exe" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".exe.config" mimeType="text/xml" />
+            <mimeMap fileExtension=".fdf" mimeType="application/vnd.fdf" />
+            <mimeMap fileExtension=".fif" mimeType="application/fractals" />
+            <mimeMap fileExtension=".fla" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".flr" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".flv" mimeType="video/x-flv" />
+            <mimeMap fileExtension=".gif" mimeType="image/gif" />
+            <mimeMap fileExtension=".glb" mimeType="model/gltf-binary" />
+            <mimeMap fileExtension=".gtar" mimeType="application/x-gtar" />
+            <mimeMap fileExtension=".gz" mimeType="application/x-gzip" />
+            <mimeMap fileExtension=".h" mimeType="text/plain" />
+            <mimeMap fileExtension=".hdf" mimeType="application/x-hdf" />
+            <mimeMap fileExtension=".hdml" mimeType="text/x-hdml" />
+            <mimeMap fileExtension=".hhc" mimeType="application/x-oleobject" />
+            <mimeMap fileExtension=".hhk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hhp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".hlp" mimeType="application/winhlp" />
+            <mimeMap fileExtension=".hqx" mimeType="application/mac-binhex40" />
+            <mimeMap fileExtension=".hta" mimeType="application/hta" />
+            <mimeMap fileExtension=".htc" mimeType="text/x-component" />
+            <mimeMap fileExtension=".htm" mimeType="text/html" />
+            <mimeMap fileExtension=".html" mimeType="text/html" />
+            <mimeMap fileExtension=".htt" mimeType="text/webviewhtml" />
+            <mimeMap fileExtension=".hxt" mimeType="text/html" />
+            <mimeMap fileExtension=".ico" mimeType="image/x-icon" />
+            <mimeMap fileExtension=".ics" mimeType="text/calendar" />
+            <mimeMap fileExtension=".ief" mimeType="image/ief" />
+            <mimeMap fileExtension=".iii" mimeType="application/x-iphone" />
+            <mimeMap fileExtension=".inf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ins" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".isp" mimeType="application/x-internet-signup" />
+            <mimeMap fileExtension=".IVF" mimeType="video/x-ivf" />
+            <mimeMap fileExtension=".jar" mimeType="application/java-archive" />
+            <mimeMap fileExtension=".java" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jck" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jcz" mimeType="application/liquidmotion" />
+            <mimeMap fileExtension=".jfif" mimeType="image/pjpeg" />
+            <mimeMap fileExtension=".jpb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".jpe" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpeg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".jpg" mimeType="image/jpeg" />
+            <mimeMap fileExtension=".js" mimeType="application/javascript" />
+            <mimeMap fileExtension=".json" mimeType="application/json" />
+            <mimeMap fileExtension=".jsonld" mimeType="application/ld+json" />
+            <mimeMap fileExtension=".jsx" mimeType="text/jscript" />
+            <mimeMap fileExtension=".latex" mimeType="application/x-latex" />
+            <mimeMap fileExtension=".less" mimeType="text/css" />
+            <mimeMap fileExtension=".lit" mimeType="application/x-ms-reader" />
+            <mimeMap fileExtension=".lpk" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".lsf" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lsx" mimeType="video/x-la-asf" />
+            <mimeMap fileExtension=".lzh" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".m13" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m14" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".m1v" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".m2ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".m3u" mimeType="audio/x-mpegurl" />
+            <mimeMap fileExtension=".m4a" mimeType="audio/mp4" />
+            <mimeMap fileExtension=".m4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".man" mimeType="application/x-troff-man" />
+            <mimeMap fileExtension=".manifest" mimeType="application/x-ms-manifest" />
+            <mimeMap fileExtension=".map" mimeType="text/plain" />
+            <mimeMap fileExtension=".mdb" mimeType="application/x-msaccess" />
+            <mimeMap fileExtension=".mdp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".me" mimeType="application/x-troff-me" />
+            <mimeMap fileExtension=".mht" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mhtml" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".mid" mimeType="audio/mid" />
+            <mimeMap fileExtension=".midi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".mix" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mmf" mimeType="application/x-smaf" />
+            <mimeMap fileExtension=".mno" mimeType="text/xml" />
+            <mimeMap fileExtension=".mny" mimeType="application/x-msmoney" />
+            <mimeMap fileExtension=".mov" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".movie" mimeType="video/x-sgi-movie" />
+            <mimeMap fileExtension=".mp2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mp3" mimeType="audio/mpeg" />
+            <mimeMap fileExtension=".mp4" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mp4v" mimeType="video/mp4" />
+            <mimeMap fileExtension=".mpa" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpe" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpeg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpg" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".mpp" mimeType="application/vnd.ms-project" />
+            <mimeMap fileExtension=".mpv2" mimeType="video/mpeg" />
+            <mimeMap fileExtension=".ms" mimeType="application/x-troff-ms" />
+            <mimeMap fileExtension=".msi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mso" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".mvb" mimeType="application/x-msmediaview" />
+            <mimeMap fileExtension=".mvc" mimeType="application/x-miva-compiled" />
+            <mimeMap fileExtension=".nc" mimeType="application/x-netcdf" />
+            <mimeMap fileExtension=".nsc" mimeType="video/x-ms-asf" />
+            <mimeMap fileExtension=".nws" mimeType="message/rfc822" />
+            <mimeMap fileExtension=".ocx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".oda" mimeType="application/oda" />
+            <mimeMap fileExtension=".odc" mimeType="text/x-ms-odc" />
+            <mimeMap fileExtension=".ods" mimeType="application/oleobject" />
+            <mimeMap fileExtension=".oga" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".ogg" mimeType="video/ogg" />
+            <mimeMap fileExtension=".ogv" mimeType="video/ogg" />
+            <mimeMap fileExtension=".one" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onea" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetoc2" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onetmp" mimeType="application/onenote" />
+            <mimeMap fileExtension=".onepkg" mimeType="application/onenote" />
+            <mimeMap fileExtension=".osdx" mimeType="application/opensearchdescription+xml" />
+            <mimeMap fileExtension=".otf" mimeType="font/otf" />
+            <mimeMap fileExtension=".p10" mimeType="application/pkcs10" />
+            <mimeMap fileExtension=".p12" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".p7b" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".p7c" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7m" mimeType="application/pkcs7-mime" />
+            <mimeMap fileExtension=".p7r" mimeType="application/x-pkcs7-certreqresp" />
+            <mimeMap fileExtension=".p7s" mimeType="application/pkcs7-signature" />
+            <mimeMap fileExtension=".pbm" mimeType="image/x-portable-bitmap" />
+            <mimeMap fileExtension=".pcx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pcz" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
+            <mimeMap fileExtension=".pfb" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pfx" mimeType="application/x-pkcs12" />
+            <mimeMap fileExtension=".pgm" mimeType="image/x-portable-graymap" />
+            <mimeMap fileExtension=".pko" mimeType="application/vnd.ms-pki.pko" />
+            <mimeMap fileExtension=".pma" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmc" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pml" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmr" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".pmw" mimeType="application/x-perfmon" />
+            <mimeMap fileExtension=".png" mimeType="image/png" />
+            <mimeMap fileExtension=".pnm" mimeType="image/x-portable-anymap" />
+            <mimeMap fileExtension=".pnz" mimeType="image/png" />
+            <mimeMap fileExtension=".pot" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".potm" mimeType="application/vnd.ms-powerpoint.template.macroEnabled.12" />
+            <mimeMap fileExtension=".potx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.template" />
+            <mimeMap fileExtension=".ppam" mimeType="application/vnd.ms-powerpoint.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".ppm" mimeType="image/x-portable-pixmap" />
+            <mimeMap fileExtension=".pps" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".ppsm" mimeType="application/vnd.ms-powerpoint.slideshow.macroEnabled.12" />
+            <mimeMap fileExtension=".ppsx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slideshow" />
+            <mimeMap fileExtension=".ppt" mimeType="application/vnd.ms-powerpoint" />
+            <mimeMap fileExtension=".pptm" mimeType="application/vnd.ms-powerpoint.presentation.macroEnabled.12" />
+            <mimeMap fileExtension=".pptx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.presentation" />
+            <mimeMap fileExtension=".prf" mimeType="application/pics-rules" />
+            <mimeMap fileExtension=".prm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".prx" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ps" mimeType="application/postscript" />
+            <mimeMap fileExtension=".psd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psm" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".psp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".pub" mimeType="application/x-mspublisher" />
+            <mimeMap fileExtension=".qt" mimeType="video/quicktime" />
+            <mimeMap fileExtension=".qtl" mimeType="application/x-quicktimeplayer" />
+            <mimeMap fileExtension=".qxd" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ra" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".ram" mimeType="audio/x-pn-realaudio" />
+            <mimeMap fileExtension=".rar" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".ras" mimeType="image/x-cmu-raster" />
+            <mimeMap fileExtension=".rf" mimeType="image/vnd.rn-realflash" />
+            <mimeMap fileExtension=".rgb" mimeType="image/x-rgb" />
+            <mimeMap fileExtension=".rm" mimeType="application/vnd.rn-realmedia" />
+            <mimeMap fileExtension=".rmi" mimeType="audio/mid" />
+            <mimeMap fileExtension=".roff" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".rpm" mimeType="audio/x-pn-realaudio-plugin" />
+            <mimeMap fileExtension=".rtf" mimeType="application/rtf" />
+            <mimeMap fileExtension=".rtx" mimeType="text/richtext" />
+            <mimeMap fileExtension=".scd" mimeType="application/x-msschedule" />
+            <mimeMap fileExtension=".sct" mimeType="text/scriptlet" />
+            <mimeMap fileExtension=".sea" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".setpay" mimeType="application/set-payment-initiation" />
+            <mimeMap fileExtension=".setreg" mimeType="application/set-registration-initiation" />
+            <mimeMap fileExtension=".sgml" mimeType="text/sgml" />
+            <mimeMap fileExtension=".sh" mimeType="application/x-sh" />
+            <mimeMap fileExtension=".shar" mimeType="application/x-shar" />
+            <mimeMap fileExtension=".sit" mimeType="application/x-stuffit" />
+            <mimeMap fileExtension=".sldm" mimeType="application/vnd.ms-powerpoint.slide.macroEnabled.12" />
+            <mimeMap fileExtension=".sldx" mimeType="application/vnd.openxmlformats-officedocument.presentationml.slide" />
+            <mimeMap fileExtension=".smd" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smi" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".smx" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".smz" mimeType="audio/x-smd" />
+            <mimeMap fileExtension=".snd" mimeType="audio/basic" />
+            <mimeMap fileExtension=".snp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".spc" mimeType="application/x-pkcs7-certificates" />
+            <mimeMap fileExtension=".spl" mimeType="application/futuresplash" />
+            <mimeMap fileExtension=".spx" mimeType="audio/ogg" />
+            <mimeMap fileExtension=".src" mimeType="application/x-wais-source" />
+            <mimeMap fileExtension=".ssm" mimeType="application/streamingmedia" />
+            <mimeMap fileExtension=".sst" mimeType="application/vnd.ms-pki.certstore" />
+            <mimeMap fileExtension=".stl" mimeType="application/vnd.ms-pki.stl" />
+            <mimeMap fileExtension=".sv4cpio" mimeType="application/x-sv4cpio" />
+            <mimeMap fileExtension=".sv4crc" mimeType="application/x-sv4crc" />
+            <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".svgz" mimeType="image/svg+xml" />
+            <mimeMap fileExtension=".swf" mimeType="application/x-shockwave-flash" />
+            <mimeMap fileExtension=".t" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".tar" mimeType="application/x-tar" />
+            <mimeMap fileExtension=".tcl" mimeType="application/x-tcl" />
+            <mimeMap fileExtension=".tex" mimeType="application/x-tex" />
+            <mimeMap fileExtension=".texi" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".texinfo" mimeType="application/x-texinfo" />
+            <mimeMap fileExtension=".tgz" mimeType="application/x-compressed" />
+            <mimeMap fileExtension=".thmx" mimeType="application/vnd.ms-officetheme" />
+            <mimeMap fileExtension=".thn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tif" mimeType="image/tiff" />
+            <mimeMap fileExtension=".tiff" mimeType="image/tiff" />
+            <mimeMap fileExtension=".toc" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tr" mimeType="application/x-troff" />
+            <mimeMap fileExtension=".trm" mimeType="application/x-msterminal" />
+            <mimeMap fileExtension=".ts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".tsv" mimeType="text/tab-separated-values" />
+            <mimeMap fileExtension=".ttf" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".tts" mimeType="video/vnd.dlna.mpeg-tts" />
+            <mimeMap fileExtension=".txt" mimeType="text/plain" />
+            <mimeMap fileExtension=".u32" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".uls" mimeType="text/iuls" />
+            <mimeMap fileExtension=".ustar" mimeType="application/x-ustar" />
+            <mimeMap fileExtension=".vbs" mimeType="text/vbscript" />
+            <mimeMap fileExtension=".vcf" mimeType="text/x-vcard" />
+            <mimeMap fileExtension=".vcs" mimeType="text/plain" />
+            <mimeMap fileExtension=".vdx" mimeType="application/vnd.ms-visio.viewer" />
+            <mimeMap fileExtension=".vml" mimeType="text/xml" />
+            <mimeMap fileExtension=".vsd" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vss" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vst" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsto" mimeType="application/x-ms-vsto" />
+            <mimeMap fileExtension=".vsw" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vsx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".vtx" mimeType="application/vnd.visio" />
+            <mimeMap fileExtension=".wasm" mimeType="application/wasm" />
+            <mimeMap fileExtension=".wav" mimeType="audio/wav" />
+            <mimeMap fileExtension=".wax" mimeType="audio/x-ms-wax" />
+            <mimeMap fileExtension=".wbmp" mimeType="image/vnd.wap.wbmp" />
+            <mimeMap fileExtension=".wcm" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wdb" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".webm" mimeType="video/webm" />
+            <mimeMap fileExtension=".wks" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wm" mimeType="video/x-ms-wm" />
+            <mimeMap fileExtension=".wma" mimeType="audio/x-ms-wma" />
+            <mimeMap fileExtension=".wmd" mimeType="application/x-ms-wmd" />
+            <mimeMap fileExtension=".wmf" mimeType="application/x-msmetafile" />
+            <mimeMap fileExtension=".wml" mimeType="text/vnd.wap.wml" />
+            <mimeMap fileExtension=".wmlc" mimeType="application/vnd.wap.wmlc" />
+            <mimeMap fileExtension=".wmls" mimeType="text/vnd.wap.wmlscript" />
+            <mimeMap fileExtension=".wmlsc" mimeType="application/vnd.wap.wmlscriptc" />
+            <mimeMap fileExtension=".wmp" mimeType="video/x-ms-wmp" />
+            <mimeMap fileExtension=".wmv" mimeType="video/x-ms-wmv" />
+            <mimeMap fileExtension=".wmx" mimeType="video/x-ms-wmx" />
+            <mimeMap fileExtension=".wmz" mimeType="application/x-ms-wmz" />
+            <mimeMap fileExtension=".woff" mimeType="font/x-woff" />
+            <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
+            <mimeMap fileExtension=".wps" mimeType="application/vnd.ms-works" />
+            <mimeMap fileExtension=".wri" mimeType="application/x-mswrite" />
+            <mimeMap fileExtension=".wrl" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wrz" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".wsdl" mimeType="text/xml" />
+            <mimeMap fileExtension=".wtv" mimeType="video/x-ms-wtv" />
+            <mimeMap fileExtension=".wvx" mimeType="video/x-ms-wvx" />
+            <mimeMap fileExtension=".x" mimeType="application/directx" />
+            <mimeMap fileExtension=".xaf" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xaml" mimeType="application/xaml+xml" />
+            <mimeMap fileExtension=".xap" mimeType="application/x-silverlight-app" />
+            <mimeMap fileExtension=".xbap" mimeType="application/x-ms-xbap" />
+            <mimeMap fileExtension=".xbm" mimeType="image/x-xbitmap" />
+            <mimeMap fileExtension=".xdr" mimeType="text/plain" />
+            <mimeMap fileExtension=".xht" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xhtml" mimeType="application/xhtml+xml" />
+            <mimeMap fileExtension=".xla" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlam" mimeType="application/vnd.ms-excel.addin.macroEnabled.12" />
+            <mimeMap fileExtension=".xlc" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlm" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xls" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xlsb" mimeType="application/vnd.ms-excel.sheet.binary.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsm" mimeType="application/vnd.ms-excel.sheet.macroEnabled.12" />
+            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
+            <mimeMap fileExtension=".xlt" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xltm" mimeType="application/vnd.ms-excel.template.macroEnabled.12" />
+            <mimeMap fileExtension=".xltx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.template" />
+            <mimeMap fileExtension=".xlw" mimeType="application/vnd.ms-excel" />
+            <mimeMap fileExtension=".xml" mimeType="text/xml" />
+            <mimeMap fileExtension=".xof" mimeType="x-world/x-vrml" />
+            <mimeMap fileExtension=".xpm" mimeType="image/x-xpixmap" />
+            <mimeMap fileExtension=".xps" mimeType="application/vnd.ms-xpsdocument" />
+            <mimeMap fileExtension=".xsd" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsf" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsl" mimeType="text/xml" />
+            <mimeMap fileExtension=".xslt" mimeType="text/xml" />
+            <mimeMap fileExtension=".xsn" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xtp" mimeType="application/octet-stream" />
+            <mimeMap fileExtension=".xwd" mimeType="image/x-xwindowdump" />
+            <mimeMap fileExtension=".z" mimeType="application/x-compress" />
+            <mimeMap fileExtension=".zip" mimeType="application/x-zip-compressed" />
+        </staticContent>
+
+        <tracing>
+
+            <traceFailedRequests>
+                <add path="*">
+                    <traceAreas>
+                        <add provider="ASP" verbosity="Verbose" />
+                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
+                        <add provider="ISAPI Extension" verbosity="Verbose" />
+                        <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,Rewrite,WebSocket" verbosity="Verbose" />
+                    </traceAreas>
+                    <failureDefinitions statusCodes="200-999" />
+                </add>
+            </traceFailedRequests>
+
+            <traceProviderDefinitions>
+                <add name="WWW Server" guid="{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}">
+                    <areas>
+                        <clear />
+                        <add name="Authentication" value="2" />
+                        <add name="Security" value="4" />
+                        <add name="Filter" value="8" />
+                        <add name="StaticFile" value="16" />
+                        <add name="CGI" value="32" />
+                        <add name="Compression" value="64" />
+                        <add name="Cache" value="128" />
+                        <add name="RequestNotifications" value="256" />
+                        <add name="Module" value="512" />
+                        <add name="Rewrite" value="1024" />
+                        <add name="FastCGI" value="4096" />
+                        <add name="WebSocket" value="16384" />
+                    </areas>
+                </add>
+                <add name="ASP" guid="{06b94d9a-b15e-456e-a4ef-37c984a2cb4b}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ISAPI Extension" guid="{a1c2040e-8840-4c31-ba11-9871031a19ea}">
+                    <areas>
+                        <clear />
+                    </areas>
+                </add>
+                <add name="ASPNET" guid="{AFF081FE-0247-4275-9C4E-021F3DC1DA35}">
+                    <areas>
+                        <add name="Infrastructure" value="1" />
+                        <add name="Module" value="2" />
+                        <add name="Page" value="4" />
+                        <add name="AppServices" value="8" />
+                    </areas>
+                </add>
+            </traceProviderDefinitions>
+
+        </tracing>
+
+        <urlCompression />
+
+        <validation />
+        <webdav>
+            <globalSettings>
+                <propertyStores>
+                    <add name="webdav_simple_prop" image="%IIS_BIN%\webdav_simple_prop.dll" image32="%IIS_BIN%\webdav_simple_prop.dll" />
+                </propertyStores>
+                <lockStores>
+                    <add name="webdav_simple_lock" image="%IIS_BIN%\webdav_simple_lock.dll" image32="%IIS_BIN%\webdav_simple_lock.dll" />
+                </lockStores>
+
+            </globalSettings>
+            <authoring>
+                <locks enabled="true" lockStore="webdav_simple_lock" />
+            </authoring>
+            <authoringRules />
+        </webdav>
+        <webSocket />
+        <applicationInitialization />
+
+    </system.webServer>
+    <location path="" overrideMode="Allow">
+        <system.webServer>
+            <modules>
+                <add name="IsapiFilterModule" lockItem="true" />
+                <add name="BasicAuthenticationModule" lockItem="true" />
+                <add name="IsapiModule" lockItem="true" />
+                <add name="HttpLoggingModule" lockItem="true" />
+                <add name="DynamicCompressionModule" lockItem="true" />
+                <add name="StaticCompressionModule" lockItem="true" />
+                <add name="DefaultDocumentModule" lockItem="true" />
+                <add name="DirectoryListingModule" lockItem="true" />
+                <add name="ProtocolSupportModule" lockItem="true" />
+                <add name="HttpRedirectionModule" lockItem="true" />
+                <add name="ServerSideIncludeModule" lockItem="true" />
+                <add name="StaticFileModule" lockItem="true" />
+                <add name="AnonymousAuthenticationModule" lockItem="true" />
+                <add name="CertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="UrlAuthorizationModule" lockItem="true" />
+                <add name="WindowsAuthenticationModule" lockItem="true" />
+                <add name="IISCertificateMappingAuthenticationModule" lockItem="true" />
+                <add name="WebMatrixSupportModule" lockItem="true" />
+                <add name="IpRestrictionModule" lockItem="true" />
+                <add name="DynamicIpRestrictionModule" lockItem="true" />
+                <add name="RequestFilteringModule" lockItem="true" />
+                <add name="CustomLoggingModule" lockItem="true" />
+                <add name="CustomErrorModule" lockItem="true" />
+                <add name="FailedRequestsTracingModule" lockItem="true" />
+                <add name="CgiModule" lockItem="true" />
+                <add name="FastCgiModule" lockItem="true" />
+<!--                <add name="WebDAVModule" /> -->
+                <add name="RewriteModule" />
+                <add name="OutputCache" type="System.Web.Caching.OutputCacheModule" preCondition="managedHandler" />
+                <add name="Session" type="System.Web.SessionState.SessionStateModule" preCondition="managedHandler" />
+                <add name="WindowsAuthentication" type="System.Web.Security.WindowsAuthenticationModule" preCondition="managedHandler" />
+                <add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />
+                <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
+                <add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />
+                <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" preCondition="managedHandler" />
+                <add name="FileAuthorization" type="System.Web.Security.FileAuthorizationModule" preCondition="managedHandler" />
+                <add name="AnonymousIdentification" type="System.Web.Security.AnonymousIdentificationModule" preCondition="managedHandler" />
+                <add name="Profile" type="System.Web.Profile.ProfileModule" preCondition="managedHandler" />
+                <add name="UrlMappingsModule" type="System.Web.UrlMappingsModule" preCondition="managedHandler" />
+                <add name="ApplicationInitializationModule" lockItem="true" />
+                <add name="WebSocketModule" lockItem="true" />
+                <add name="ServiceModel-4.0" type="System.ServiceModel.Activation.ServiceHttpModule,System.ServiceModel.Activation,Version=4.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ConfigurationValidationModule" lockItem="true" />
+                <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ScriptModule-4.0" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler,runtimeVersionv4.0" />
+                <add name="ServiceModel" type="System.ServiceModel.Activation.HttpModule, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler,runtimeVersionv2.0" />
+            </modules>
+            <handlers accessPolicy="Read, Script">
+<!--                <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
+                <add name="AXD-ISAPI-4.0_64bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_64bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_64bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_64bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_64bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_64bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_64bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="rules-ISAPI-4.0_64bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xoml-ISAPI-4.0_64bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="xamlx-ISAPI-4.0_64bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
+                <add name="aspq-ISAPI-4.0_64bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_64bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_64bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_64bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_64bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="svc-ISAPI-2.0" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="xoml-Integrated" path="*.xoml" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="xoml-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="rules-Integrated" path="*.rules" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="rules-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
+                <add name="AXD-ISAPI-4.0_32bit" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-4.0_32bit" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-4.0_32bit" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-4.0_32bit" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-4.0_32bit" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-4.0_32bit" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="rules-ISAPI-4.0_32bit" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xoml-ISAPI-4.0_32bit" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="xamlx-ISAPI-4.0_32bit" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" />
+                <add name="aspq-ISAPI-4.0_32bit" path="*.aspq" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtm-ISAPI-4.0_32bit" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="cshtml-ISAPI-4.0_32bit" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtm-ISAPI-4.0_32bit" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="vbhtml-ISAPI-4.0_32bit" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="TraceHandler-Integrated-4.0" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebAdminHandler-Integrated-4.0" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="AssemblyResourceLoader-Integrated-4.0" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="PageHandlerFactory-Integrated-4.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="WebServiceHandlerFactory-Integrated-4.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated-4.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated-4.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="svc-Integrated-4.0" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="rules-Integrated-4.0" path="*.rules" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xoml-Integrated-4.0" path="*.xoml" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="xamlx-Integrated-4.0" path="*.xamlx" verb="GET,HEAD,POST,DEBUG" type="System.Xaml.Hosting.XamlHttpHandlerFactory, System.Xaml.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="aspq-Integrated-4.0" path="*.aspq" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtm-Integrated-4.0" path="*.cshtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="cshtml-Integrated-4.0" path="*.cshtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtm-Integrated-4.0" path="*.vbhtm" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="vbhtml-Integrated-4.0" path="*.vbhtml" verb="GET,HEAD,POST,DEBUG" type="System.Web.HttpForbiddenHandler" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptHandlerFactoryAppServices-Integrated-4.0" path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ScriptResourceIntegrated-4.0" path="*ScriptResource.axd" verb="GET,HEAD" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode,runtimeVersionv4.0" />
+                <add name="ASPClassic" path="*.asp" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="SecurityCertificate" path="*.cer" verb="GET,HEAD,POST" modules="IsapiModule" scriptProcessor="%IIS_BIN%\asp.dll" resourceType="File" />
+                <add name="ISAPI-dll" path="*.dll" verb="*" modules="IsapiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="TraceHandler-Integrated" path="trace.axd" verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TraceHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebAdminHandler-Integrated" path="WebAdmin.axd" verb="GET,DEBUG" type="System.Web.Handlers.WebAdminHandler" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AssemblyResourceLoader-Integrated" path="WebResource.axd" verb="GET,DEBUG" type="System.Web.Handlers.AssemblyResourceLoader" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="SimpleHandlerFactory-Integrated" path="*.ashx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="WebServiceHandlerFactory-Integrated" path="*.asmx" verb="GET,HEAD,POST,DEBUG" type="System.Web.Services.Protocols.WebServiceHandlerFactory,System.Web.Services,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-rem-Integrated" path="*.rem" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="HttpRemotingHandlerFactory-soap-Integrated" path="*.soap" verb="GET,HEAD,POST,DEBUG" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,System.Runtime.Remoting,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" preCondition="integratedMode,runtimeVersionv2.0" />
+                <add name="AXD-ISAPI-2.0" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
+                <add name="svc-ISAPI-2.0-64" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="AXD-ISAPI-2.0-64" path="*.axd" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="WebServiceHandlerFactory-ISAPI-2.0-64" path="*.asmx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-rem-ISAPI-2.0-64" path="*.rem" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="HttpRemotingHandlerFactory-soap-ISAPI-2.0-64" path="*.soap" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
+                <add name="rules-64-ISAPI-2.0" path="*.rules" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="xoml-64-ISAPI-2.0" path="*.xoml" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
+                <add name="CGI-exe" path="*.exe" verb="*" modules="CgiModule" resourceType="File" requireAccess="Execute" allowPathInfo="true" />
+                <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
+                <add name="TRACEVerbHandler" path="*" verb="TRACE" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
+                <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
+                <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
+            </handlers>
+        </system.webServer>
+    </location>
+</configuration>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
new file mode 100644
index 0000000..80475ce
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.backup.json
@@ -0,0 +1,292 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_logcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_logcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\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:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\loghelper\\requestlogmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\requestlogmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\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}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 0,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "Sys_LogController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs*",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs*",
+              "ViewState": "AgIAABAAAAAAAAAAAAAIwBgAAAAhAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T05:13:59.483Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "Dt_TaskService.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ViewState": "AgIAAMcCAAAAAAAAAAAqwNcCAAApAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:02:02.11Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "Dt_Task.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "ViewState": "AgIAAHgAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:01:12.886Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwkAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:52:06.145Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "Task_HtyController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwkAAABUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:52:03.817Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "Sys_MenuController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ViewState": "AgIAABcAAAAAAAAAAAAQwCcAAAAEAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:34:59.232Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "Sys_RoleController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:34:21.096Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "Sys_DictionaryController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ViewState": "AgIAAD8AAAAAAAAAAAAqwFsAAABdAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:33:53.727Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Sys_UserController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwYAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:32:04.007Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "Program.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAACoAAAAAAAAAAAAAAEEAAAApAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:58:21.047Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "MiddlewareHelpers.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAmwBMAAAA1AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:57:55.065Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAHUAAAAAAAAAAAAYwG0AAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:57:04.694Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAD4AAAAAAAAAAAAIwE0AAABPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:35.173Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "RequestLogModel.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:09.2Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAhAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:55:00.589Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "appsettings.json",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxgAAAAPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2026-04-02T02:54:16.622Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
new file mode 100644
index 0000000..f5b42ef
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/DocumentLayout.json
@@ -0,0 +1,292 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\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|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_logcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_logcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_menucontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_dictionarycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\system\\sys_rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\system\\sys_rolecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{9912BD12-4CF7-4A91-8203-47C9C125004C}|WIDESEA_StorageTaskServices\\WIDESEA_StorageTaskServices.csproj|solutionrelative:widesea_storagetaskservices\\task\\dt_taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_model\\models\\basic\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}|WIDESEA_Model\\WIDESEA_Model.csproj|solutionrelative:widesea_model\\models\\basic\\dt_task.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\task_htycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|solutionrelative:widesea_wmsserver\\controllers\\task\\taskcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}|WIDESEA_WMSServer\\WIDESEA_WMSServer.csproj|e:\\get\\fanggangagv\\code management\\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:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\middlewarehelpers.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\middlewares\\apilogmiddleware.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\logger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\extensions\\autofacmoduleregister.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|e:\\get\\fanggangagv\\code management\\wms\\widesea_wmsserver\\widesea_core\\loghelper\\requestlogmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{111BD7AA-9749-4506-9772-79F9EF14754C}|WIDESEA_Core\\WIDESEA_Core.csproj|solutionrelative:widesea_core\\loghelper\\requestlogmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 8,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "Sys_LogController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_LogController.cs",
+              "ViewState": "AgIAABAAAAAAAAAAAAAIwBgAAAAhAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T05:13:59.483Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 7,
+              "Title": "Dt_Task.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "RelativeToolTip": "WIDESEA_Model\\Models\\Basic\\Dt_Task.cs",
+              "ViewState": "AgIAAHgAAAAAAAAAAAAAAHoAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:01:12.886Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 9,
+              "Title": "TaskController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\TaskController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwkAAAAQAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:52:06.145Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 8,
+              "Title": "Task_HtyController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\Task\\Task_HtyController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwkAAABUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:52:03.817Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "Sys_MenuController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_MenuController.cs",
+              "ViewState": "AgIAABcAAAAAAAAAAAAQwCcAAAAEAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:34:59.232Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 5,
+              "Title": "Sys_RoleController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_RoleController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwwAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:34:21.096Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "Sys_DictionaryController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_DictionaryController.cs",
+              "ViewState": "AgIAAD8AAAAAAAAAAAAqwFsAAABdAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:33:53.727Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "Sys_UserController.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Controllers\\System\\Sys_UserController.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwYAAAAUAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T03:32:04.007Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "appsettings.json",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\appsettings.json",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\appsettings.json",
+              "RelativeToolTip": "WIDESEA_WMSServer\\appsettings.json",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvxgAAAAiAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|",
+              "WhenOpened": "2026-04-02T02:54:16.622Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 6,
+              "Title": "Dt_TaskService.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeDocumentMoniker": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "RelativeToolTip": "WIDESEA_StorageTaskServices\\Task\\Dt_TaskService.cs",
+              "ViewState": "AgIAAMcCAAAAAAAAAAAqwNcCAAApAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T04:02:02.11Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 10,
+              "Title": "Program.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeDocumentMoniker": "WIDESEA_WMSServer\\Program.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_WMSServer\\Program.cs",
+              "RelativeToolTip": "WIDESEA_WMSServer\\Program.cs",
+              "ViewState": "AgIAACoAAAAAAAAAAAAAAEEAAAApAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:58:21.047Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 11,
+              "Title": "MiddlewareHelpers.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\MiddlewareHelpers.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAmwBMAAAA1AAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:57:55.065Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 13,
+              "Title": "Logger.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\Logger.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\Logger.cs",
+              "ViewState": "AgIAAHUAAAAAAAAAAAAYwG0AAABOAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:57:04.694Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 14,
+              "Title": "AutofacModuleRegister.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Extensions\\AutofacModuleRegister.cs",
+              "ViewState": "AgIAAD4AAAAAAAAAAAAIwE0AAABPAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:35.173Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 15,
+              "Title": "RequestLogModel.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "RelativeToolTip": "WIDESEA_Core\\LogHelper\\RequestLogModel.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:56:09.2Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 12,
+              "Title": "ApiLogMiddleware.cs",
+              "DocumentMoniker": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeDocumentMoniker": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ToolTip": "E:\\GET\\FangGangAGV\\Code Management\\WMS\\WIDESEA_WMSServer\\WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "RelativeToolTip": "WIDESEA_Core\\Middlewares\\ApiLogMiddleware.cs",
+              "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAhAAAAAAAAAA==",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2026-04-02T02:55:00.589Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt
new file mode 100644
index 0000000..8cfa7b6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/v17/HierarchyCache.v1.txt
Binary files differ
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs
new file mode 100644
index 0000000..2aaeea4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.IO;
+using System.Threading;
+
+namespace LogLibrary.Log
+{
+    public static class FileUtil
+    {
+       
+        /// <summary>
+        /// 杩藉姞鍐呭鍒版寚瀹氭枃浠朵腑
+        /// </summary>
+        /// <param name="filePath"></param>
+        /// <param name="content"></param>
+        public static void WriteAppend(string filePath, string content)
+        {
+            WriteAppend(filePath, new string[] { content });
+        }
+
+        public static void WriteAppend(string filePath, string[] contents)
+        {
+            using (FileStream fs = new(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
+            {
+                fs.Seek(fs.Length, SeekOrigin.Current);
+
+                string content = string.Join(Environment.NewLine, contents) + Environment.NewLine;
+
+                //byte[] data = System.Text.Encoding.GetEncoding("GB2312").GetBytes(content);
+                byte[] data = System.Text.Encoding.Default.GetBytes(content);
+
+
+                fs.Write(data, 0, data.Length);
+
+                fs.Close();
+                fs.Dispose();
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs
new file mode 100644
index 0000000..11c5c38
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs
@@ -0,0 +1,89 @@
+锘縰sing System;
+
+namespace LogLibrary.Log
+{
+    public unsafe interface ILog
+    {
+        bool* IsCryto { set; }
+        bool IsDebugEnabled { get; }
+
+        bool IsErrorEnabled { get; }
+
+        bool IsFatalEnabled { get; }
+
+        bool IsInfoEnabled { get; }
+
+        bool IsWarnEnabled { get; }
+
+        void Debug(bool isWriteFile, object message);
+
+        void Debug(bool isWriteFile, object message, Exception exception);
+
+        void DebugFormat(bool isWriteFile, string format, object arg0);
+
+        void DebugFormat(bool isWriteFile, string format, params object[] args);
+
+        void DebugFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+        void DebugFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+        void DebugFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+        void Error(bool isWriteFile, object message);
+
+        void Error(bool isWriteFile, object message, Exception exception);
+
+        void ErrorFormat(bool isWriteFile, string format, object arg0);
+
+        void ErrorFormat(bool isWriteFile, string format, params object[] args);
+
+        void ErrorFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+        void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+        void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+        void Fatal(bool isWriteFile, object message);
+
+        void Fatal(bool isWriteFile, object message, Exception exception);
+
+        void FatalFormat(bool isWriteFile, string format, object arg0);
+
+        void FatalFormat(bool isWriteFile, string format, params object[] args);
+
+        void FatalFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+        void FatalFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+        void FatalFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+        void Info(bool isWriteFile, object message);
+
+        void Info(bool isWriteFile, object message, Exception exception);
+
+        //void InfoFormat(bool isWriteFile, string format, object arg0);
+
+        //void InfoFormat(bool isWriteFile, string format, params object[] args);
+
+        //void InfoFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+        //void InfoFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+        void InfoFormat(bool isWriteFile, object arg0, object arg1, object arg2);
+
+        void Warn(bool isWriteFile, object message);
+
+        void Warn(bool isWriteFile, object message, Exception exception);
+
+        void WarnFormat(bool isWriteFile, string format, object arg0);
+
+        void WarnFormat(bool isWriteFile, string format, params object[] args);
+
+        void WarnFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+        void WarnFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+        void WarnFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs
new file mode 100644
index 0000000..520235a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs
@@ -0,0 +1,7 @@
+锘縩amespace LogLibrary.Log
+{
+    public interface ILogFactory
+    {
+        ILog GetLog(string name);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Level.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Level.cs
new file mode 100644
index 0000000..0cfd286
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Level.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LogLibrary.Log
+{
+        public enum Level : int
+        {
+            Debug,
+            Info,
+            Warning,
+            Error
+        }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Log.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Log.cs
new file mode 100644
index 0000000..6022c2a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/Log.cs
@@ -0,0 +1,755 @@
+锘縰sing System;
+using System.Text.RegularExpressions;
+
+namespace LogLibrary.Log
+{
+
+    public unsafe class Log 
+    {
+        private string m_Name;
+        private const string m_MessageTemplate = "{0}-{1}: {2}";
+
+        private const string m_Debug = "DEBUG";
+
+        private const string m_Error = "ERROR";
+
+        private const string m_Fatal = "FATAL";
+
+        private const string m_Info = "INFO";
+
+        private const string m_Warn = "WARN";
+
+        /// <summary>
+        /// Initializes a new instance of the <see cref="Log"/> class.
+        /// </summary>
+        /// <param name="name">The name.</param>
+        public Log(string name)
+        {
+            m_Name = name;
+        }
+        public Log()
+        {
+            m_Name = "NaN";
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is debug enabled.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is debug enabled; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsDebugEnabled
+        {
+            get { return true; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is error enabled.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is error enabled; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsErrorEnabled
+        {
+            get { return true; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is fatal enabled.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is fatal enabled; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsFatalEnabled
+        {
+            get { return true; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is info enabled.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is info enabled; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsInfoEnabled
+        {
+            get { return true; }
+        }
+
+        /// <summary>
+        /// Gets a value indicating whether this instance is warn enabled.
+        /// </summary>
+        /// <value>
+        ///     <c>true</c> if this instance is warn enabled; otherwise, <c>false</c>.
+        /// </value>
+        public bool IsWarnEnabled
+        {
+            get { return true; }
+        }
+
+
+
+        public string GetDataTimeLog(string log)
+        {
+            return string.Format("[{0}] >>  {1}", DateTime.Now.ToString("yy-MM-dd HH:mm:ss"), log);
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        public void Debug(bool isWriteFile, object message)
+        {
+            string log = GetDataTimeLog(message.ToString());
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        /// <param name="exception">The exception.</param>
+        public void Debug(bool isWriteFile, object message, Exception exception)
+        {
+            string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        public void DebugFormat(bool isWriteFile, string format, object arg0)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void DebugFormat(bool isWriteFile, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(format, args));
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="provider">The provider.</param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void DebugFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(provider, format, args));
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the debug message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        /// <param name="arg2">The arg2.</param>
+        public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Debug, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        public void Error(bool isWriteFile, object message)
+        {
+            string log = GetDataTimeLog(message.ToString());
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        /// <param name="exception">The exception.</param>
+        public void Error(bool isWriteFile, object message, Exception exception)
+        {
+            //string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+            string log = GetDataTimeLog(message + Environment.NewLine + exception.Message );
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        public void ErrorFormat(bool isWriteFile, string format, object arg0)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void ErrorFormat(bool isWriteFile, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="provider">The provider.</param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void ErrorFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(provider, format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        /// <param name="arg2">The arg2.</param>
+        public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg2));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Error, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        public void Fatal(bool isWriteFile, object message)
+        {
+            string log = GetDataTimeLog(message.ToString());
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        /// <param name="exception">The exception.</param>
+        public void Fatal(bool isWriteFile, object message, Exception exception)
+        {
+            string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        public void FatalFormat(bool isWriteFile, string format, object arg0)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void FatalFormat(bool isWriteFile, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="provider">The provider.</param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void FatalFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(provider, format, args));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the fatal error message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        /// <param name="arg2">The arg2.</param>
+        public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        public void Info(bool isWriteFile, object message)
+        {
+            string log = GetDataTimeLog(message.ToString());
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Info, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        /// <param name="exception">The exception.</param>
+        public void Info(bool isWriteFile, object message, Exception exception)
+        {
+            string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Info, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        public void InfoFormat(bool isWriteFile, string format, object arg0)
+        {
+            string log = GetDataTimeLog(string.Format("\n{0}\n{1}\n-----------------------------------------------------------\n\n", format, arg0));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Info, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        //public void InfoFormat(bool isWriteFile, string format, params object[] args)
+        //{
+        //    string log = GetDataTimeLog(string.Format(format, args));
+        //    Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+        //    if (isWriteFile)
+        //    {
+        //        LogUtil.WriteLogFile(m_Name, m_Info, log);
+        //    }
+        //}
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="provider">The provider.</param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        //public void InfoFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+        //{
+        //    string log = GetDataTimeLog(string.Format(provider, format, args));
+        //    Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+        //    if (isWriteFile)
+        //    {
+        //        LogUtil.WriteLogFile(m_Name, m_Info, log);
+        //    }
+        //}
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        //public void InfoFormat(bool isWriteFile, string format, object arg0, object arg1)
+        //{
+        //    string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+        //    Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+        //    if (isWriteFile)
+        //    {
+        //        LogUtil.WriteLogFile(m_Name, m_Info, log);
+        //    }
+        //}
+
+        /// <summary>
+        /// Logs the info message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        /// <param name="arg2">The arg2.</param>
+        public void InfoFormat(bool isWriteFile, object arg0, object arg1, object arg2)
+        {
+            string func(string str, int len)
+            {
+                var strSLen = Regex.Replace(str, @"[^\x00-\xff]", "aa").Length;
+                var strLen = str.Length;
+                return str.PadLeft(len - strSLen + strLen);
+            }
+            string log = GetDataTimeLog(string.Format("[{0}]\t[{1}]\t{2}", arg0?.ToString(), arg1?.ToString(), arg2));
+            //string log = GetDataTimeLog(string.Format("[{0}]  [{1}]  {2}", func(arg0?.ToString(), 13), func(arg1?.ToString(), 16), arg2));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Info, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        public void Warn(bool isWriteFile, object message)
+        {
+            string log = GetDataTimeLog(message.ToString());
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="message">The message.</param>
+        /// <param name="exception">The exception.</param>
+        public void Warn(bool isWriteFile, object message, Exception exception)
+        {
+            string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        public void WarnFormat(bool isWriteFile, string format, object arg0)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0));
+            //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void WarnFormat(bool isWriteFile, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="provider">The provider.</param>
+        /// <param name="format">The format.</param>
+        /// <param name="args">The args.</param>
+        public void WarnFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+        {
+            string log = GetDataTimeLog(string.Format(provider, format, args));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        /// <summary>
+        /// Logs the warning message.
+        /// </summary>
+        /// <param name="isWriteFile"></param>
+        /// <param name="format">The format.</param>
+        /// <param name="arg0">The arg0.</param>
+        /// <param name="arg1">The arg1.</param>
+        /// <param name="arg2">The arg2.</param>
+        public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+        {
+            string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+            Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+            if (isWriteFile)
+            {
+                LogUtil.WriteLogFile(m_Name, m_Warn, log);
+            }
+        }
+
+        //public void Behavior(string logMsg, Level level)
+        //{
+        //    lock (this)
+        //    {
+        //        m_Name = "琛屼负";
+        //        switch (level)
+        //        {
+        //            case Level.Debug:
+        //                Debug(true, logMsg);
+        //                break;
+        //            case Level.Info:
+        //                Info(true, logMsg);
+        //                break;
+        //            case Level.Warning:
+        //                Warn(true, logMsg);
+        //                break;
+        //            case Level.Error:
+        //                Error(true, logMsg);
+        //                break;
+        //            default:
+        //                break;
+        //        }
+        //    }
+        //}
+
+        //public void Interface(string logMsg, Level level)
+        //{
+        //    lock (this)
+        //    {
+        //        m_Name = "鎺ュ彛";
+        //        switch (level)
+        //        {
+        //            case Level.Debug:
+        //                Debug(true, logMsg);
+        //                break;
+        //            case Level.Info:
+        //                Info(true, logMsg);
+        //                break;
+        //            case Level.Warning:
+        //                Warn(true, logMsg);
+        //                break;
+        //            case Level.Error:
+        //                Error(true, logMsg);
+        //                break;
+        //            default:
+        //                break;
+        //        }
+        //    }
+        //}
+
+        //public void Hardware(string logMsg, Level level)
+        //{
+        //    lock (this)
+        //    {
+        //        m_Name = "纭欢";
+        //        switch (level)
+        //        {
+        //            case Level.Debug:
+        //                Debug(true, logMsg);
+        //                break;
+        //            case Level.Info:
+        //                Info(true, logMsg);
+        //                break;
+        //            case Level.Warning:
+        //                Warn(true, logMsg);
+        //                break;
+        //            case Level.Error:
+        //                Error(true, logMsg);
+        //                break;
+        //            default:
+        //                break;
+        //        }
+        //    }
+        //}
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs
new file mode 100644
index 0000000..218faa9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs
@@ -0,0 +1,11 @@
+锘�
+namespace LogLibrary.Log
+{
+    public unsafe class LogFactory
+    {
+        public Log GetLog(string name)
+        {
+            return new Log(name);
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs
new file mode 100644
index 0000000..9dd32fa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Diagnostics;
+using System.Threading;
+
+namespace LogLibrary.Log
+{
+    internal unsafe class LogUtil
+    {
+        static ReaderWriterLockSlim lockSlim = new ReaderWriterLockSlim();
+
+        /// <summary>
+        /// 鏍煎紡寮忓寲Log淇℃伅
+        /// </summary>
+        /// <param name="format"></param>
+        /// <param name="name"></param>
+        /// <param name="logType"></param>
+        /// <param name="log"></param>
+        /// <returns></returns>
+        private static string GetLogString(string name, string logType, string log)
+        {
+            return string.Format("[{0}]{1}-{2}: {3}", DateTime.Now.ToString("HH:mm:ss"), name, logType, log);
+        }
+
+        /// <summary>
+        /// 鑾峰緱鏃ュ織瑕佷繚瀛樼殑璺緞
+        /// </summary>
+        /// <param name="name"></param>
+        /// <param name="logType"></param>
+        /// <returns></returns>
+        private static string GetLogPath(string name, string logType)
+        {
+            string path = AppDomain.CurrentDomain.BaseDirectory + $"Logs/{DateTime.Now:yyyyMM}";
+            if (!System.IO.Directory.Exists(path))
+            {
+                System.IO.Directory.CreateDirectory(path);
+            }
+
+            return System.IO.Path.Combine(path, string.Format("{0}_{1}_{2}.log", DateTime.Now.ToString("yyyy-MM-dd"), name, logType));
+        }
+
+        public static void WriteLogFile(string name, string logType, string log)
+        {
+            string logPath = GetLogPath(name, logType);
+            Trace.WriteLine(log);
+            lockSlim.EnterWriteLock();//鎵撳紑鍐欐搷浣滈攣
+            try
+            {
+                FileUtil.WriteAppend(logPath, log);
+            }
+            finally
+            {
+                lockSlim.ExitWriteLock();
+            }
+
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj
new file mode 100644
index 0000000..552ea92
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj
@@ -0,0 +1,47 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <OutputType>Library</OutputType>
+    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <Configurations>Debug;Release;Dev</Configurations>
+    <Platforms>AnyCPU;x86</Platforms>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|AnyCPU'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Dev\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\Dev\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|x86'">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Dev\</OutputPath>
+    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <DebugType>embedded</DebugType>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..a6c4576
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("LogLibrary")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LogLibrary")]
+[assembly: AssemblyCopyright("Copyright 漏  2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("2e0d9770-ab36-4811-a0d0-05b98093b92d")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�: 
+//
+//      涓荤増鏈�
+//      娆$増鏈�
+//      鐢熸垚鍙�
+//      淇鍙�
+//
+//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
+//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_AreaInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_AreaInfoService.cs
new file mode 100644
index 0000000..c34db7d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_AreaInfoService.cs
@@ -0,0 +1,18 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BusinessServices
+{
+    public class Dt_AreaInfoService : ServiceBase<Dt_AreaInfo, IDt_AreaInfoRepository>, IDt_AreaInfoService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Dt_AreaInfoService(IDt_AreaInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+   
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_MaterielInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_MaterielInfoService.cs
new file mode 100644
index 0000000..b0e4fa9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_MaterielInfoService.cs
@@ -0,0 +1,18 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BusinessServices
+{
+    public class Dt_MaterielInfoService : ServiceBase<Dt_MaterielInfo, IDt_MaterielInfoRepository>, IDt_MaterielInfoService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Dt_MaterielInfoService(IDt_MaterielInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+   
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_TaskExecuteDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_TaskExecuteDetailService.cs
new file mode 100644
index 0000000..39c5f31
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_TaskExecuteDetailService.cs
@@ -0,0 +1,18 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BusinessServices
+{
+    public class Dt_TaskExecuteDetailService : ServiceBase<Dt_TaskExecuteDetail, IDt_TaskExecuteDetailRepository>, IDt_TaskExecuteDetailService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Dt_TaskExecuteDetailService(IDt_TaskExecuteDetailRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+   
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_WareAreaInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_WareAreaInfoService.cs
new file mode 100644
index 0000000..6a94b9f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/Dt_WareAreaInfoService.cs
@@ -0,0 +1,18 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_BusinessServices
+{
+    public class Dt_WareAreaInfoService : ServiceBase<Dt_WareAreaInfo, IDt_WareAreaInfoRepository>, IDt_WareAreaInfoService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Dt_WareAreaInfoService(IDt_WareAreaInfoRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+   
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj
new file mode 100644
index 0000000..a900279
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessServices/WIDESEA_BusinessServices.csproj
@@ -0,0 +1,20 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+    <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_AreaInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_AreaInfoRepository.cs
new file mode 100644
index 0000000..3e594dc
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_AreaInfoRepository.cs
@@ -0,0 +1,16 @@
+锘縰sing SqlSugar;
+using System.Linq.Expressions;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Dt_AreaInfoRepository : RepositoryBase<Dt_AreaInfo>, IDt_AreaInfoRepository
+    {
+        public Dt_AreaInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_MaterielInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_MaterielInfoRepository.cs
new file mode 100644
index 0000000..a2b395a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_MaterielInfoRepository.cs
@@ -0,0 +1,13 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Dt_MaterielInfoRepository : RepositoryBase<Dt_MaterielInfo>, IDt_MaterielInfoRepository
+    {
+        public Dt_MaterielInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_TaskExecuteDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_TaskExecuteDetailRepository.cs
new file mode 100644
index 0000000..195a930
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_TaskExecuteDetailRepository.cs
@@ -0,0 +1,13 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Dt_TaskExecuteDetailRepository : RepositoryBase<Dt_TaskExecuteDetail>, IDt_TaskExecuteDetailRepository
+    {
+        public Dt_TaskExecuteDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_WareAreaInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_WareAreaInfoRepository.cs
new file mode 100644
index 0000000..7382727
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/Dt_WareAreaInfoRepository.cs
@@ -0,0 +1,13 @@
+锘縰sing WIDESEA_Core.BaseRepository;
+using WIDESEA_IBusinessesRepository;
+using WIDESEA_Model.Models;
+namespace WIDESEA_Repository
+{
+    public class Dt_WareAreaInfoRepository : RepositoryBase<Dt_WareAreaInfo>, IDt_WareAreaInfoRepository
+    {
+        public Dt_WareAreaInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj
new file mode 100644
index 0000000..42aa7da
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_BusinessesRepository/WIDESEA_BusinessesRepository.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Const/CacheConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Const/CacheConst.cs
new file mode 100644
index 0000000..47445a2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Const/CacheConst.cs
@@ -0,0 +1,52 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// Redis甯搁噺
+/// </summary>
+public class CacheConst
+{
+    /// <summary>
+    /// Redis Key鍓嶇紑(鍙垹闄�)
+    /// </summary>
+    public const string Cache_Prefix_Web = "WIDESEA_WMSServerWeb:";
+
+    /// <summary>
+    /// Redis Key鍓嶇紑(闇�瑕佹寔涔呭寲锛屼笉闅忕郴缁熼噸鍚垹闄�)
+    /// </summary>
+    public const string Cache_Prefix = "WIDESEA_WMSServer:";
+
+    /// <summary>
+    /// Redis Hash绫诲瀷
+    /// </summary>
+    public const string Cache_Hash = "Hash";
+
+    /// <summary>
+    /// 绯荤粺閰嶇疆琛ㄧ紦瀛楰ey
+    /// </summary>
+    public const string Cache_DevConfig = Cache_Prefix_Web + "DevConfig:";
+
+    /// <summary>
+    /// 鐧诲綍楠岃瘉鐮佺紦瀛楰ey
+    /// </summary>
+    public const string Cache_Captcha = Cache_Prefix_Web + "Captcha:";
+
+    /// <summary>
+    /// 鐢ㄦ埛琛ㄧ紦瀛楰ey
+    /// </summary>
+    public const string Cache_SysUser = Cache_Prefix_Web + "SysUser";
+
+    /// <summary>
+    /// 鐢ㄦ埛鎵嬫満鍙峰叧绯荤紦瀛楰ey
+    /// </summary>
+    public const string Cache_SysUserPhone = Cache_Prefix_Web + "SysUserPhone";
+
+    /// <summary>
+    /// 鐢ㄦ埛Token缂撳瓨Key
+    /// </summary>
+    public const string Cache_UserToken = Cache_Prefix + "UserToken";
+
+    /// <summary>
+    /// WMS搴撳瓨缂撳瓨Key
+    /// </summary>Cache_AutoModel
+    public const string Cache_DtStockInfo = Cache_Prefix + "DtStockInfo";
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/LinqExtension.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/LinqExtension.cs
new file mode 100644
index 0000000..b733b7d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/LinqExtension.cs
@@ -0,0 +1,19 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// Linq鎵╁睍
+/// </summary>
+public static class LinqExtension
+{
+    /// <summary>
+    /// 鏄惁閮藉寘鍚�
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="first">绗竴涓垪琛�</param>
+    /// <param name="secend">绗簩涓垪琛�</param>
+    /// <returns></returns>
+    public static bool ContainsAll<T>(this List<T> first, List<T> secend)
+    {
+        return secend.All(s => first.Any(f => f.Equals(s)));
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/ObjectExtension.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/ObjectExtension.cs
new file mode 100644
index 0000000..cf2b20e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Extension/ObjectExtension.cs
@@ -0,0 +1,45 @@
+锘縰sing Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+
+namespace WIDESEA_Cache;
+/// <summary>
+/// object鎷撳睍
+/// </summary>
+public static class ObjectExtension
+{
+    /// <summary>
+    /// json瀛楃涓插簭鍒楀寲
+    /// </summary>
+    /// <param name="json"></param>
+    /// <returns></returns>
+    public static object ToObject(this string json)
+    {
+        return string.IsNullOrEmpty(json) ? null : JsonConvert.DeserializeObject(json);
+    }
+
+    /// <summary>
+    /// json瀛楃涓插簭鍒楀寲
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="json"></param>
+    /// <returns></returns>
+    public static T ToObject<T>(this string json)
+    {
+        if (json != null)
+        {
+            json = json.Replace("&nbsp;", "");
+            return JsonConvert.DeserializeObject<T>(json);
+        }
+        else return default;
+    }
+
+    /// <summary>
+    /// json瀛楃涓插簭鍒楀寲
+    /// </summary>
+    /// <param name="json"></param>
+    /// <returns></returns>
+    public static JObject ToJObject(this string json)
+    {
+        return json == null ? JObject.Parse("{}") : JObject.Parse(json.Replace("&nbsp;", ""));
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/GlobalUsing.cs
new file mode 100644
index 0000000..45ad6b4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/GlobalUsing.cs
@@ -0,0 +1,7 @@
+锘縢lobal using Masuit.Tools;
+global using Microsoft.AspNetCore.Builder;
+global using Microsoft.AspNetCore.Hosting;
+global using Microsoft.Extensions.DependencyInjection;
+global using NewLife.Caching;
+global using NewLife.Serialization;
+global using SimpleRedis;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheHashService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheHashService.cs
new file mode 100644
index 0000000..a15f099
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheHashService.cs
@@ -0,0 +1,60 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// 缂撳瓨鏈嶅姟
+/// </summary>
+public partial interface ISimpleCacheService
+{
+    /// <summary>
+    /// 娣诲姞涓�鏉℃暟鎹埌HashMap
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="hashKey">hash鍒楄〃閲岀殑Key</param>
+    /// <param name="value">鍊�</param>
+    void HashAdd<T>(string key, string hashKey, T value);
+
+    /// <summary>
+    /// 娣诲姞澶氭潯鏁版嵁鍒癏ashMap
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="dic">閿�煎瀛楀吀</param>
+    /// <returns></returns>
+    bool HashSet<T>(string key, Dictionary<string, T> dic);
+
+    /// <summary>
+    /// 浠嶩ashMap涓垹闄ゆ暟鎹�
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="fields">hash閿垪琛�</param>
+    /// <returns>鎵ц缁撴灉</returns>
+    int HashDel<T>(string key, params string[] fields);
+
+    /// <summary>
+    /// 鏍规嵁閿幏鍙杊ash鍒楄〃涓殑鍊�
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="fields">hash閿垪琛�</param>
+    /// <returns>鏁版嵁鍒楄〃</returns>
+    List<T> HashGet<T>(string key, params string[] fields);
+
+    /// <summary>
+    /// 鏍规嵁閿幏鍙杊ash鍒楄〃涓殑鍊�
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="field">hash閿�</param>
+    /// <returns></returns>
+    T HashGetOne<T>(string key, string field);
+
+    /// <summary>
+    /// 鑾峰彇鎵�鏈夐敭鍊煎
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key">閿�</param>
+    /// <returns>鏁版嵁瀛楀吀</returns>
+    IDictionary<string, T> HashGetAll<T>(string key);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheService.cs
new file mode 100644
index 0000000..fc55623
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Interface/ISimpleCacheService.cs
@@ -0,0 +1,180 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// 缂撳瓨鏈嶅姟
+/// </summary>
+public partial interface ISimpleCacheService
+{
+    #region 鍩虹鎿嶄綔
+
+    /// <summary>鏄惁鍖呭惈缂撳瓨椤�</summary>
+    /// <param name="key"></param>
+    /// <returns></returns>
+    bool ContainsKey(string key);
+
+    /// <summary>璁剧疆缂撳瓨椤�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍊�</param>
+    /// <param name="expire">杩囨湡鏃堕棿锛岀銆傚皬浜�0鏃堕噰鐢ㄩ粯璁ょ紦瀛樻椂闂�</param>
+    /// <returns></returns>
+    bool Set<T>(string key, T value, int expire = -1);
+
+    /// <summary>璁剧疆缂撳瓨椤�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍊�</param>
+    /// <param name="expire">杩囨湡鏃堕棿</param>
+    /// <returns></returns>
+    bool Set<T>(string key, T value, TimeSpan expire);
+
+    /// <summary>鑾峰彇缂撳瓨椤�</summary>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    T Get<T>(string key);
+
+    /// <summary>鎵归噺绉婚櫎缂撳瓨椤�</summary>
+    /// <param name="keys">閿泦鍚�</param>
+    /// <returns></returns>
+    int Remove(params string[] keys);
+
+    /// <summary>娓呯┖鎵�鏈夌紦瀛橀」</summary>
+    void Clear();
+
+    /// <summary>璁剧疆缂撳瓨椤规湁鏁堟湡</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="expire">杩囨湡鏃堕棿</param>
+    bool SetExpire(string key, TimeSpan expire);
+
+    /// <summary>鑾峰彇缂撳瓨椤规湁鏁堟湡</summary>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    TimeSpan GetExpire(string key);
+
+    /// <summary>
+    /// 妯$硦鍒犻櫎
+    /// </summary>
+    /// <param name="pattern">鍖归厤鍏抽敭瀛�</param>
+    void DelByPattern(string pattern);
+
+    #endregion 鍩虹鎿嶄綔
+
+    #region 闆嗗悎鎿嶄綔
+
+    /// <summary>鎵归噺鑾峰彇缂撳瓨椤�</summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="keys"></param>
+    /// <returns></returns>
+    IDictionary<string, T> GetAll<T>(IEnumerable<string> keys);
+
+    /// <summary>鎵归噺璁剧疆缂撳瓨椤�</summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="values"></param>
+    /// <param name="expire">杩囨湡鏃堕棿锛岀銆傚皬浜�0鏃堕噰鐢ㄩ粯璁ょ紦瀛樻椂闂�</param>
+    void SetAll<T>(IDictionary<string, T> values, int expire = -1);
+
+    /// <summary>鑾峰彇鍒楄〃</summary>
+    /// <typeparam name="T">鍏冪礌绫诲瀷</typeparam>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    IList<T> GetList<T>(string key);
+
+    /// <summary>鑾峰彇鍝堝笇</summary>
+    /// <typeparam name="T">鍏冪礌绫诲瀷</typeparam>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    IDictionary<string, T> GetDictionary<T>(string key);
+
+    /// <summary>鑾峰彇闃熷垪</summary>
+    /// <typeparam name="T">鍏冪礌绫诲瀷</typeparam>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    IProducerConsumer<T> GetQueue<T>(string key);
+
+    /// <summary>鑾峰彇鏍�</summary>
+    /// <typeparam name="T">鍏冪礌绫诲瀷</typeparam>
+    /// <param name="key">閿�</param>
+    /// <returns></returns>
+    IProducerConsumer<T> GetStack<T>(string key);
+
+    /// <summary>鑾峰彇Set</summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="key"></param>
+    /// <returns></returns>
+    ICollection<T> GetSet<T>(string key);
+
+    #endregion 闆嗗悎鎿嶄綔
+
+    #region 楂樼骇鎿嶄綔
+
+    /// <summary>娣诲姞锛屽凡瀛樺湪鏃朵笉鏇存柊</summary>
+    /// <typeparam name="T">鍊肩被鍨�</typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍊�</param>
+    /// <param name="expire">杩囨湡鏃堕棿锛岀銆傚皬浜�0鏃堕噰鐢ㄩ粯璁ょ紦瀛樻椂闂�</param>
+    /// <returns></returns>
+    bool Add<T>(string key, T value, int expire = -1);
+
+    /// <summary>璁剧疆鏂板�煎苟鑾峰彇鏃у�硷紝鍘熷瓙鎿嶄綔</summary>
+    /// <remarks>
+    /// 甯稿父閰嶅悎Increment浣跨敤锛岀敤浜庣疮鍔犲埌涓�瀹氭暟鍚庨噸缃綊闆讹紝鍙堥伩鍏嶅绾跨▼鍐茬獊銆�
+    /// </remarks>
+    /// <typeparam name="T">鍊肩被鍨�</typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍊�</param>
+    /// <returns></returns>
+    T Replace<T>(string key, T value);
+
+    /// <summary>灏濊瘯鑾峰彇鎸囧畾閿紝杩斿洖鏄惁鍖呭惈鍊笺�傛湁鍙兘缂撳瓨椤瑰垰濂芥槸榛樿鍊硷紝鎴栬�呭彧鏄弽搴忓垪鍖栧け璐ワ紝瑙e喅缂撳瓨绌块�忛棶棰�</summary>
+    /// <typeparam name="T">鍊肩被鍨�</typeparam>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍊笺�傚嵆浣挎湁鍊间篃涓嶄竴瀹氳兘澶熻繑鍥烇紝鍙兘缂撳瓨椤瑰垰濂芥槸榛樿鍊硷紝鎴栬�呭彧鏄弽搴忓垪鍖栧け璐�</param>
+    /// <returns>杩斿洖鏄惁鍖呭惈鍊硷紝鍗充娇鍙嶅簭鍒楀寲澶辫触</returns>
+    bool TryGetValue<T>(string key, out T value);
+
+    /// <summary>绱姞锛屽師瀛愭搷浣�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍙樺寲閲�</param>
+    /// <returns></returns>
+    long Increment(string key, long value);
+
+    /// <summary>绱姞锛屽師瀛愭搷浣�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍙樺寲閲�</param>
+    /// <returns></returns>
+    double Increment(string key, double value);
+
+    /// <summary>閫掑噺锛屽師瀛愭搷浣�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍙樺寲閲�</param>
+    /// <returns></returns>
+    long Decrement(string key, long value);
+
+    /// <summary>閫掑噺锛屽師瀛愭搷浣�</summary>
+    /// <param name="key">閿�</param>
+    /// <param name="value">鍙樺寲閲�</param>
+    /// <returns></returns>
+    double Decrement(string key, double value);
+
+    #endregion 楂樼骇鎿嶄綔
+
+    #region 浜嬪姟
+
+    /// <summary>鎻愪氦鍙樻洿銆傞儴鍒嗘彁渚涜�呴渶瑕佸埛鐩�</summary>
+    /// <returns></returns>
+    int Commit();
+
+    /// <summary>鐢宠鍒嗗竷寮忛攣</summary>
+    /// <param name="key">瑕侀攣瀹氱殑key</param>
+    /// <param name="msTimeout">閿佺瓑寰呮椂闂达紝鍗曚綅姣</param>
+    /// <returns></returns>
+    IDisposable AcquireLock(string key, int msTimeout);
+
+    /// <summary>鐢宠鍒嗗竷寮忛攣</summary>
+    /// <param name="key">瑕侀攣瀹氱殑key</param>
+    /// <param name="msTimeout">閿佺瓑寰呮椂闂达紝鐢宠鍔犻攣鏃跺鏋滈亣鍒板啿绐佸垯绛夊緟鐨勬渶澶ф椂闂达紝鍗曚綅姣</param>
+    /// <param name="msExpire">閿佽繃鏈熸椂闂达紝瓒呰繃璇ユ椂闂村鏋滄病鏈変富鍔ㄩ噴鏀惧垯鑷姩閲婃斁閿侊紝蹇呴』鏁存暟绉掞紝鍗曚綅姣</param>
+    /// <param name="throwOnFailure">澶辫触鏃舵槸鍚︽姏鍑哄紓甯革紝濡傛灉涓嶆姏鍑哄紓甯革紝鍙�氳繃杩斿洖null寰楃煡鐢宠閿佸け璐�</param>
+    /// <returns></returns>
+    IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure);
+
+    #endregion 浜嬪姟
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Options/CacheSettingsOptions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Options/CacheSettingsOptions.cs
new file mode 100644
index 0000000..f1b2e25
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Options/CacheSettingsOptions.cs
@@ -0,0 +1,46 @@
+锘�//using Furion.ConfigurableOptions;
+using WIDESEA_Core.Core;
+
+namespace WIDESEA_Cache;
+
+/// <summary>
+/// 缂撳瓨璁剧疆
+/// </summary>
+public class CacheSettingsOptions : IConfigurableOptions
+{
+    /// <summary>
+    /// 浣跨敤Redis
+    /// </summary>
+    public bool UseRedis { get; set; }
+
+    /// <summary>
+    /// 鏄惁姣忔鍚姩閮芥竻绌�
+    /// </summary>
+    public RedisSettings RedisSettings { get; set; }
+}
+
+/// <summary>
+/// Redis璁剧疆
+/// </summary>
+public class RedisSettings
+{
+    /// <summary>
+    /// 杩炴帴鍦板潃
+    /// </summary>
+    public string Address { get; set; }
+
+    /// <summary>
+    /// 瀵嗙爜
+    /// </summary>
+    public string Password { get; set; }
+
+    /// <summary>
+    /// 鏁版嵁搴�
+    /// </summary>
+    public int Db { get; set; } = 0;
+
+    /// <summary>
+    /// 鏄惁姣忔鍚姩閮芥竻绌�
+    /// </summary>
+    public bool ClearRedis { get; set; } = false;
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheHashService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheHashService.cs
new file mode 100644
index 0000000..4d96f71
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheHashService.cs
@@ -0,0 +1,88 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// <inheritdoc cref="ISimpleCacheService"/>
+/// 鍐呭瓨缂撳瓨
+/// </summary>
+public partial class MemoryCacheService : ISimpleCacheService
+{
+    /// <inheritdoc/>
+    public void HashAdd<T>(string key, string hashKey, T value)
+    {
+        //鑾峰彇瀛楀吀
+        var exist = _memoryCache.GetDictionary<T>(key);
+        if (exist.ContainsKey(hashKey))//濡傛灉鍖呭惈Key
+            exist[hashKey] = value;//閲嶆柊璧嬪��
+        else exist.Add(hashKey, value);//鍔犱笂鏂扮殑鍊�
+        _memoryCache.Set(key, exist);
+    }
+
+    //private IDictionary<string,T> GetDictionary(string key,string)
+
+    /// <inheritdoc/>
+    public bool HashSet<T>(string key, Dictionary<string, T> dic)
+    {
+        //鑾峰彇瀛楀吀
+        var exist = _memoryCache.GetDictionary<T>(key);
+        dic.ForEach(it =>
+        {
+            if (exist.ContainsKey(it.Key))//濡傛灉鍖呭惈Key
+                exist[it.Key] = it.Value;//閲嶆柊璧嬪��
+            else exist.Add(it.Key, it.Value);//鍔犱笂鏂扮殑鍊�
+        });
+
+        return true;
+    }
+
+    /// <inheritdoc/>
+    public int HashDel<T>(string key, params string[] fields)
+    {
+        int result = 0;
+        //鑾峰彇瀛楀吀
+        var exist = _memoryCache.GetDictionary<T>(key);
+        foreach (var field in fields)
+        {
+            if (field != null && exist.ContainsKey(field))//濡傛灉鍖呭惈Key
+            {
+                exist.Remove(field);//鍒犻櫎
+                result++;
+            }
+        }
+        return result;
+    }
+
+    /// <inheritdoc/>
+    public List<T> HashGet<T>(string key, params string[] fields)
+    {
+        List<T> list = new List<T>();
+        //鑾峰彇瀛楀吀
+        var exist = _memoryCache.GetDictionary<T>(key);
+        foreach (var field in fields)
+        {
+            if (exist.ContainsKey(field))//濡傛灉鍖呭惈Key
+            {
+                list.Add(exist[field]);
+            }
+            else { list.Add(default); }
+        }
+        return list;
+    }
+
+    /// <inheritdoc/>
+    public T HashGetOne<T>(string key, string field)
+    {
+        //鑾峰彇瀛楀吀
+        var exist = _memoryCache.GetDictionary<T>(key);
+
+        exist.TryGetValue(field, out T result);
+        var data = result.DeepClone();
+        return data;
+    }
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> HashGetAll<T>(string key)
+    {
+        var data = _memoryCache.GetDictionary<T>(key);
+        return data;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheService.cs
new file mode 100644
index 0000000..78a2b6d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/MemoryCacheService.cs
@@ -0,0 +1,219 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// <inheritdoc cref="ISimpleCacheService"/>
+/// 鍐呭瓨缂撳瓨
+/// </summary>
+public partial class MemoryCacheService : ISimpleCacheService
+{
+    public readonly MemoryCache _memoryCache;
+
+    public MemoryCacheService()
+    {
+        _memoryCache = new MemoryCache();
+    }
+
+    #region 鏅�氭搷浣�
+
+    /// <inheritdoc/>
+    public T Get<T>(string key)
+    {
+        var data = _memoryCache.Get<string>(key);
+        return data.ToObject<T>();
+    }
+
+    /// <inheritdoc/>
+    public int Remove(params string[] keys)
+    {
+        return _memoryCache.Remove(keys);
+    }
+
+    /// <inheritdoc/>
+    public bool Set<T>(string key, T value, int expire = -1)
+    {
+        return _memoryCache.Set(key, value.ToJson(), expire);
+    }
+
+    /// <inheritdoc/>
+    public bool Set<T>(string key, T value, TimeSpan expire)
+    {
+        return _memoryCache.Set(key, value.ToJson(), expire);
+    }
+
+    /// <inheritdoc/>
+    public bool SetExpire(string key, TimeSpan expire)
+    {
+        return _memoryCache.SetExpire(key, expire);
+    }
+
+    /// <inheritdoc/>
+    public TimeSpan GetExpire(string key)
+    {
+        return _memoryCache.GetExpire(key);
+    }
+
+    /// <inheritdoc/>
+    public bool ContainsKey(string key)
+    {
+        return _memoryCache.ContainsKey(key);
+    }
+
+    /// <inheritdoc/>
+    public void Clear()
+    {
+        _memoryCache.Clear();
+    }
+
+    /// <inheritdoc/>
+    public void DelByPattern(string pattern)
+    {
+        var keys = _memoryCache.Keys.ToList();//鑾峰彇鎵�鏈塳ey
+        keys.ForEach(it =>
+        {
+            if (it.Contains(pattern))//濡傛灉鍖归厤
+                _memoryCache.Remove(pattern);
+        });
+    }
+
+    #endregion 鏅�氭搷浣�
+
+    #region 闆嗗悎鎿嶄綔
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> GetAll<T>(IEnumerable<string> keys)
+    {
+        IDictionary<string, T>? result = default;//瀹氫箟闆嗗悎
+        IDictionary<string, string>? data = _memoryCache.GetAll<string>(keys);//鑾峰彇鏁版嵁
+        data.ForEach(it =>
+        {
+            result.Add(it.Key, it.Value.ToObject<T>());//閬嶅巻鏁版嵁,鏍煎紡鍖栧苟鍔犲埌鏂扮殑鏁版嵁闆嗗悎
+        });
+        return result;
+    }
+
+    /// <inheritdoc/>
+    public void SetAll<T>(IDictionary<string, T> values, int expire = -1)
+    {
+        IDictionary<string, string>? result = default;//瀹氫箟闆嗗悎
+        values.ForEach(it =>
+        {
+            result.Add(it.Key, it.Value.ToJson());//閬嶅巻鏁版嵁,鏍煎紡鍖栧苟鍔犲埌鏂扮殑鏁版嵁闆嗗悎
+        });
+        _memoryCache.SetAll(values, expire);
+    }
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> GetDictionary<T>(string key)
+    {
+        IDictionary<string, T>? result = default;//瀹氫箟闆嗗悎
+        var data = _memoryCache.GetDictionary<string>(key);
+        data.ForEach(it =>
+        {
+            result.Add(it.Key, it.Value.ToObject<T>());//閬嶅巻鏁版嵁,鏍煎紡鍖栧苟鍔犲埌鏂扮殑鏁版嵁闆嗗悎
+        });
+        return result;
+    }
+
+    /// <inheritdoc/>
+    public IProducerConsumer<T> GetQueue<T>(string key)
+    {
+        return _memoryCache.GetQueue<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public IProducerConsumer<T> GetStack<T>(string key)
+    {
+        return _memoryCache.GetStack<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public ICollection<T> GetSet<T>(string key)
+    {
+        return _memoryCache.GetSet<T>(key);
+    }
+
+    #endregion 闆嗗悎鎿嶄綔
+
+    #region 楂樼骇鎿嶄綔
+
+    /// <inheritdoc/>
+    public bool Add<T>(string key, T value, int expire = -1)
+    {
+        return _memoryCache.Add(key, value.ToJson(), expire);
+    }
+
+    /// <inheritdoc/>
+    public IList<T> GetList<T>(string key)
+    {
+        IList<T> result = default;//瀹氫箟闆嗗悎
+        var data = _memoryCache.GetList<string>(key);
+        data.ForEach(it =>
+        {
+            result.Add(it.ToObject<T>());//閬嶅巻鏁版嵁,鏍煎紡鍖栧苟鍔犲埌鏂扮殑鏁版嵁闆嗗悎
+        });
+        return result;
+    }
+
+    /// <inheritdoc/>
+    public T Replace<T>(string key, T value)
+    {
+        return _memoryCache.Replace(key, value);
+    }
+
+    /// <inheritdoc/>
+    public bool TryGetValue<T>(string key, out T value)
+    {
+        var result = string.Empty;
+        _ = _memoryCache.TryGetValue<string>(key, out result);
+        value = result.ToObject<T>();
+        return value == null;
+    }
+
+    /// <inheritdoc/>
+    public long Decrement(string key, long value)
+    {
+        return _memoryCache.Decrement(key, value);
+    }
+
+    /// <inheritdoc/>
+    public double Decrement(string key, double value)
+    {
+        return _memoryCache.Decrement(key, value);
+    }
+
+    /// <inheritdoc/>
+    public long Increment(string key, long value)
+    {
+        return _memoryCache.Increment(key, value);
+    }
+
+    /// <inheritdoc/>
+    public double Increment(string key, double value)
+    {
+        return _memoryCache.Increment(key, value);
+    }
+
+    #endregion 楂樼骇鎿嶄綔
+
+    #region 浜嬪姟
+
+    /// <inheritdoc/>
+    public int Commit()
+    {
+        return _memoryCache.Commit();
+    }
+
+    /// <inheritdoc/>
+    public IDisposable AcquireLock(string key, int msTimeout)
+    {
+        return _memoryCache.AcquireLock(key, msTimeout);
+    }
+
+    /// <inheritdoc/>
+    public IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure)
+    {
+        return _memoryCache.AcquireLock(key, msTimeout, msExpire, throwOnFailure);
+    }
+
+    #endregion 浜嬪姟
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheHashService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheHashService.cs
new file mode 100644
index 0000000..93e9b10
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheHashService.cs
@@ -0,0 +1,45 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// <inheritdoc cref="ISimpleCacheService"/>
+/// Redis缂撳瓨
+/// </summary>
+
+public partial class RedisCacheService : ISimpleCacheService
+{
+    /// <inheritdoc/>
+    public void HashAdd<T>(string key, string hashKey, T value)
+    {
+        _simpleRedis.HashAdd<T>(key, hashKey, value);
+    }
+
+    /// <inheritdoc/>
+    public bool HashSet<T>(string key, Dictionary<string, T> dic)
+    {
+        return _simpleRedis.HashSet<T>(key, dic);
+    }
+
+    /// <inheritdoc/>
+    public int HashDel<T>(string key, params string[] fields)
+    {
+        return _simpleRedis.HashDel<T>(key, fields);
+    }
+
+    /// <inheritdoc/>
+    public List<T> HashGet<T>(string key, params string[] fields)
+    {
+        return _simpleRedis.HashGet<T>(key, fields);
+    }
+
+    /// <inheritdoc/>
+    public T HashGetOne<T>(string key, string field)
+    {
+        return _simpleRedis.HashGetOne<T>(key, field);
+    }
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> HashGetAll<T>(string key)
+    {
+        return _simpleRedis.HashGetAll<T>(key);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheService.cs
new file mode 100644
index 0000000..bfb225c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/Service/RedisCacheService.cs
@@ -0,0 +1,187 @@
+锘縩amespace WIDESEA_Cache;
+
+/// <summary>
+/// <inheritdoc cref="ISimpleCacheService"/>
+/// Redis缂撳瓨
+/// </summary>
+public partial class RedisCacheService : ISimpleCacheService
+{
+    private readonly ISimpleRedis _simpleRedis;
+
+    public RedisCacheService(ISimpleRedis simpleRedis)
+    {
+        this._simpleRedis = simpleRedis;
+    }
+
+    #region 鏅�氭搷浣�
+
+    /// <inheritdoc/>
+    public T Get<T>(string key)
+    {
+        return _simpleRedis.Get<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public int Remove(params string[] keys)
+    {
+        return _simpleRedis.GetFullRedis().Remove(keys);
+    }
+
+    /// <inheritdoc/>
+    public bool Set<T>(string key, T value, int expire = -1)
+    {
+        return _simpleRedis.Set(key, value, expire);
+    }
+
+    /// <inheritdoc/>
+    public bool Set<T>(string key, T value, TimeSpan expire)
+    {
+        return _simpleRedis.Set(key, value, expire);
+    }
+
+    /// <inheritdoc/>
+    public bool SetExpire(string key, TimeSpan expire)
+    {
+        return _simpleRedis.GetFullRedis().SetExpire(key, expire);
+    }
+
+    /// <inheritdoc/>
+    public TimeSpan GetExpire(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetExpire(key);
+    }
+
+    /// <inheritdoc/>
+    public bool ContainsKey(string key)
+    {
+        return _simpleRedis.ContainsKey(key);
+    }
+
+    /// <inheritdoc/>
+    public void Clear()
+    {
+        _simpleRedis.Clear();
+    }
+
+    /// <inheritdoc/>
+    public void DelByPattern(string pattern)
+    {
+        _simpleRedis.DelByPattern(pattern);
+    }
+
+    #endregion 鏅�氭搷浣�
+
+    #region 闆嗗悎鎿嶄綔
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> GetAll<T>(IEnumerable<string> keys)
+    {
+        return _simpleRedis.GetFullRedis().GetAll<T>(keys);
+    }
+
+    /// <inheritdoc/>
+    public void SetAll<T>(IDictionary<string, T> values, int expire = -1)
+    {
+        _simpleRedis.GetFullRedis().SetAll(values, expire);
+    }
+
+    /// <inheritdoc/>
+    public IDictionary<string, T> GetDictionary<T>(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetDictionary<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public IProducerConsumer<T> GetQueue<T>(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetQueue<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public IProducerConsumer<T> GetStack<T>(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetStack<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public ICollection<T> GetSet<T>(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetSet<T>(key);
+    }
+
+    #endregion 闆嗗悎鎿嶄綔
+
+    #region 楂樼骇鎿嶄綔
+
+    /// <inheritdoc/>
+    public bool Add<T>(string key, T value, int expire = -1)
+    {
+        return _simpleRedis.GetFullRedis().Add(key, value, expire);
+    }
+
+    /// <inheritdoc/>
+    public IList<T> GetList<T>(string key)
+    {
+        return _simpleRedis.GetFullRedis().GetList<T>(key);
+    }
+
+    /// <inheritdoc/>
+    public T Replace<T>(string key, T value)
+    {
+        return _simpleRedis.GetFullRedis().Replace(key, value);
+    }
+
+    /// <inheritdoc/>
+    public bool TryGetValue<T>(string key, out T value)
+    {
+        return _simpleRedis.GetFullRedis().TryGetValue(key, out value);
+    }
+
+    /// <inheritdoc/>
+    public long Decrement(string key, long value)
+    {
+        return _simpleRedis.GetFullRedis().Decrement(key, value);
+    }
+
+    /// <inheritdoc/>
+    public double Decrement(string key, double value)
+    {
+        return _simpleRedis.GetFullRedis().Decrement(key, value);
+    }
+
+    /// <inheritdoc/>
+    public long Increment(string key, long value)
+    {
+        return _simpleRedis.GetFullRedis().Increment(key, value);
+    }
+
+    /// <inheritdoc/>
+    public double Increment(string key, double value)
+    {
+        return _simpleRedis.GetFullRedis().Increment(key, value);
+    }
+
+    #endregion 楂樼骇鎿嶄綔
+
+    #region 浜嬪姟
+
+    /// <inheritdoc/>
+    public int Commit()
+    {
+        return _simpleRedis.GetFullRedis().Commit();
+    }
+
+    /// <inheritdoc/>
+    public IDisposable AcquireLock(string key, int msTimeout)
+    {
+        return _simpleRedis.GetFullRedis().AcquireLock(key, msTimeout);
+    }
+
+    /// <inheritdoc/>
+    public IDisposable AcquireLock(string key, int msTimeout, int msExpire, bool throwOnFailure)
+    {
+        return _simpleRedis.GetFullRedis().AcquireLock(key, msTimeout, msExpire, throwOnFailure);
+    }
+
+    #endregion 浜嬪姟
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/WIDESEA_Cache.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/WIDESEA_Cache.csproj
new file mode 100644
index 0000000..1cde5b8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Cache/WIDESEA_Cache.csproj
@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="SimpleRedis" Version="1.1.9" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/DetailMessage/TaskDescription.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/DetailMessage/TaskDescription.cs
new file mode 100644
index 0000000..360a5b4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/DetailMessage/TaskDescription.cs
@@ -0,0 +1,31 @@
+锘縰sing System.Net;
+
+namespace WIDESEA_Common
+{
+    public class TaskDescription
+    {
+        /// <summary>
+        /// 鑾峰彇浠诲姟鏇存柊鎻忚堪
+        /// </summary>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <param name="newPosition">鏂颁綅缃�</param>
+        /// <param name="statusDescription">鐘舵�佹弿杩�</param>
+        /// <returns>浠诲姟鏇存柊鎻忚堪瀛楃涓�</returns>
+        public static string GetTaskUpdateDescription(string palletCode, string currentAddress, string newPosition, string statusDescription)
+        {
+            return $"浠诲姟鏇存柊->鎵樼洏銆恵palletCode}銆戣揣鐗╀綅缃粠銆恵currentAddress}銆戠Щ鍔ㄨ嚦銆恵newPosition}銆�--{statusDescription}";
+        }
+
+        /// <summary>
+        /// 鑾峰彇浠诲姟鏇存柊鎻忚堪
+        /// </summary>
+        /// <param name="currentAddress">褰撳墠鍦板潃</param>
+        /// <param name="newPosition">鏂颁綅缃�</param>
+        /// <param name="statusDescription">鐘舵�佹弿杩�</param>
+        /// <returns>浠诲姟鏇存柊鎻忚堪瀛楃涓�</returns>
+        public static string GetTaskInsertDescription(string palletCode, string currentAddress, string newPosition, string statusDescription)
+        {
+            return $"浠诲姟娣诲姞->鎵樼洏銆恵palletCode}銆戣揣鐗╀粠銆恵currentAddress}銆戝叆搴撶敵璇峰垎閰嶅贩閬撱�恵newPosition}銆�--{statusDescription}";
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs
new file mode 100644
index 0000000..2648122
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs
@@ -0,0 +1,195 @@
+锘縰sing LogLibrary.Log;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common;
+
+public class HttpsClient
+{
+    private static readonly LogFactory LogFactory = new LogFactory();
+
+    // 灏佽涓�涓敤HttpClient鍙戦�丟ET璇锋眰鐨勬柟娉曟湁鍙傛暟
+    public static async Task<string> GetAsync(string url, Dictionary<string, object> parameters)
+    {
+        try
+        {
+            // 璁板綍璇锋眰鍙傛暟
+            LogRequestParameters(parameters, url);
+
+            // 灏嗗弬鏁版嫾鎺ュ埌URL涓�
+            string queryString = string.Join("&", parameters.Select(x => $"{x.Key}={x.Value}"));
+            url += "?" + queryString;
+
+            // 鍒涘缓HttpClient瀹炰緥
+            using (HttpClient client = new HttpClient())
+            {
+                // 鍙戦�丟ET璇锋眰骞惰幏鍙栧搷搴�
+                HttpResponseMessage response = await client.GetAsync(url);
+
+                // 纭繚鍝嶅簲鎴愬姛
+                response.EnsureSuccessStatusCode();
+
+                // 璇诲彇鍝嶅簲鍐呭
+                string responseBody = await response.Content.ReadAsStringAsync();
+
+                // 璁板綍鍝嶅簲鍙傛暟
+                LogResponseParameters(responseBody, url);
+
+                // 杩斿洖鍝嶅簲鍐呭
+                return responseBody;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogErrorParameters(ex.StackTrace, ex.Message, url);
+            return ex.Message;
+        }
+    }
+
+    // 鐢ㄤ簬杩借釜姣忎釜璇锋眰鐨勮皟鐢ㄦ鏁板拰鏈�鍚庤姹傛椂闂淬��
+    //private static readonly Dictionary<string, (int Count, DateTime LastRequestTime)> requestTracker = new();
+    // 灏佽涓�涓敤HttpClient鍙戦�丳ost璇锋眰鐨勬柟娉曟湁鍙傛暟
+    public static async Task<string> PostAsync(string url, Dictionary<string, object> parameters)
+    {
+        try
+        {
+            //// 鍒涘缓涓�涓柊鐨勫瓧鍏革紝鎺掗櫎 RequestTime 鍜� SessionId
+            //var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
+
+            //string requestKey = $"{url}:{JsonConvert.SerializeObject(filteredParameters)}";
+            //// 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
+            //if (requestTracker.TryGetValue(requestKey, out var requestInfo))
+            //{
+            //    if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3))
+            //    {
+            //        // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
+            //        throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+            //    }
+            //}
+
+            //// 鏇存柊璇锋眰璺熻釜淇℃伅
+            //if (requestTracker.ContainsKey(requestKey))
+            //{
+            //    requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
+            //}
+            //else
+            //{
+            //    requestTracker[requestKey] = (1, DateTime.Now);
+            //}
+
+
+            // 璁板綍璇锋眰鍙傛暟
+            LogRequestParameters(parameters, url);
+
+            // 鍒涘缓HttpClient瀹炰緥
+            using (HttpClient client = new HttpClient())
+            {
+                // 灏嗗弬鏁拌浆鎹负FormUrlEncodedContent
+                string content = JsonConvert.SerializeObject(parameters);
+
+                var request = new HttpRequestMessage(HttpMethod.Post, url);
+
+                request.Content = new StringContent(content, Encoding.UTF8, "application/json");
+
+                HttpResponseMessage response = await client.SendAsync(request);
+
+                // 纭繚鍝嶅簲鎴愬姛
+                response.EnsureSuccessStatusCode();
+
+                // 璇诲彇鍝嶅簲鍐呭
+                string responseBody = await response.Content.ReadAsStringAsync();
+
+                // 璁板綍鍝嶅簲鍙傛暟
+                LogResponseParameters(responseBody, url);
+
+                // 杩斿洖鍝嶅簲鍐呭
+                return responseBody;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogErrorParameters(ex.StackTrace,ex.Message, url);
+            return ex.Message;
+        }
+        
+    }
+
+
+    public static async Task<string> PostAsync(string url, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null)
+    {
+        try
+        {
+            LogRequestParameters(requestJson, url);
+
+            string result = string.Empty;
+            using (HttpContent httpContent = new StringContent(requestJson))
+            {
+                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                using HttpClient httpClient = new HttpClient();
+                httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                if (headers != null)
+                {
+                    foreach (var header in headers)
+                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                }
+                result = await httpClient.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync();
+            }
+            LogResponseParameters(result, url);
+
+            return result;
+        
+        }
+        catch (Exception ex)
+        {
+            LogErrorParameters(ex.StackTrace, ex.Message, url);
+            Console.WriteLine(ex.Message);
+        }
+        return null;
+    }
+    private static void LogErrorParameters(string errordetail, string error, string url = "")
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.Append(Environment.NewLine);
+        builder.Append("---------------------------------------------");
+        builder.Append(Environment.NewLine);
+        builder.Append("url:" + url + "寮傚父璇︾粏淇℃伅: " + JsonConvert.SerializeObject(error));
+        builder.Append("url:" + url + "寮傚父淇℃伅: " + JsonConvert.SerializeObject(error));
+        LogFactory.GetLog("API鎺ュ彛寮傚父").Error(true, builder);
+    }
+    private static void LogRequestParameters(Dictionary<string, object> parameters, string url = "")
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.Append(Environment.NewLine);
+        builder.Append("---------------------------------------------");
+        builder.Append(Environment.NewLine);
+        builder.Append("url:" + url + "璇锋眰鍙傛暟: " + JsonConvert.SerializeObject(parameters));
+        LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+    }
+
+    private static void LogRequestParameters(string parameters, string url = "")
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.Append(Environment.NewLine);
+        builder.Append("---------------------------------------------");
+        builder.Append(Environment.NewLine);
+        builder.Append("url:" + url + "璇锋眰鍙傛暟: " + JsonConvert.SerializeObject(parameters));
+        LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+    }
+
+    private static void LogResponseParameters(string responseBody, string url = "")
+    {
+        StringBuilder builder = new StringBuilder();
+        builder.Append(Environment.NewLine);
+        builder.Append("url:" + url + "鍝嶅簲鍙傛暟: " + responseBody);
+        builder.Append(Environment.NewLine);
+        builder.Append("---------------------------------------------");
+        builder.Append(Environment.NewLine);
+        LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StationManager/StationManager.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StationManager/StationManager.cs
new file mode 100644
index 0000000..38f95f3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StationManager/StationManager.cs
@@ -0,0 +1,62 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WIDESEA_Common
+{
+    /// <summary>
+    /// 绔欏彴绠$悊
+    /// </summary>
+    public enum StationManager
+    {
+        /// <summary>
+        /// 鍏ュ簱鍙�
+        /// </summary>
+        Inbound = 1,
+
+        /// <summary>
+        /// 鍑哄簱鍙�
+        /// </summary>
+        Outbound,
+
+        /// <summary>
+        /// 鍒嗗鍑哄簱娈碉紙寮傚父鎺掑嚭鍙o級
+        /// </summary>
+        AbnormalOutStation,   //鍒嗗鍑哄簱娈碉紙寮傚父鎺掑嚭鍙o級
+
+        /// <summary>
+        /// NG宸ョ珯鏀炬枡鍙�
+        /// </summary>
+        NGPutStation,
+
+        /// <summary>
+        /// NG宸ョ珯鍙栨枡鍙�
+        /// </summary>
+        NGTakeStation,
+
+        /// <summary>
+        /// 绌烘鍏ュ簱鍙�
+        /// </summary>
+        EmptyInbound,
+
+        /// <summary>
+        /// 绌烘鍑哄簱鍙�
+        /// </summary>
+        EmptyOutbound,
+
+
+
+
+        /// <summary>
+        /// 寮傚父鎺掑嚭鍙�(鍏ュ簱娈�)   --鍒嗗鍏ュ簱娈�
+        /// </summary>
+        AbnormalInStation = 15,
+
+        /// <summary>
+        /// 娑堥槻绔欏彴
+        /// </summary>
+        FireStation = 100,
+
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StatusChangeType/StatusChangeTypeEnum.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StatusChangeType/StatusChangeTypeEnum.cs
new file mode 100644
index 0000000..736afe7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/StatusChangeType/StatusChangeTypeEnum.cs
@@ -0,0 +1,31 @@
+锘縰sing System.ComponentModel;
+
+namespace WIDESEA_Common
+{
+    public enum StatusChangeTypeEnum
+    {
+        /// <summary>
+        /// 鑷姩鍏ュ簱
+        /// </summary>
+        [Description("鑷姩鍏ュ簱")]
+        AutomaticInbound = 1,
+
+        /// <summary>
+        /// 鑷姩鍑哄簱
+        /// </summary>
+        [Description("鑷姩鍑哄簱")]
+        AutomaticOutbound = 2,
+
+        /// <summary>
+        /// 鑷姩绉诲簱
+        /// </summary>
+        [Description("鑷姩绉诲簱")]
+        AutomaticRelocation = 3,
+
+        /// <summary>
+        /// 浜哄伐鎿嶄綔
+        /// </summary>
+        [Description("浜哄伐鎿嶄綔")]
+        ManualOperation = 4
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj
new file mode 100644
index 0000000..d9b9bc4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj
@@ -0,0 +1,23 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Location\**" />
+    <EmbeddedResource Remove="Location\**" />
+    <None Remove="Location\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs
new file mode 100644
index 0000000..50c3754
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/LogAOP.cs
@@ -0,0 +1,328 @@
+锘縰sing Castle.DynamicProxy;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.SignalR;
+using Newtonsoft.Json;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.AOP
+{
+    /// <summary>
+	/// 鎷︽埅鍣˙logLogAOP 缁ф壙IInterceptor鎺ュ彛
+	/// </summary>
+	public class LogAOP : IInterceptor
+    {
+        private readonly IHttpContextAccessor _accessor;
+
+        public LogAOP(IHttpContextAccessor accessor)
+        {
+            _accessor = accessor;
+        }
+
+        /// <summary>
+        /// 瀹炰緥鍖朓Interceptor鍞竴鏂规硶
+        /// </summary>
+        /// <param name="invocation">鍖呭惈琚嫤鎴柟娉曠殑淇℃伅</param>
+        public void Intercept(IInvocation invocation)
+        {
+            string UserName = _accessor.HttpContext?.User?.Identity?.Name;
+            string json;
+            try
+            {
+                if (invocation.Arguments.Any())
+                {
+                    json = JsonConvert.SerializeObject(invocation.Arguments);
+                }
+                else
+                {
+                    json = "鏃犲弬鏁�";
+                }
+            }
+            catch (Exception ex)
+            {
+                json = "鏃犳硶搴忓垪鍖栵紝鍙兘鏄叞濮嗚揪琛ㄨ揪寮忕瓑鍘熷洜閫犳垚锛屾寜鐓ф鏋朵紭鍖栦唬鐮�" + ex.ToString();
+            }
+
+            DateTime startTime = DateTime.Now;
+            AOPLogInfo apiLogAopInfo = new AOPLogInfo
+            {
+                RequestTime = startTime.ToString("yyyy-MM-dd hh:mm:ss fff"),
+                OpUserName = "銆愬綋鍓嶆搷浣滅敤鎴枫�戯細" + UserName,
+                RequestMethodName = "銆愬綋鍓嶆墽琛屾柟娉曘�戯細" + invocation.Method.Name,
+                RequestParamsName = "銆愭惡甯︾殑鍙傛暟鏈夈�戯細" + string.Join(", ", invocation.Arguments.Select(a => (a ?? "").ToString()).ToArray()),
+                RequestParamsData = json
+            };
+
+            var dataIntercept = $"";
+
+            try
+            {
+                MiniProfiler.Current.Step($"鎵ц{invocation.InvocationTarget}.{invocation.Method.Name}()鏂规硶 -> ");
+                //鍦ㄨ鎷︽埅鐨勬柟娉曟墽琛屽畬姣曞悗 缁х画鎵ц褰撳墠鏂规硶锛屾敞鎰忔槸琚嫤鎴殑鏄紓姝ョ殑
+                invocation.Proceed();
+
+                // 寮傛鑾峰彇寮傚父锛屽厛鎵ц
+                if (IsAsyncMethod(invocation.Method))
+                {
+                    #region 鏂规涓�
+
+                    //Wait task execution and modify return value
+                    if (invocation.Method.ReturnType == typeof(Task))
+                    {
+                        invocation.ReturnValue = InternalAsyncHelper.AwaitTaskWithPostActionAndFinally(
+                            (Task)invocation.ReturnValue,
+                            async () => await SuccessAction(invocation, apiLogAopInfo, startTime), /*鎴愬姛鏃舵墽琛�*/
+                            ex =>
+                            {
+                                LogEx(ex, apiLogAopInfo);
+                            });
+                    }
+                    //Task<TResult>
+                    else
+                    {
+                        invocation.ReturnValue = InternalAsyncHelper.CallAwaitTaskWithPostActionAndFinallyAndGetResult(
+                            invocation.Method.ReturnType.GenericTypeArguments[0],
+                            invocation.ReturnValue,
+                            //async () => await SuccessAction(invocation, dataIntercept),/*鎴愬姛鏃舵墽琛�*/
+                            async (o) => await SuccessAction(invocation, apiLogAopInfo, startTime, o), /*鎴愬姛鏃舵墽琛�*/
+                            ex =>
+                            {
+                                LogEx(ex, apiLogAopInfo);
+                            });
+                    }
+
+                    #endregion 鏂规涓�
+
+                    // 濡傛灉鏂规涓�涓嶈锛岃瘯璇曡繖涓柟妗�
+                    //#region 鏂规浜�
+
+                    //var type = invocation.Method.ReturnType;
+                    //var resultProperty = type.GetProperty("Result");
+                    //DateTime endTime = DateTime.Now;
+                    //string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+                    //apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+                    //apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+                    //apiLogAopInfo.ResponseJsonData = JsonConvert.SerializeObject(resultProperty.GetValue(invocation.ReturnValue));
+
+                    ////dataIntercept += ($"銆愬搷搴旀椂闂淬�戯細{ResponseTime}ms\r\n");
+                    ////dataIntercept += ($"銆愭墽琛屽畬鎴愭椂闂淬�戯細{endTime.ToString("yyyy-MM-dd hh:mm:ss fff")}\r\n");
+                    ////dataIntercept += ($"銆愭墽琛屽畬鎴愮粨鏋溿�戯細{JsonConvert.SerializeObject(resultProperty.GetValue(invocation.ReturnValue))}\r\n");
+
+                    //Parallel.For(0, 1, e =>
+                    //{
+                    //    //LogLock.OutLogAOP("AOPLog", new string[] { dataIntercept });
+                    //    LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString() + " - ResponseJsonDataType:" + type, JsonConvert.SerializeObject(apiLogAopInfo) });
+                    //});
+
+                    //#endregion
+                }
+                else
+                {
+                    // 鍚屾1
+                    string jsonResult;
+                    try
+                    {
+                        jsonResult = JsonConvert.SerializeObject(invocation.ReturnValue);
+                    }
+                    catch (Exception ex)
+                    {
+                        jsonResult = "鏃犳硶搴忓垪鍖栵紝鍙兘鏄叞濮嗚揪琛ㄨ揪寮忕瓑鍘熷洜閫犳垚锛屾寜鐓ф鏋朵紭鍖栦唬鐮�" + ex.ToString();
+                    }
+
+                    var type = invocation.Method.ReturnType;
+                    var resultProperty = type.GetProperty("Result");
+                    DateTime endTime = DateTime.Now;
+                    string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+                    apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+                    apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+                    apiLogAopInfo.ResponseJsonData = jsonResult;
+                    Parallel.For(0, 1, e =>
+                    {
+                        LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) });
+                    });
+                }
+            }
+            catch (Exception ex) // 鍚屾2
+            {
+                LogEx(ex, apiLogAopInfo);
+                throw;
+            }
+        }
+
+        private async Task SuccessAction(IInvocation invocation, AOPLogInfo apiLogAopInfo, DateTime startTime, object o = null)
+        {
+            DateTime endTime = DateTime.Now;
+            string ResponseTime = (endTime - startTime).Milliseconds.ToString();
+            apiLogAopInfo.ResponseTime = endTime.ToString("yyyy-MM-dd hh:mm:ss fff");
+            apiLogAopInfo.ResponseIntervalTime = ResponseTime + "ms";
+            apiLogAopInfo.ResponseJsonData = JsonConvert.SerializeObject(o);
+
+            await Task.Run(() =>
+            {
+                Parallel.For(0, 1, e =>
+                {
+                    //LogLock.OutSql2Log("AOPLog", new string[] { JsonConvert.SerializeObject(apiLogAopInfo) });
+                    LogLock.OutLogAOP("AOPLog", new string[] { apiLogAopInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopInfo) });
+                });
+            });
+        }
+
+        private void LogEx(Exception ex, AOPLogInfo dataIntercept)
+        {
+            if (ex != null)
+            {
+                //鎵ц鐨� service 涓紝鏀跺綍寮傚父
+                MiniProfiler.Current.CustomTiming("Errors锛�", ex.Message);
+                //鎵ц鐨� service 涓紝鎹曡幏寮傚父
+                AOPLogExInfo apiLogAopExInfo = new AOPLogExInfo
+                {
+                    ExMessage = ex.Message,
+                    InnerException = "InnerException-鍐呴儴寮傚父:\r\n" + (ex.InnerException == null ? "" : ex.InnerException.InnerException.ToString()) +
+                                     "\r\nStackTrace-鍫嗘爤璺熻釜:\r\n" + (ex.StackTrace == null ? "" : ex.StackTrace.ToString()),
+                    ApiLogAopInfo = dataIntercept
+                };
+                // 寮傚父鏃ュ織閲屾湁璇︾粏鐨勫爢鏍堜俊鎭�
+                Parallel.For(0, 1, e =>
+                {
+                    LogLock.OutLogAOP("AOPLogEx", new string[] { apiLogAopExInfo.GetType().ToString(), JsonConvert.SerializeObject(apiLogAopExInfo) });
+                });
+            }
+        }
+
+        public static bool IsAsyncMethod(MethodInfo method)
+        {
+            return
+                method.ReturnType == typeof(Task) ||
+                method.ReturnType.IsGenericType && method.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)
+            ;
+        }
+    }
+
+    internal static class InternalAsyncHelper
+    {
+        public static async Task AwaitTaskWithPostActionAndFinally(Task actualReturnValue, Func<Task> postAction, Action<Exception> finalAction)
+        {
+            Exception exception = null;
+
+            try
+            {
+                await actualReturnValue;
+                await postAction();
+            }
+            catch (Exception ex)
+            {
+                exception = ex;
+            }
+            finally
+            {
+                finalAction(exception);
+            }
+        }
+
+        public static async Task<T> AwaitTaskWithPostActionAndFinallyAndGetResult<T>(Task<T> actualReturnValue, Func<object, Task> postAction,
+            Action<Exception> finalAction)
+        {
+            Exception exception = null;
+            try
+            {
+                var result = await actualReturnValue;
+                await postAction(result);
+                return result;
+            }
+            catch (Exception ex)
+            {
+                exception = ex;
+                throw;
+            }
+            finally
+            {
+                finalAction(exception);
+            }
+        }
+
+        public static object CallAwaitTaskWithPostActionAndFinallyAndGetResult(Type taskReturnType, object actualReturnValue,
+            Func<object, Task> action, Action<Exception> finalAction)
+        {
+            return typeof(InternalAsyncHelper)
+                .GetMethod("AwaitTaskWithPostActionAndFinallyAndGetResult", BindingFlags.Public | BindingFlags.Static)
+                .MakeGenericMethod(taskReturnType)
+                .Invoke(null, new object[] { actualReturnValue, action, finalAction });
+        }
+    }
+
+    public class AOPLogInfo
+    {
+        /// <summary>
+        /// 璇锋眰鏃堕棿
+        /// </summary>
+        [Description("璇锋眰鏃堕棿")]
+        public string RequestTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鎿嶄綔浜哄憳
+        /// </summary>
+        [Description("鎿嶄綔浜哄憳")]
+        public string OpUserName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鏂规硶鍚�
+        /// </summary>
+        [Description("璇锋眰鏂规硶鍚�")]
+        public string RequestMethodName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟鍚�
+        /// </summary>
+        [Description("璇锋眰鍙傛暟鍚�")]
+        public string RequestParamsName { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟鏁版嵁JSON
+        /// </summary>
+        [Description("璇锋眰鍙傛暟鏁版嵁JSON")]
+        public string RequestParamsData { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 璇锋眰鍝嶅簲闂撮殧鏃堕棿
+        /// </summary>
+        [Description("璇锋眰鍝嶅簲闂撮殧鏃堕棿")]
+        public string ResponseIntervalTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鍝嶅簲鏃堕棿
+        /// </summary>
+        [Description("鍝嶅簲鏃堕棿")]
+        public string ResponseTime { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 鍝嶅簲缁撴灉
+        /// </summary>
+        [Description("鍝嶅簲缁撴灉")]
+        public string ResponseJsonData { get; set; } = string.Empty;
+    }
+
+    public class AOPLogExInfo
+    {
+        public AOPLogInfo ApiLogAopInfo { get; set; }
+
+        /// <summary>
+        /// 寮傚父
+        /// </summary>
+        [Description("寮傚父")]
+        public string InnerException { get; set; } = string.Empty;
+
+        /// <summary>
+        /// 寮傚父淇℃伅
+        /// </summary>
+        [Description("寮傚父淇℃伅")]
+        public string ExMessage { get; set; } = string.Empty;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs
new file mode 100644
index 0000000..e0880c9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/AOP/SqlSugarAop.cs
@@ -0,0 +1,72 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.AOP
+{
+    public static class SqlSugarAop
+    {
+        public static void DataExecuting(object oldValue, DataFilterModel entityInfo)
+        {
+            if (entityInfo.EntityValue is BaseEntity baseEntity)
+            {
+                // 鏂板鎿嶄綔
+                if (entityInfo.OperationType == DataFilterType.InsertByObject)
+                {
+                    if (entityInfo.PropertyName == nameof(BaseEntity.CreateDate))
+                    {
+                        baseEntity.CreateDate = DateTime.Now;
+                    }
+                }
+
+                if (entityInfo.OperationType == DataFilterType.UpdateByObject)
+                {
+                    baseEntity.ModifyDate = DateTime.Now;
+                }
+
+
+                if (App.User?.UserId > 0)
+                {
+                    switch (entityInfo.OperationType)
+                    {
+                        case DataFilterType.UpdateByObject:
+                            baseEntity.Modifier = App.User.UserName;
+                            break;
+                        case DataFilterType.InsertByObject:
+                                baseEntity.Creater = App.User.UserName;
+                            break;
+                    }
+                }
+            }
+        }
+
+        private static string GetWholeSql(SugarParameter[] paramArr, string sql)
+        {
+            foreach (var param in paramArr)
+            {
+                sql = sql.Replace(param.ParameterName, $@"'{param.Value.ObjToString()}'");
+            }
+
+            return sql;
+        }
+
+        private static string GetParas(SugarParameter[] pars)
+        {
+            string key = "銆怱QL鍙傛暟銆戯細";
+            foreach (var param in pars)
+            {
+                key += $"{param.ParameterName}:{param.Value}\n";
+            }
+
+            return key;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
new file mode 100644
index 0000000..d37b5c6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/App.cs
@@ -0,0 +1,208 @@
+锘縰sing Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Core;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core
+{
+    public class App
+    {
+        static App()
+        {
+            EffectiveTypes = Assemblies.SelectMany(GetTypes);
+        }
+
+        private static bool _isRun;
+
+        /// <summary>鏄惁姝e湪杩愯</summary>
+        public static bool IsBuild { get; set; }
+
+        public static bool IsRun
+        {
+            get => _isRun;
+            set => _isRun = IsBuild = value;
+        }
+
+        /// <summary>
+        /// 璁剧疆鎺ュ彛鏈夋晥鎴鏃堕棿锛岃秴杩囪鏃堕棿灏嗘棤娉曠户缁娇鐢ㄦ帴鍙�
+        /// </summary>
+        public static DateTime? ExpDateTime = null;
+
+
+        /// <summary>搴旂敤鏈夋晥绋嬪簭闆�</summary>
+        public static readonly IEnumerable<Assembly> Assemblies = RuntimeExtension.GetAllAssemblies();
+
+        /// <summary>鏈夋晥绋嬪簭闆嗙被鍨�</summary>
+        public static readonly IEnumerable<Type> EffectiveTypes;
+
+        /// <summary>浼樺厛浣跨敤App.GetService()鎵嬪姩鑾峰彇鏈嶅姟</summary>
+        public static IServiceProvider RootServices => IsRun || IsBuild ? InternalApp.RootServices : null;
+
+        /// <summary>鑾峰彇Web涓绘満鐜锛屽锛屾槸鍚︽槸寮�鍙戠幆澧冿紝鐢熶骇鐜绛�</summary>
+        public static IWebHostEnvironment WebHostEnvironment => InternalApp.WebHostEnvironment;
+
+        /// <summary>鑾峰彇娉涘瀷涓绘満鐜锛屽锛屾槸鍚︽槸寮�鍙戠幆澧冿紝鐢熶骇鐜绛�</summary>
+        public static IHostEnvironment HostEnvironment => InternalApp.HostEnvironment;
+
+        /// <summary>鍏ㄥ眬閰嶇疆閫夐」</summary>
+        public static IConfiguration Configuration => InternalApp.Configuration;
+
+        /// <summary>
+        /// 鑾峰彇璇锋眰涓婁笅鏂�
+        /// </summary>
+        public static HttpContext HttpContext => RootServices?.GetService<IHttpContextAccessor>()?.HttpContext;
+
+        public static IUser User => GetService<IUser>();
+
+        #region Service
+
+        /// <summary>瑙f瀽鏈嶅姟鎻愪緵鍣�</summary>
+        /// <param name="serviceType"></param>
+        /// <param name="mustBuild"></param>
+        /// <param name="throwException"></param>
+        /// <returns></returns>
+        public static IServiceProvider GetServiceProvider(Type serviceType, bool mustBuild = false, bool throwException = true)
+        {
+            if (App.HostEnvironment == null || App.RootServices != null &&
+                InternalApp.InternalServices
+                    .Where((u =>
+                        u.ServiceType ==
+                        (serviceType.IsGenericType ? serviceType.GetGenericTypeDefinition() : serviceType)))
+                    .Any((u => u.Lifetime == ServiceLifetime.Singleton)))
+                return App.RootServices;
+
+            //鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�
+            if (HttpContext?.RequestServices != null)
+                return HttpContext.RequestServices;
+
+            if (App.RootServices != null)
+            {
+                IServiceScope scope = RootServices.CreateScope();
+                return scope.ServiceProvider;
+            }
+
+            if (mustBuild)
+            {
+                if (throwException)
+                {
+                    throw new ApplicationException("褰撳墠涓嶅彲鐢紝蹇呴』瑕佺瓑鍒� WebApplication Build鍚�");
+                }
+
+                return default;
+            }
+
+            ServiceProvider serviceProvider = InternalApp.InternalServices.BuildServiceProvider();
+            return serviceProvider;
+        }
+
+        public static TService GetService<TService>(bool mustBuild = true) where TService : class
+        {
+            TService test = App.GetService(typeof(TService), null, mustBuild) as TService;
+            return test;
+        }
+
+        /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
+        /// <typeparam name="TService"></typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <param name="mustBuild"></param>
+        /// <returns></returns>
+        public static TService GetService<TService>(IServiceProvider serviceProvider, bool mustBuild = true)
+            where TService : class => (serviceProvider ?? App.GetServiceProvider(typeof(TService), mustBuild, false))?.GetService<TService>();
+
+        /// <summary>鑾峰彇璇锋眰鐢熷瓨鍛ㄦ湡鐨勬湇鍔�</summary>
+        /// <param name="type"></param>
+        /// <param name="serviceProvider"></param>
+        /// <param name="mustBuild"></param>
+        /// <returns></returns>
+        public static object GetService(Type type, IServiceProvider serviceProvider = null, bool mustBuild = true)
+        {
+            object obj = (serviceProvider ?? App.GetServiceProvider(type, mustBuild, false))?.GetService(type);
+            return obj;
+        }
+
+
+        #endregion
+
+        #region private
+
+        /// <summary>鍔犺浇绋嬪簭闆嗕腑鐨勬墍鏈夌被鍨�</summary>
+        /// <param name="ass"></param>
+        /// <returns></returns>
+        private static IEnumerable<Type> GetTypes(Assembly ass)
+        {
+            Type[] source = Array.Empty<Type>();
+            try
+            {
+                source = ass.GetTypes();
+            }
+            catch
+            {
+                //$@"Error load `{ass.FullName}` assembly.".WriteErrorLine();
+            }
+
+            return source.Where(u => u.IsPublic);
+        }
+
+        #endregion
+
+        #region Options
+
+        /// <summary>鑾峰彇閰嶇疆</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <returns>TOptions</returns>
+        public static TOptions GetConfig<TOptions>()
+            where TOptions : class, IConfigurableOptions
+        {
+            TOptions instance = App.Configuration
+                .GetSection(ConfigurableOptions.GetConfigurationPath(typeof(TOptions)))
+                .Get<TOptions>();
+            return instance;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptions<TOptions>(IServiceProvider serviceProvider = null) where TOptions : class, new()
+        {
+            IOptions<TOptions> service = App.GetService<IOptions<TOptions>>(serviceProvider ?? App.RootServices, false);
+            return service?.Value;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptionsMonitor<TOptions>(IServiceProvider serviceProvider = null)
+            where TOptions : class, new()
+        {
+            IOptionsMonitor<TOptions> service =
+                App.GetService<IOptionsMonitor<TOptions>>(serviceProvider ?? App.RootServices, false);
+            return service?.CurrentValue;
+        }
+
+        /// <summary>鑾峰彇閫夐」</summary>
+        /// <typeparam name="TOptions">寮虹被鍨嬮�夐」绫�</typeparam>
+        /// <param name="serviceProvider"></param>
+        /// <returns>TOptions</returns>
+        public static TOptions GetOptionsSnapshot<TOptions>(IServiceProvider serviceProvider = null)
+            where TOptions : class, new()
+        {
+            IOptionsSnapshot<TOptions> service = App.GetService<IOptionsSnapshot<TOptions>>(serviceProvider, false);
+            return service?.Value;
+        }
+
+        #endregion
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs
new file mode 100644
index 0000000..3db0e6a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationResponse.cs
@@ -0,0 +1,46 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Net;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Const;
+
+namespace WIDESEA_Core.Authorization
+{
+    public static class AuthorizationResponse
+    {
+        public static AuthorizationFilterContext FilterResult(
+          this AuthorizationFilterContext context,
+            HttpStatusCode statusCode,
+            string message = null)
+        {
+            context.Result = new ContentResult()
+            {
+                Content = new { message, status = false, code = (int)statusCode }.Serialize(),
+                ContentType = "application/json",
+                StatusCode = (int)statusCode
+            };
+            //Logger.Info(LoggerType.ApiAuthorize, message);
+            return context;
+        }
+        public static AuthorizationFilterContext Unauthorized(this AuthorizationFilterContext context, string message = null)
+        {
+            return context.FilterResult(HttpStatusCode.Unauthorized, message);
+        }
+        //涓嶉�氳繃JWT楠岃瘉鐨勶紝鐩存帴灏嗙敤鎴蜂俊鎭紦瀛樿捣鏉�
+        public static void AddIdentity(this AuthorizationFilterContext context, int? userId = null)
+        {
+            int _userId = userId ?? JwtHelper.GetUserId(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName]);
+            if (_userId <= 0) return;
+            //灏嗙敤鎴稩d缂撳瓨鍒颁笂涓嬫枃(鎴栬�呰嚜瀹氫竴涓璞★紝閫氳繃DI浠ddScoped鏂瑰紡娉ㄥ叆涓婁笅鏂囨潵绠$悊鐢ㄦ埛淇℃伅)
+            var claims = new Claim[] { new Claim(JwtRegisteredClaimNames.Jti, _userId.ToString()) };
+            context.HttpContext.User.AddIdentity(new ClaimsIdentity(claims));
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs
new file mode 100644
index 0000000..31cff24
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/AuthorizationSetup.cs
@@ -0,0 +1,67 @@
+锘縰sing Microsoft.AspNetCore.Authentication.JwtBearer;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Authorization
+{
+    /// <summary>
+    /// 绯荤粺 鎺堟潈鏈嶅姟 閰嶇疆
+    /// </summary>
+    public static class AuthorizationSetup
+    {
+        /// <summary>
+        /// 绯荤粺 鎺堟潈鏈嶅姟 閰嶇疆
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddAuthorizationSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            
+            services.AddAuthentication(options =>
+            {
+                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
+                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
+                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
+            })
+             .AddJwtBearer(options =>
+             {
+                 options.TokenValidationParameters = new TokenValidationParameters
+                 {
+                     SaveSigninToken = true,//淇濆瓨token,鍚庡彴楠岃瘉token鏄惁鐢熸晥(閲嶈)
+                     ValidateIssuer = true,//鏄惁楠岃瘉Issuer
+                     ValidateAudience = true,//鏄惁楠岃瘉Audience
+                     ValidateLifetime = true,//鏄惁楠岃瘉澶辨晥鏃堕棿
+                     ValidateIssuerSigningKey = true,//鏄惁楠岃瘉SecurityKey
+                     ValidAudience = AppSecret.Audience,//Audience
+                     ValidIssuer = AppSecret.Issuer,//Issuer锛岃繖涓ら」鍜屽墠闈㈢鍙慾wt鐨勮缃竴鑷�
+                     IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSecret.JWT))
+                 };
+                 options.Events = new JwtBearerEvents()
+                 {
+                     OnChallenge = context =>
+                     {
+                         context.HandleResponse();
+                         context.Response.Clear();
+                         context.Response.ContentType = "application/json";
+                         context.Response.StatusCode = 401;
+                         context.Response.WriteAsync(new { message = "鎺堟潈鏈�氳繃", status = false, code = 401 }.Serialize());
+                         return Task.CompletedTask;
+                     }
+                 };
+             });
+
+            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs
new file mode 100644
index 0000000..2669558
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Authorization/JwtHelper.cs
@@ -0,0 +1,118 @@
+锘縰sing Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Authorization
+{
+    public class JwtHelper
+    {
+
+        /// <summary>
+        /// 鐢熸垚JWT
+        /// </summary>
+        /// <param name="serInfo"></param>
+        /// <returns></returns>
+        public static string IssueJwt(TokenModelJwt tokenModel)
+        {
+            string exp = $"{new DateTimeOffset(DateTime.Now.AddMinutes(/*tokenModel.UserId == 1 ? 43200 : */AppSettings.app("ExpMinutes").ObjToInt())).ToUnixTimeSeconds()}";
+            var claims = new List<Claim>
+                {
+                new Claim(JwtRegisteredClaimNames.Jti,tokenModel.UserId.ToString()),
+                new Claim(JwtRegisteredClaimNames.Iat, $"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}"),
+                new Claim(JwtRegisteredClaimNames.Nbf,$"{new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds()}") ,
+                //JWT杩囨湡鏃堕棿
+                //榛樿璁剧疆jwt杩囨湡鏃堕棿120鍒嗛挓
+                new Claim (JwtRegisteredClaimNames.Exp,exp),
+                new Claim(JwtRegisteredClaimNames.Iss,AppSecret.Issuer),
+                new Claim(JwtRegisteredClaimNames.Aud,AppSecret.Audience),
+                new Claim(ClaimTypes.Role, tokenModel.RoleId.ToString())
+               };
+
+            // 鍙互灏嗕竴涓敤鎴风殑澶氫釜瑙掕壊鍏ㄩ儴璧嬩簣锛�
+            // 浣滆�咃細DX 鎻愪緵鎶�鏈敮鎸侊紱
+
+            //绉橀挜16浣�
+            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSecret.JWT));
+            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
+            JwtSecurityToken securityToken = new JwtSecurityToken(issuer: AppSecret.Issuer, claims: claims, signingCredentials: creds);
+            string jwt = new JwtSecurityTokenHandler().WriteToken(securityToken);
+            return jwt;
+        }
+
+        /// <summary>
+        /// 瑙f瀽
+        /// </summary>
+        /// <param name="jwtStr"></param>
+        /// <returns></returns>
+        public static UserInfo SerializeJwt(string jwtStr)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+            UserInfo userInfo = new UserInfo
+            {
+                UserId = Convert.ToInt32(jwtToken.Id),
+                RoleId = (jwtToken.Payload[ClaimTypes.Role] ?? 0).ObjToInt(),
+            };
+            return userInfo;
+        }
+        /// <summary>
+        /// 鑾峰彇杩囨湡鏃堕棿
+        /// </summary>
+        /// <param name="jwtStr"></param>
+        /// <returns></returns>
+        public static DateTime GetExp(string jwtStr)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(jwtStr);
+
+            DateTime expDate = (jwtToken.Payload[JwtRegisteredClaimNames.Exp] ?? 0).ObjToInt().GetTimeSpmpToDate();
+            return expDate;
+        }
+        public static bool IsExp(string jwtStr)
+        {
+            return GetExp(jwtStr) < DateTime.Now;
+        }
+
+        public static int GetUserId(string jwtStr)
+        {
+            try
+            {
+                if (jwtStr.IsNullOrEmpty()) return 0;
+                jwtStr = jwtStr.Replace("Bearer ", "");
+                return new JwtSecurityTokenHandler().ReadJwtToken(jwtStr).Id.ObjToInt();
+            }
+            catch
+            {
+                return 0;
+            }
+        }
+    }
+
+    /// <summary>
+    /// 浠ょ墝
+    /// </summary>
+    public class TokenModelJwt
+    {
+        /// <summary>
+        /// UserId
+        /// </summary>
+        public long UserId { get; set; }
+        /// <summary>
+        /// 瑙掕壊
+        /// </summary>
+        public int RoleId { get; set; }
+        /// <summary>
+        /// 鑱岃兘
+        /// </summary>
+        public string Work { get; set; }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs
new file mode 100644
index 0000000..cd3872c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseController/ApiBaseController.cs
@@ -0,0 +1,111 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+
+namespace WIDESEA_Core.BaseController
+{
+    [Authorize, ApiController]
+    public class ApiBaseController<IService, TEntity> : Controller
+    {
+        protected IService Service;
+
+        public ApiBaseController(IService service)
+        {
+            Service = service;
+        }
+
+        [HttpPost, Route("GetPageData")]
+        public virtual ActionResult GetPageData([FromBody] PageDataOptions options)
+        {
+            return Json(InvokeService("GetPageData", new object[] { options }));
+        }
+
+        [HttpPost, Route("GetDetailPage")]
+        public virtual ActionResult GetDetailPage([FromBody] PageDataOptions pageData)
+        {
+            return Json(InvokeService("GetDetailPage", new object[] { pageData }));
+        }
+
+        [HttpPost, Route("AddData")]
+        public virtual ActionResult AddData([FromBody] TEntity options)
+        {
+            return Json(InvokeService("AddData", new object[] { options }));
+        }
+
+        [HttpPost, Route("Add")]
+        public virtual ActionResult Add([FromBody] SaveModel options)
+        {
+            return Json(InvokeService("AddData", new object[] { options }));
+        }
+
+        [HttpPost, Route("Update")]
+        public virtual ActionResult Update([FromBody] SaveModel options)
+        {
+            return Json(InvokeService("UpdateData", new object[] { options }));
+        }
+
+        [HttpPost, Route("UpdateData")]
+        public virtual ActionResult UpdateData([FromBody] TEntity options)
+        {
+            return Json(InvokeService("UpdateData", new object[] { options }));
+        }
+
+        [HttpPost, Route("Del")]
+        public virtual ActionResult Del([FromBody] object[] key)
+        {
+            return Json(InvokeService("DeleteData", new object[] { key }));
+        }
+
+        [HttpPost, Route("Export")]
+        public virtual ActionResult Export([FromBody] PageDataOptions loadData)
+        {
+            WebResponseContent result = InvokeService("Export", new object[] { loadData }) as WebResponseContent;
+            if (result.Status)
+                return File(
+                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.Net.Mime.MediaTypeNames.Application.Octet,
+                       Path.GetFileName(result.Data.ToString())
+                   );
+            return Json(result);
+        }
+
+        [HttpPost, HttpGet, Route("DownLoadTemplate")]
+        public virtual ActionResult DownLoadTemplate()
+        {
+            WebResponseContent result = InvokeService("DownLoadTemplate", new object[] { }) as WebResponseContent;
+            if (result.Status)
+                return File(
+                       System.IO.File.ReadAllBytes(result.Data.ToString()),
+                       System.Net.Mime.MediaTypeNames.Application.Octet,
+                       Path.GetFileName(result.Data.ToString())
+                   );
+            return Json(result);
+        }
+
+        [HttpPost, Route("Import")]
+        public virtual ActionResult Import(List<IFormFile> fileInput)
+        {
+            return Json(InvokeService("Import", new object[] { fileInput }));
+        }
+
+        private object InvokeService(string methodName, object[] parameters)
+        {
+            Type t = Service.GetType();
+            List<Type> types = new List<Type>();
+            foreach (var param in parameters)
+            {
+                types.Add(param.GetType());
+            }
+            MethodInfo method = t.GetMethod(methodName, types.ToArray());
+            return method.Invoke(Service, parameters);
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs
new file mode 100644
index 0000000..36327de
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageDataOptions.cs
@@ -0,0 +1,104 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core
+{
+    public class PageDataOptions
+    {
+        public int Page { get; set; }
+        public int Rows { get; set; }
+        public int Total { get; set; }
+        public string TableName { get; set; }
+        public string Sort { get; set; }
+        /// <summary>
+        /// 鎺掑簭鏂瑰紡
+        /// </summary>
+        public string Order { get; set; }
+        public string Wheres { get; set; }
+        public bool Export { get; set; }
+        public object Value { get; set; }
+        /// <summary>
+        /// 鏌ヨ鏉′欢
+        /// </summary>
+        public List<SearchParameters> Filter { get; set; }
+        public string ValidatePageOptions(PropertyInfo[] entityProperties)
+        {
+            string where = string.Empty;
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (this.Filter != null && this.Filter.Count > 0)
+            {
+                searchParametersList.AddRange(Filter);
+            }
+            else if (!string.IsNullOrEmpty(Wheres))
+            {
+                try
+                {
+                    searchParametersList = Wheres.DeserializeObject<List<SearchParameters>>();
+                    Filter = searchParametersList;
+                }
+                catch { }
+            }
+            for (int i = 0; i < searchParametersList.Count; i++)
+            {
+                if (string.IsNullOrEmpty(searchParametersList[i].Value))
+                {
+                    continue;
+                }
+
+                PropertyInfo? property = entityProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+                if (property == null) continue;
+
+                List<(bool, string, object)> results = property.ValidationValueForDbType(searchParametersList[i].Value.Split(',')).ToList();
+                if (results == null || results.Count() == 0)
+                {
+                    continue;
+                }
+                for (int j = 0; j < results.Count(); j++)
+                {
+                    if (j == 0)
+                    {
+                        where += "(";
+                    }
+                    LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition();
+                    if (expressionType == LinqExpressionType.Equal)
+                    {
+                        
+                        where += $"{searchParametersList[i].Name} Like '%{results[j].Item3}";
+                    }
+                    else
+                    {
+                        where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{results[j].Item3}'";
+                    }
+
+                    if (j == results.Count() - 1)
+                    {
+                        where += "%')";
+                    }
+                    else
+                    {
+                        where += " or ";
+                    }
+                }
+                if (i < searchParametersList.Count - 1)
+                    where += " and ";
+            }
+            return where;
+        }
+    }
+    public class SearchParameters
+    {
+        public string Name { get; set; }
+        public string Value { get; set; }
+        //鏌ヨ绫诲瀷锛歀inqExpressionType
+        public string DisplayType { get; set; }
+    }
+
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs
new file mode 100644
index 0000000..7ad6817
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/PageGridData.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class PageGridData<T>
+    {
+        public int Total { get; set; }
+        public List<T> Rows { get; set; }
+        public object Summary { get; set; }
+
+        public PageGridData()
+        {
+
+        }
+
+        public PageGridData(int total, List<T> rows)
+        {
+            Total = total;
+            Rows = rows;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs
new file mode 100644
index 0000000..e8c006b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/Permissions.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class Permissions
+    {
+        public int MenuId { get; set; }
+        public int ParentId { get; set; }
+        public string TableName { get; set; }
+        public string MenuAuth { get; set; }
+        public string UserAuth { get; set; }
+        /// <summary>
+        /// 褰撳墠鐢ㄦ埛鏉冮檺,瀛樺偍鐨勬槸鏉冮檺鐨勫�硷紝濡�:Add,Search绛�
+        /// </summary>
+        public string[] UserAuthArr { get; set; }
+
+        /// <summary>
+        /// 2022.03.26
+        /// 鑿滃崟绫诲瀷1:绉诲姩绔紝0:PC绔�
+        /// </summary>
+        public int MenuType { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs
new file mode 100644
index 0000000..f103ccf
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/SaveModel.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class SaveModel
+    {
+        public Dictionary<string, object> MainData { get; set; }
+        public List<Dictionary<string, object>> DetailData { get; set; }
+        public List<object> DelKeys { get; set; }
+
+        /// <summary>
+        /// 浠庡墠鍙颁紶鍏ョ殑鍏朵粬鍙傛暟(鑷畾涔夋墿灞曞彲浠ヤ娇鐢�)
+        /// </summary>
+        public object Extra { get; set; }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs
new file mode 100644
index 0000000..cd8cdd4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseModels/WebResponseContent.cs
@@ -0,0 +1,55 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public class WebResponseContent
+    {
+        public WebResponseContent()
+        {
+        }
+        public WebResponseContent(bool status)
+        {
+            Status = status;
+        }
+        public bool Status { get; set; }
+        public int total { get; set; }
+
+        public int Code { get; set; }
+
+        public string Message { get; set; }
+
+        public object Data { get; set; }
+        public object rows { get; set; }
+
+        public string DevMessage { get; set; }
+
+        public WebResponseContent OK()
+        {
+            Code = 1;
+            Status = true;
+            return this;
+        }
+
+        public static WebResponseContent Instance
+        {
+            get { return new WebResponseContent(); }
+        }
+        public WebResponseContent OK(string message = null, object data = null)
+        {
+            Status = true;
+            Message = message;
+            Data = data;
+            return this;
+        }
+        public WebResponseContent Error(string message = null)
+        {
+            Status = false;
+            Message = message;
+            return this;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
new file mode 100644
index 0000000..8c6e4e6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/IRepository.cs
@@ -0,0 +1,454 @@
+锘縰sing Microsoft.Data.SqlClient;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public interface IRepository<TEntity> : IDependency where TEntity : class, new()
+    {
+        /// <summary>
+        /// SqlsugarClient瀹炰綋
+        /// </summary>
+        ISqlSugarClient Db { get; }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鏌ヨ缁撴灉</returns>
+        TEntity QureyDataById(object id);
+
+        Task<TEntity> QureyDataByIdAsync(object id);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁扮粍鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭鏁扮粍</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        List<TEntity> QureyDataByIds(object[] lstIds);
+
+        Task<List<TEntity>> QureyDataByIdsAsync(object[] lstIds);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭闆嗗悎鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭闆嗗悎</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        List<TEntity> QureyDataByIds(List<object> lstIds);
+
+        Task<List<TEntity>> QureyDataByIdsAsync(List<object> lstIds);
+
+        /// <summary>
+        /// 娣诲姞鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        int AddData(TEntity entity);
+
+        Task<int> AddDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 瀵艰埅鎻掑叆鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        Task<bool> AddDataNavAsync(TEntity Entity);
+        Task<bool> AddDataNavAsync(List<TEntity> Entity);
+
+        /// <summary>
+        /// 娣诲姞澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        int AddData(List<TEntity> listEntity);
+
+        Task<int> AddDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteDataById(object id);
+
+        Task<bool> DeleteDataByIdAsync(object id);
+
+        bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType);
+
+        bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType);
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁版嵁鍒犻櫎澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteDataByIds(object[] ids);
+
+        Task<bool> DeleteDataByIdsAsync(object[] ids);
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteData(TEntity entity);
+
+        Task<bool> DeleteDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋闆嗗悎鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        bool DeleteData(List<TEntity> listEntity);
+
+        Task<bool> DeleteDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 鏇存柊鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        bool UpdateData(TEntity entity);
+
+        Task<bool> UpdateDataAsync(TEntity entity);
+
+        /// <summary>
+        /// 鏇存柊澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns></returns>
+        bool UpdateData(List<TEntity> listEntity);
+
+        Task<bool> UpdateDataAsync(List<TEntity> listEntity);
+
+        /// <summary>
+        /// 瀵艰埅鏇存柊鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        Task<bool> UpdateDataNavAsync(TEntity Entity);
+
+        /// <summary>
+        /// 瀵艰埅鏇存柊鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        bool UpdateDataNav(TEntity Entity);
+
+        /// <summary>
+        /// 瀵艰埅鏇存柊鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        bool UpdateDataNav(List<TEntity> Entity);
+
+        /// <summary>
+        /// 鎸囧畾鍒楁洿鏂版暟鎹�
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="lstColumns"></param>
+        /// <param name="lstIgnoreColumns"></param>
+        /// <returns></returns>
+        bool UpdateData(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null);
+
+        Task<bool> UpdateDataAsync(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null);
+
+        /// <summary>
+        /// 鏌ヨ鎵�鏈夋暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        List<TEntity> QueryData();
+
+        Task<List<TEntity>> QueryDataAsync();
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where);
+
+        Task<List<TEntity>> QueryDataAsync(string where);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression);
+
+        TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression);
+
+        Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression);
+
+        Task<TEntity> QueryFirstNavAsync(Expression<Func<TEntity, bool>> whereExpression);
+
+        TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression);
+
+        Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression);
+
+        TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy);
+
+        Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy);
+
+        TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, Dictionary<string, OrderByType> orderBy);
+
+        Task<List<TEntity>> QueryDataAsync(string where, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression);
+
+        Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields = "");
+
+        Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByExpression"></param>
+        /// <param name="isAsc"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, string orderByFields);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        List<TEntity> QueryDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<TEntity>> QueryDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        List<dynamic> QueryDynamicDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<dynamic>> QueryDynamicDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        List<object> QueryObjectDataBySql(string sql, SugarParameter[]? parameters = null);
+
+        Task<List<object>> QueryObjectDataBySqlAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鎵ц鎿嶄綔
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="sqlParameters"></param>
+        /// <returns></returns>
+        int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters);
+
+        Task<int> ExecuteSqlCommandAsync(string sql, params SqlParameter[] sqlParameters);
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        DataTable QueryTable(string sql, SugarParameter[]? parameters = null);
+
+        Task<DataTable> QueryTableAsync(string sql, SugarParameter[]? parameters = null);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields);
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, int top, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, int top, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields);
+
+        Task<List<TEntity>> QueryDataAsync(string where, int pageIndex, int pageSize, string orderByFields);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string? orderByFields = null);
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pagesize"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pagesize, Dictionary<string, OrderByType> orderBy);
+
+        PageGridData<TEntity> QueryPage(string where, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy);
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        List<TResult> QueryTabs<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+           Expression<Func<T, T2, bool>> whereExpressionT1,
+            Expression<Func<TResult, bool>> whereExpression);
+
+        Task<List<TResult>> QueryTabsAsync<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression);
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡-鍒嗛〉
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TResult> QueryTabsPage<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression,
+            int pageIndex = 1,
+            int pageSize = 20,
+            string? orderByFields = null);
+
+        /// <summary>
+        /// 涓よ〃鑱斿悎鏌ヨ-鍒嗛〉-鍒嗙粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="groupExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        PageGridData<TResult> QueryTabsPage<T, T2, TResult>(
+            Expression<Func<T, T2, object[]>> joinExpression,
+            Expression<Func<T, T2, TResult>> selectExpression,
+            Expression<Func<TResult, bool>> whereExpression,
+            Expression<Func<T, object>> groupExpression,
+            int pageIndex = 1,
+            int pageSize = 20,
+            string? orderByFields = null);
+
+        //List<TResult> QueryMuch<T, T2, T3, TResult>(
+        //    Expression<Func<T, T2, T3, object[]>> joinExpression,
+        //    Expression<Func<T, T2, T3, TResult>> selectExpression,
+        //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new();
+        //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
new file mode 100644
index 0000000..5ea5cb1
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/RepositoryBase.cs
@@ -0,0 +1,1012 @@
+锘縰sing AngleSharp.Dom;
+using Microsoft.Data.SqlClient;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SharpCompress.Common;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Drawing.Printing;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_Core.Tenants;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class RepositoryBase<TEntity> : IRepository<TEntity> where TEntity : class, new()
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly SqlSugarClient _dbBase;
+
+        private ISqlSugarClient _db
+        {
+            get
+            {
+                ISqlSugarClient db = _dbBase;
+
+                //澶氱鎴�
+                var mta = typeof(TEntity).GetCustomAttribute<MultiTenantAttribute>();
+                if (mta is { TenantType: TenantTypeEnum.Db })
+                {
+                    //鑾峰彇绉熸埛淇℃伅 绉熸埛淇℃伅鍙互鎻愬墠缂撳瓨涓嬫潵
+                    if (App.User is { TenantId: > 0 })
+                    {
+                        dynamic tenant = db.Queryable(MainDb.TenantTableName, "x").Where(MainDb.TenantId, "=", App.User.TenantId).First();
+                        if (tenant != null)
+                        {
+                            var iTenant = db.AsTenant();
+                            if (!iTenant.IsAnyConnection(tenant.TenantId))
+                            {
+                                string conStr = tenant.ConnectionString;
+                                ConnectionConfig connectionConfig = new ConnectionConfig()
+                                {
+                                    ConfigId = tenant.TenantId,
+                                    ConnectionString = conStr.DecryptDES(AppSecret.DB),
+                                    DbType = (SqlSugar.DbType)tenant.DbType,
+                                    IsAutoCloseConnection = true,
+                                    AopEvents = new AopEvents()
+                                    {
+                                        DataExecuting = SqlSugarAop.DataExecuting
+                                    }
+                                };
+                                iTenant.AddConnection(connectionConfig);
+                            }
+
+                            return iTenant.GetConnection(tenant.TenantId);
+                        }
+                    }
+                }
+
+                return db;
+            }
+        }
+
+        public ISqlSugarClient Db => _db;
+
+        public RepositoryBase(IUnitOfWorkManage unitOfWorkManage)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _dbBase = unitOfWorkManage.GetDbClient();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鏌ヨ缁撴灉</returns>
+        public virtual TEntity QureyDataById(object id)
+        {
+            return _db.Queryable<TEntity>().In(id).Single();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁扮粍鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭鏁扮粍</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        public virtual List<TEntity> QureyDataByIds(object[] lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToList();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭闆嗗悎鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="lstIds">涓婚敭闆嗗悎</param>
+        /// <returns>鏌ヨ缁撴灉闆嗗悎</returns>
+        public virtual List<TEntity> QureyDataByIds(List<object> lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToList();
+        }
+
+        /// <summary>
+        /// 娣诲姞鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        public virtual int AddData(TEntity entity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(entity);
+            return insert.ExecuteReturnIdentity();
+        }
+
+        /// <summary>
+        /// 娣诲姞澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns>褰卞搷琛屾暟</returns>
+        public virtual int AddData(List<TEntity> listEntity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(listEntity);
+            return insert.ExecuteReturnIdentity();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="id">涓婚敭</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteDataById(object id)
+        {
+            return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃涓婚敭鏁版嵁鍒犻櫎澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteDataByIds(object[] ids)
+        {
+            return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteData(TEntity entity)
+        {
+            return _db.Deleteable(entity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 閫氳繃瀹炰綋闆嗗悎鏁版嵁鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="ids">涓婚敭鏁扮粍</param>
+        /// <returns>鍒犻櫎缁撴灉</returns>
+        public virtual bool DeleteData(List<TEntity> listEntity)
+        {
+            return _db.Deleteable(listEntity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏇存柊鍗曟潯鏁版嵁
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(TEntity entity)
+        {
+            return _db.Updateable(entity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏇存柊澶氭潯鏁版嵁
+        /// </summary>
+        /// <param name="listEntity"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(List<TEntity> listEntity)
+        {
+            return _db.Updateable(listEntity).ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鎸囧畾鍒楁洿鏂版暟鎹�
+        /// </summary>
+        /// <param name="entity"></param>
+        /// <param name="lstColumns"></param>
+        /// <param name="lstIgnoreColumns"></param>
+        /// <returns></returns>
+        public virtual bool UpdateData(TEntity entity, List<string> lstColumns, List<string> lstIgnoreColumns = null)
+        {
+            IUpdateable<TEntity> update = _db.Updateable(entity);
+
+            if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
+            {
+                update = update.IgnoreColumns(lstIgnoreColumns.ToArray());
+            }
+
+            if (lstColumns != null && lstColumns.Count > 0)
+            {
+                update = update.UpdateColumns(lstColumns.ToArray());
+            }
+
+            return update.ExecuteCommandHasChange();
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎵�鏈夋暟鎹�
+        /// </summary>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData()
+        {
+            return _db.Queryable<TEntity>().ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="where"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where)
+        {
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToList();
+        }
+
+        public virtual TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).First();
+        }
+
+        public virtual TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).First();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToList();
+        }
+
+        /// <summary>
+        /// 鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().Select(expression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁版嵁瀵硅薄
+        /// </summary>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="expression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryData<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByExpression"></param>
+        /// <param name="isAsc"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToList();
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryDataBySql(string sql, SugarParameter[] parameters = null)
+        {
+            return _db.Ado.SqlQuery<TEntity>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<dynamic> QueryDynamicDataBySql(string sql, SugarParameter[] parameters = null)
+        {
+            return _db.Ado.SqlQuery<dynamic>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual List<object> QueryObjectDataBySql(string sql, SugarParameter[] parameters = null)
+        {
+            return _db.Ado.SqlQuery<object>(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鎵ц鎿嶄綔
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="sqlParameters"></param>
+        /// <returns></returns>
+        public virtual int ExecuteSqlCommand(string sql, params SqlParameter[] sqlParameters)
+        {
+            return _db.Ado.ExecuteCommand(sql, sqlParameters);
+        }
+
+        /// <summary>
+        /// 鍘熺敓Sql璇彞鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="sql"></param>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public virtual DataTable QueryTable(string sql, SugarParameter[] parameters = null)
+        {
+            return _db.Ado.GetDataTable(sql, parameters);
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).IncludesAllFirstLayer().ToList();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鎸囧畾鏁伴噺鐨勮
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="top"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).IncludesAllFirstLayer().ToList();
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+               .WhereIF(whereExpression != null, whereExpression).ToPageList(pageIndex, pageSize);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(string where, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(!string.IsNullOrEmpty(where), where).IncludesAllFirstLayer().ToPageList(pageIndex, pageSize);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields = null)
+        {
+            int totalCount = 0;
+            var list = _db.Queryable<TEntity>()
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .IncludesAllFirstLayer()
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity> { Rows = list, Total = totalCount };
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderBy"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            int totalCount = 0;
+            List<TEntity> list = _db.Queryable<TEntity>()
+                .OrderBy(orderByModels)
+                .WhereIF(whereExpression != null, whereExpression)
+                .IncludesAllFirstLayer()
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ
+        /// </summary>
+        /// <param name="where"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TEntity> QueryPage(string where, int pageIndex, int pageSize, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            int totalCount = 0;
+            List<TEntity> list = _db.Queryable<TEntity>()
+                .WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).IncludesAllFirstLayer().ToPageList(pageIndex, pageSize, ref totalCount);
+
+            return new PageGridData<TEntity>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <returns></returns>
+        public virtual List<TResult> QueryTabs<T, T2, TResult>(
+          Expression<Func<T, T2, object[]>> joinExpression,
+          Expression<Func<T, T2, TResult>> selectExpression,
+          Expression<Func<T, T2, bool>> whereExpressionT1,
+          Expression<Func<TResult, bool>> whereExpression)
+        {
+            List<TResult> list = _db.Queryable(joinExpression).WhereIF(whereExpressionT1 != null, whereExpressionT1)
+               .Select(selectExpression)
+               .WhereIF(whereExpression != null, whereExpression).ToList();
+            return list;
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱旀煡-鍒嗛〉
+        /// </summary>
+        /// <typeparam name="T1"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields = null)
+        {
+            int totalCount = 0;
+            List<TResult> list = _db.Queryable(joinExpression)
+                .Select(selectExpression)
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+            return new PageGridData<TResult>(totalCount, list);
+        }
+
+        /// <summary>
+        /// 涓よ〃鑱斿悎鏌ヨ-鍒嗛〉-鍒嗙粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <typeparam name="T2"></typeparam>
+        /// <typeparam name="TResult"></typeparam>
+        /// <param name="joinExpression"></param>
+        /// <param name="selectExpression"></param>
+        /// <param name="whereExpression"></param>
+        /// <param name="groupExpression"></param>
+        /// <param name="pageIndex"></param>
+        /// <param name="pageSize"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual PageGridData<TResult> QueryTabsPage<T1, T2, TResult>(Expression<Func<T1, T2, object[]>> joinExpression, Expression<Func<T1, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression, Expression<Func<T1, object>> groupExpression, int pageIndex, int pageSize, string orderByFields = null)
+        {
+            int totalCount = 0;
+            List<TResult> list = _db.Queryable(joinExpression).GroupBy(groupExpression)
+                .Select(selectExpression)
+                .OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(whereExpression != null, whereExpression)
+                .ToPageList(pageIndex, pageSize, ref totalCount);
+            return new PageGridData<TResult>(totalCount, list);
+        }
+
+        //List<TResult> QueryMuch<T, T2, T3, TResult>(
+        //    Expression<Func<T, T2, T3, object[]>> joinExpression,
+        //    Expression<Func<T, T2, T3, TResult>> selectExpression,
+        //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new(){throw new NotImplementedException();}
+        //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination){throw new NotImplementedException();}
+
+        public Task<TEntity> QureyDataByIdAsync(object id)
+        {
+            return _db.Queryable<TEntity>().In(id).SingleAsync();
+        }
+
+        public Task<List<TEntity>> QureyDataByIdsAsync(object[] lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QureyDataByIdsAsync(List<object> lstIds)
+        {
+            return _db.Queryable<TEntity>().In(lstIds).ToListAsync();
+        }
+
+        public Task<int> AddDataAsync(TEntity entity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(entity);
+            return insert.ExecuteReturnIdentityAsync();
+        }
+
+        /// <summary>
+        /// 瀵艰埅鎻掑叆鏁版嵁(鍙敮鎸�2绾�)
+        /// </summary>
+        /// <param name="Entity"></param>
+        /// <returns></returns>
+        public async Task<bool> AddDataNavAsync(TEntity Entity)
+        {
+            return await _db.InsertNav(Entity).IncludesAllFirstLayer().ExecuteCommandAsync();
+        }
+
+        public async Task<bool> AddDataNavAsync(List<TEntity> Entity)
+        {
+            return await _db.InsertNav(Entity).IncludesAllFirstLayer().ExecuteCommandAsync();
+        }
+
+        public Task<int> AddDataAsync(List<TEntity> listEntity)
+        {
+            IInsertable<TEntity> insert = _db.Insertable(listEntity);
+            return insert.ExecuteReturnIdentityAsync();
+        }
+
+        public Task<bool> DeleteDataByIdAsync(object id)
+        {
+            return _db.Deleteable<TEntity>().In(id).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataByIdsAsync(object[] ids)
+        {
+            return _db.Deleteable<TEntity>().In(ids).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataAsync(TEntity entity)
+        {
+            return _db.Deleteable(entity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> DeleteDataAsync(List<TEntity> listEntity)
+        {
+            return _db.Deleteable(listEntity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(TEntity entity)
+        {
+            return _db.Updateable(entity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(List<TEntity> listEntity)
+        {
+            return _db.Updateable(listEntity).ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<bool> UpdateDataAsync(TEntity entity, List<string> lstColumns, List<string>? lstIgnoreColumns = null)
+        {
+            IUpdateable<TEntity> update = _db.Updateable(entity);
+
+            if (lstIgnoreColumns != null && lstIgnoreColumns.Count > 0)
+            {
+                update = update.IgnoreColumns(lstIgnoreColumns.ToArray());
+            }
+
+            if (lstColumns != null && lstColumns.Count > 0)
+            {
+                update = update.UpdateColumns(lstColumns.ToArray());
+            }
+
+            return update.ExecuteCommandHasChangeAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync()
+        {
+            return _db.Queryable<TEntity>().ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where)
+        {
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).FirstAsync();
+        }
+
+        public Task<TEntity> QueryFirstNavAsync(Expression<Func<TEntity, bool>> whereExpression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).IncludesAllFirstLayer().FirstAsync();
+        }
+
+        public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).Select(expression).FirstAsync();
+        }
+
+        public TResult QueryFirst<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).First();
+        }
+
+        public Task<TResult> QueryFirstAsync<TResult>(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, TResult>> expression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).Select(expression).FirstAsync();
+        }
+
+        public TEntity QueryFirst(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).First();
+        }
+
+        public Task<TEntity> QueryFirstAsync(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).FirstAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(!string.IsNullOrEmpty(where), where).OrderBy(orderByModels).ToListAsync();
+        }
+
+        public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression)
+        {
+            return _db.Queryable<TEntity>().Select(expression).ToListAsync();
+        }
+
+        public Task<List<TResult>> QueryDataAsync<TResult>(Expression<Func<TEntity, TResult>> expression, Expression<Func<TEntity, bool>> whereExpression, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Select(expression).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, Expression<Func<TEntity, object>> orderByExpression, bool isAsc = true)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(orderByExpression != null, orderByExpression, isAsc ? OrderByType.Asc : OrderByType.Desc).WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<TEntity>(sql, parameters);
+        }
+
+        public Task<List<dynamic>> QueryDynamicDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<dynamic>(sql, parameters);
+        }
+
+        public Task<List<object>> QueryObjectDataBySqlAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.SqlQueryAsync<object>(sql, parameters);
+        }
+
+        public Task<int> ExecuteSqlCommandAsync(string sql, params SqlParameter[] sqlParameters)
+        {
+            return _db.Ado.ExecuteCommandAsync(sql, sqlParameters);
+        }
+
+        public Task<DataTable> QueryTableAsync(string sql, SugarParameter[]? parameters = null)
+        {
+            return _db.Ado.GetDataTableAsync(sql, parameters);
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(whereExpression != null, whereExpression).Take(top).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, int top, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields).WhereIF(!string.IsNullOrEmpty(where), where).Take(top).ToListAsync();
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(Expression<Func<TEntity, bool>> whereExpression, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+              .WhereIF(whereExpression != null, whereExpression).ToPageListAsync(pageIndex, pageSize);
+        }
+
+        public Task<List<TEntity>> QueryDataAsync(string where, int pageIndex, int pageSize, string orderByFields)
+        {
+            return _db.Queryable<TEntity>().OrderByIF(!string.IsNullOrEmpty(orderByFields), orderByFields)
+                .WhereIF(!string.IsNullOrEmpty(where), where).ToPageListAsync(pageIndex, pageSize);
+        }
+
+        public Task<List<TResult>> QueryTabsAsync<T, T2, TResult>(Expression<Func<T, T2, object[]>> joinExpression, Expression<Func<T, T2, TResult>> selectExpression, Expression<Func<TResult, bool>> whereExpression)
+        {
+            return _db.Queryable(joinExpression)
+             .Select(selectExpression)
+             .WhereIF(whereExpression != null, whereExpression).ToListAsync();
+        }
+
+        /// <summary>
+        /// 鏉′欢鏌ヨ鏁版嵁骞舵帓搴�
+        /// </summary>
+        /// <param name="whereExpression"></param>
+        /// <param name="orderByFields"></param>
+        /// <returns></returns>
+        public virtual List<TEntity> QueryData(Expression<Func<TEntity, bool>> whereExpression, Dictionary<string, OrderByType> orderBy)
+        {
+            List<OrderByModel> orderByModels = new List<OrderByModel>();
+            foreach (var item in orderBy)
+            {
+                OrderByModel orderByModel = new OrderByModel()
+                {
+                    FieldName = item.Key,
+                    OrderByType = item.Value
+                };
+                orderByModels.Add(orderByModel);
+            }
+            return _db.Queryable<TEntity>().WhereIF(whereExpression != null, whereExpression).OrderBy(orderByModels).ToList();
+        }
+
+        public Task<bool> UpdateDataNavAsync(TEntity Entity)
+        {
+            return _db.UpdateNav(Entity).IncludesAllFirstLayer().ExecuteCommandAsync();
+        }
+
+        public bool UpdateDataNav(TEntity Entity)
+        {
+            return _db.UpdateNav(Entity).IncludesAllFirstLayer().ExecuteCommand();
+        }
+
+        public bool UpdateDataNav(List<TEntity> Entity)
+        {
+            return _db.UpdateNav(Entity).IncludesAllFirstLayer().ExecuteCommand();
+        }
+
+        public bool DeleteAndMoveIntoHty(TEntity entity, OperateTypeEnum operateType)
+        {
+            Type type = entity.GetType();
+            Assembly assembly = type.Assembly;
+            Type? htyType = assembly.GetType(type.FullName + "_Hty");
+            if (htyType != null)
+            {
+                object? obj = Activator.CreateInstance(htyType);
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+                PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+                if (obj != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+                {
+                    operateTypePro.SetValue(obj, operateType.ToString());
+                    sourceIdPro.SetValue(obj, keyPro.GetValue(entity));
+
+                    List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+
+                    for (int i = 0; i < propertyInfos.Count; i++)
+                    {
+                        PropertyInfo propertyInfo = propertyInfos[i];
+                        PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+                        if (property != null)
+                        {
+                            if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+                            {
+                                propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+                            }
+                            else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+                            {
+                                propertyInfo.SetValue(obj, DateTime.Now);
+                            }
+                            else
+                            {
+                                propertyInfo.SetValue(obj, property.GetValue(entity));
+                            }
+                        }
+                    }
+                    if (obj != null)
+                        _db.InsertableByObject(obj).AS(type.Name + "_Hty").ExecuteCommand();
+                }
+            }
+            return DeleteData(entity);
+        }
+
+        public bool DeleteAndMoveIntoHty(List<TEntity> entities, OperateTypeEnum operateType)
+        {
+            Type type = typeof(TEntity);
+            Assembly assembly = type.Assembly;
+            Type? htyType = assembly.GetType(type.FullName + "_Hty");
+            if (htyType != null)
+            {
+                object? obj2 = Activator.CreateInstance(htyType);
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                PropertyInfo? operateTypePro = htyType.GetProperty(nameof(IBaseHistoryEntity.OperateType));
+                PropertyInfo? sourceIdPro = htyType.GetProperty(nameof(IBaseHistoryEntity.SourceId));
+                if (obj2 != null && keyPro != null && operateTypePro != null && sourceIdPro != null)
+                {
+                    List<PropertyInfo> propertyInfos = htyType.GetProperties().Where(x => x.Name != operateTypePro.Name && x.Name != sourceIdPro.Name && x.Name != keyPro.Name).ToList();
+                    List<object> list = new List<object>();
+                    foreach (var item in entities)
+                    {
+                        object? obj = Activator.CreateInstance(htyType);
+                        if (obj != null)
+                        {
+                            operateTypePro.SetValue(obj, operateType.ToString());
+                            sourceIdPro.SetValue(obj, keyPro.GetValue(item));
+                            for (int i = 0; i < propertyInfos.Count; i++)
+                            {
+                                PropertyInfo propertyInfo = propertyInfos[i];
+                                PropertyInfo? property = type.GetProperty(propertyInfo.Name);
+
+                                if (property != null)
+                                {
+                                    if (propertyInfo.Name == nameof(BaseEntity.Modifier))
+                                    {
+                                        propertyInfo.SetValue(obj, App.User.UserId > 0 ? App.User.UserName : "System");
+                                    }
+                                    else if (propertyInfo.Name == nameof(BaseEntity.ModifyDate))
+                                    {
+                                        propertyInfo.SetValue(obj, DateTime.Now);
+                                    }
+                                    else
+                                    {
+                                        propertyInfo.SetValue(obj, property.GetValue(item));
+                                    }
+                                }
+                            }
+                            list.Add(obj);
+                        }
+                    }
+                    if (list.Count > 0)
+                        _db.InsertableByObject(list).AS(type.Name + "_Hty").ExecuteCommand();
+
+                }
+            }
+            return DeleteData(entities);
+        }
+
+        //List<TResult> QueryMuch<T, T2, T3, TResult>(
+        //    Expression<Func<T, T2, T3, object[]>> joinExpression,
+        //    Expression<Func<T, T2, T3, TResult>> selectExpression,
+        //    Expression<Func<T, T2, T3, bool>> whereLambda = null) where T : class, new(){throw new NotImplementedException();}
+        //Task<PageModel<TEntity>> QueryPage(PaginationModel pagination){throw new NotImplementedException();}
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
new file mode 100644
index 0000000..2723c74
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/IUnitOfWorkManage.cs
@@ -0,0 +1,26 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public interface IUnitOfWorkManage
+    {
+        SqlSugarClient GetDbClient();
+        int TranCount { get; }
+
+        UnitOfWork CreateUnitOfWork();
+
+        void BeginTran();
+        void BeginTran(MethodInfo method);
+        void CommitTran();
+        void CommitTran(MethodInfo method);
+        void RollbackTran();
+        void RollbackTran(MethodInfo method);
+        Task UseTranAsync(Func<Task> action);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs
new file mode 100644
index 0000000..d4ca76b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWork.cs
@@ -0,0 +1,55 @@
+锘縰sing Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class UnitOfWork : IDisposable
+    {
+        public ILogger Logger { get; set; }
+        public ISqlSugarClient Db { get; internal set; }
+
+        public ITenant Tenant { get; internal set; }
+
+        public bool IsTran { get; internal set; }
+
+        public bool IsCommit { get; internal set; }
+
+        public bool IsClose { get; internal set; }
+
+        public void Dispose()
+        {
+            if (IsTran && !IsCommit)
+            {
+                Logger.LogDebug("UnitOfWork RollbackTran");
+                this.Tenant.RollbackTran();
+            }
+
+            if (this.Db.Ado.Transaction != null || this.IsClose)
+                return;
+            this.Db.Close();
+        }
+
+        public bool Commit()
+        {
+            if (this.IsTran && !this.IsCommit)
+            {
+                Logger.LogDebug("UnitOfWork CommitTran");
+                this.Tenant.CommitTran();
+                this.IsCommit = true;
+            }
+
+            if (this.Db.Ado.Transaction == null && !this.IsClose)
+            {
+                this.Db.Close();
+                this.IsClose = true;
+            }
+
+            return this.IsCommit;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
new file mode 100644
index 0000000..32df00e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseRepository/UnitOfWorks/UnitOfWorkManage.cs
@@ -0,0 +1,215 @@
+锘縰sing Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.BaseRepository
+{
+    public class UnitOfWorkManage : IUnitOfWorkManage
+    {
+        private readonly ILogger<UnitOfWorkManage> _logger;
+        private readonly ISqlSugarClient _sqlSugarClient;
+
+        private int _tranCount { get; set; }
+        public int TranCount => _tranCount;
+        public readonly ConcurrentStack<string> TranStack = new();
+
+        public UnitOfWorkManage(ISqlSugarClient sqlSugarClient, ILogger<UnitOfWorkManage> logger)
+        {
+            _sqlSugarClient = sqlSugarClient;
+            _logger = logger;
+            _tranCount = 0;
+        }
+
+        /// <summary>
+        /// 鑾峰彇DB锛屼繚璇佸敮涓�鎬�
+        /// </summary>
+        /// <returns></returns>
+        public SqlSugarClient GetDbClient()
+        {
+            // 蹇呴』瑕乤s锛屽悗杈逛細鐢ㄥ埌鍒囨崲鏁版嵁搴撴搷浣�
+            return _sqlSugarClient as SqlSugarClient;
+        }
+
+
+        public UnitOfWork CreateUnitOfWork()
+        {
+            UnitOfWork uow = new UnitOfWork();
+            uow.Logger = _logger;
+            uow.Db = _sqlSugarClient;
+            uow.Tenant = (ITenant)_sqlSugarClient;
+            uow.IsTran = true;
+
+            uow.Db.Open();
+            uow.Tenant.BeginTran();
+            
+            _logger.LogDebug("UnitOfWork Begin");
+            return uow;
+        }
+
+        public void BeginTran()
+        {
+            lock (this)
+            {
+                _tranCount++;
+                GetDbClient().BeginTran();
+            }
+        }
+
+        public void BeginTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                GetDbClient().BeginTran();
+                TranStack.Push(method.GetFullName());
+                _tranCount = TranStack.Count;
+            }
+        }
+
+        public WebResponseContent BeginTran(Func<WebResponseContent> func)
+        {
+            lock (this)
+            {
+                BeginTran();
+                try
+                {
+                    WebResponseContent content = func();
+                    if (content.Status)
+                    {
+                        CommitTran();
+                    }
+                    else
+                    {
+                        RollbackTran();
+                    }
+                    return content;
+                }
+                catch(Exception ex)
+                {
+                    RollbackTran();
+                    return WebResponseContent.Instance.Error(ex.Message);
+                }
+            }
+        }
+
+        public void CommitTran()
+        {
+            lock (this)
+            {
+                _tranCount--;
+                if (_tranCount == 0)
+                {
+                    try
+                    {
+                        GetDbClient().CommitTran();
+                    }
+                    catch (Exception ex)
+                    {
+                        Console.WriteLine(ex.Message);
+                        GetDbClient().RollbackTran();
+                    }
+                }
+            }
+        }
+
+        public void CommitTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                string result = "";
+                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
+                {
+                    Thread.Sleep(1);
+                }
+
+
+                if (result == method.GetFullName())
+                {
+                    try
+                    {
+                        GetDbClient().CommitTran();
+
+                        _logger.LogDebug($"Commit Transaction");
+                        Console.WriteLine($"Commit Transaction");
+                    }
+                    catch (Exception ex)
+                    {
+                        Console.WriteLine(ex.Message);
+                        GetDbClient().RollbackTran();
+                        _logger.LogDebug($"Commit Error , Rollback Transaction");
+                    }
+                    finally
+                    {
+                        while (!TranStack.TryPop(out _))
+                        {
+                            Thread.Sleep(1);
+                        }
+
+                        _tranCount = TranStack.Count;
+                    }
+                }
+            }
+        }
+
+        public void RollbackTran()
+        {
+            lock (this)
+            {
+                _tranCount--;
+                GetDbClient().RollbackTran();
+            }
+        }
+
+        public void RollbackTran(MethodInfo method)
+        {
+            lock (this)
+            {
+                string result = "";
+                while (!TranStack.IsEmpty && !TranStack.TryPeek(out result))
+                {
+                    Thread.Sleep(1);
+                }
+
+                if (result == method.GetFullName())
+                {
+                    GetDbClient().RollbackTran();
+                    _logger.LogDebug($"Rollback Transaction");
+                    Console.WriteLine($"Rollback Transaction");
+                    while (!TranStack.TryPop(out _))
+                    {
+                        Thread.Sleep(1);
+                    }
+
+                    _tranCount = TranStack.Count;
+                }
+            }
+        }
+
+        public async Task UseTranAsync(Func<Task> action)
+        {
+            // 寮�濮嬩簨鍔�
+            await GetDbClient().BeginTranAsync();
+
+            try
+            {
+                // 鎵ц浼犲叆鐨勬搷浣�
+                await action();
+
+                // 鎻愪氦浜嬪姟
+                await GetDbClient().CommitTranAsync();
+            }
+            catch (Exception ex)
+            {
+                // 鍥炴粴浜嬪姟
+                await GetDbClient().RollbackTranAsync();
+                throw new Exception (ex.Message); // 閲嶆柊鎶涘嚭寮傚父锛屼互渚胯皟鐢ㄦ柟鍙互澶勭悊
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs
new file mode 100644
index 0000000..7544e67
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/IService.cs
@@ -0,0 +1,121 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public interface IService<TEntity> : IDependency where TEntity : class
+    {
+        ISqlSugarClient Db { get; }
+
+        /// <summary>
+        /// 鍒嗛〉鏌ヨ鏁版嵁
+        /// </summary>
+        /// <param name="options"></param>
+        /// <returns></returns>
+        PageGridData<TEntity> GetPageData(PageDataOptions options);
+
+        object GetDetailPage(PageDataOptions pageData);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent AddData(TEntity entity);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent AddData(List<TEntity> entities);
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        WebResponseContent AddData(SaveModel saveModel);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(TEntity entity);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(List<TEntity> entities);
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        WebResponseContent UpdateData(SaveModel saveModel);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="key">涓婚敭</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(object key);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="keys">涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(object[] keys);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(TEntity entity);
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        WebResponseContent DeleteData(List<TEntity> entities);
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <returns></returns>
+        WebResponseContent Export(PageDataOptions pageData);
+
+        /// <summary>
+        /// 瀵煎叆鏁版嵁
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        WebResponseContent Import(List<IFormFile> files);
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        WebResponseContent Upload(List<IFormFile> files);
+
+        /// <summary>
+        /// 妯℃澘涓嬭浇
+        /// </summary>
+        /// <returns></returns>
+        WebResponseContent DownLoadTemplate();
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs
new file mode 100644
index 0000000..5b84cbd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceBase.cs
@@ -0,0 +1,769 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Core.Models;
+using Magicodes.ExporterAndImporter.Excel;
+using Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Options;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SqlSugar;
+using System.Drawing.Drawing2D;
+using System.Dynamic;
+using System.Linq.Expressions;
+using System.Reflection;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public class ServiceBase<TEntity, TRepository> : ServiceFunFilter<TEntity>, IService<TEntity>
+         where TEntity : class, new()
+         where TRepository : IRepository<TEntity>
+
+    {
+        public ServiceBase(TRepository BaseDal)
+        {
+            this.BaseDal = BaseDal;
+        }
+
+        public TRepository BaseDal { get; set; } //閫氳繃鍦ㄥ瓙绫荤殑鏋勯�犲嚱鏁颁腑娉ㄥ叆锛岃繖閲屾槸鍩虹被锛屼笉鐢ㄦ瀯閫犲嚱鏁�
+
+        public ISqlSugarClient Db => BaseDal.Db;
+
+        private PropertyInfo[] _propertyInfo { get; set; } = null;
+        public PropertyInfo[] TProperties
+        {
+            get
+            {
+                if (_propertyInfo != null)
+                {
+                    return _propertyInfo;
+                }
+                _propertyInfo = typeof(TEntity).GetProperties();
+                return _propertyInfo;
+            }
+        }
+
+        public virtual PageGridData<TEntity> GetPageData(PageDataOptions options)
+        {
+            string wheres = ValidatePageOptions(options);
+            //鑾峰彇鎺掑簭瀛楁
+            Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+
+            PageGridData<TEntity> pageGridData = new PageGridData<TEntity>();
+            //if (QueryRelativeExpression != null)
+            //{
+            //    queryable = QueryRelativeExpression.Invoke(queryable);
+            //}
+            //if (options.Export)
+            //{
+            //    queryable = queryable.GetIQueryableOrderBy(orderbyDic);
+            //    if (Limit > 0)
+            //    {
+            //        queryable = queryable.Take(Limit);
+            //    }
+            //    pageGridData.rows = queryable.ToList();
+            //}
+            //else
+            //{
+            //    pageGridData.rows = repository.IQueryablePage(queryable,
+            //                        options.Page,
+            //                        options.Rows,
+            //                        out int rowCount,
+            //                        orderbyDic).ToList();
+            //    pageGridData.total = rowCount;
+            //    //鏌ヨ鐣岄潰缁熻姹傜瓑瀛楁
+            //    if (SummaryExpress != null)
+            //    {
+            //        pageGridData.summary = SummaryExpress.Invoke(queryable);
+            //        //Func<T, T> groupExpress = x =>x;
+            //        //pageGridData.summary = queryable.GroupBy(groupExpress).Select(SummaryExpress).FirstOrDefault();
+            //    }
+            //}
+            //GetPageDataOnExecuted?.Invoke(pageGridData);
+
+            pageGridData = BaseDal.QueryPage
+                (wheres, options.Page, options.Rows, orderbyDic);
+
+            return pageGridData;
+        }
+
+
+        protected string ValidatePageOptions(PageDataOptions options)
+        {
+            options = options ?? new PageDataOptions();
+            string where = "";
+            List<SearchParameters> searchParametersList = new List<SearchParameters>();
+            if (options.Filter != null && options.Filter.Count > 0)
+            {
+                searchParametersList.AddRange(options.Filter);
+            }
+            else if (!string.IsNullOrEmpty(options.Wheres))
+            {
+                try
+                {
+                    searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                    options.Filter = searchParametersList;
+                }
+                catch { }
+            }
+            QueryRelativeList?.Invoke(searchParametersList);
+
+            for (int i = 0; i < searchParametersList.Count; i++)
+            {
+                if (string.IsNullOrEmpty(searchParametersList[i].Value))
+                {
+                    continue;
+                }
+
+                PropertyInfo property = TProperties.Where(c => c.Name.ToUpper() == searchParametersList[i].Name.ToUpper()).FirstOrDefault();
+
+                if (property == null) continue;
+
+                (bool, string, object) result = property.ValidationVal(searchParametersList[i].Value);
+                if (!result.Item1)
+                {
+                    continue;
+                }
+
+                LinqExpressionType expressionType = searchParametersList[i].DisplayType.GetLinqCondition();
+                if (expressionType == LinqExpressionType.Equal)
+                {
+                    if (string.IsNullOrEmpty(where))
+                    {
+                        // 閽堝瀛楃涓茬被鍨嬬殑瀛楁浣跨敤妯$硦鏌ヨ
+                        //where += $"{searchParametersList[i].Name} like '%{searchParametersList[i].Value}%'";
+                        if (searchParametersList[i].Value.ToLower() == "true" || searchParametersList[i].Value.ToLower() == "false")
+                        {
+                            where += $" {searchParametersList[i].Name} = '{searchParametersList[i].Value.ToLower()}'";
+                        }
+                        else
+                        {
+                            where += $"[{searchParametersList[i].Name}] like '%{searchParametersList[i].Value}%'";
+                        }
+                    }
+                    else
+                    {
+                        // 閽堝甯冨皵绫诲瀷瀛楁杩涜绮剧‘鏌ヨ
+                        if (searchParametersList[i].Value.ToLower() == "true" || searchParametersList[i].Value.ToLower() == "false")
+                        {
+                            where += $" and {searchParametersList[i].Name} = '{searchParametersList[i].Value.ToLower()}'";
+                        }
+                        else
+                        {
+                            where += $" and [{searchParametersList[i].Name}] like '%{searchParametersList[i].Value}%'";
+                        }
+                    }
+                }
+                else
+                {
+                    if (searchParametersList[i].DisplayType.GetLinqCondition() == LinqExpressionType.ThanOrEqual)
+                    {
+                        if (string.IsNullOrEmpty(where))
+                            where += $"{searchParametersList[i].Name} >= '{searchParametersList[i].Value}'";
+                        else
+                            where += $" and {searchParametersList[i].Name} {searchParametersList[i].DisplayType.GetLinqCondition()} '{searchParametersList[i].Value}'";
+                    }
+                    else if (searchParametersList[i].DisplayType.GetLinqCondition() == LinqExpressionType.LessThanOrEqual)
+                    {
+                        if (string.IsNullOrEmpty(where))
+                            where += $"{searchParametersList[i].Name} <= '{searchParametersList[i].Value}'";
+                        else
+                            where += $" and {searchParametersList[i].Name} <= '{searchParametersList[i].Value}'";
+                    }
+                    else
+                    {
+                        if (string.IsNullOrEmpty(where))
+                            where += $"{searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'";
+                        else
+                            where += $" and {searchParametersList[i].Name} {searchParametersList[i].DisplayType} '{searchParametersList[i].Value}'";
+                    }
+                }
+            }
+            return where;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎺掑簭瀛楁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <param name="propertyInfo"></param>
+        /// <returns></returns>
+        public Dictionary<string, OrderByType> GetPageDataSort(PageDataOptions pageData, PropertyInfo[] propertyInfo)
+        {
+            if (!string.IsNullOrEmpty(pageData.Sort))
+            {
+                if (pageData.Sort.Contains(","))
+                {
+                    List<string> sortArr = pageData.Sort.Split(",").Where(x => propertyInfo.Any(p => p.Name == x)).ToList();
+                    Dictionary<string, OrderByType> sortDic = new Dictionary<string, OrderByType>();
+                    foreach (var item in sortArr)
+                    {
+                        sortDic[item] = pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc;
+                    }
+                    return sortDic;
+                }
+                else if (propertyInfo.Any(x => x.Name.ToUpper() == pageData.Sort.ToUpper()))
+                {
+                    return new Dictionary<string, OrderByType> {
+                        {
+                            pageData.Sort,pageData.Order?.ToLower() == OrderByType.Asc.ToString().ToLower()? OrderByType.Asc : OrderByType.Desc
+                        } };
+                }
+            }
+            return new Dictionary<string, OrderByType> { { "CreateDate", pageData.Order?.ToLower() == OrderByType.Asc.ToString() ? OrderByType.Asc : OrderByType.Desc } };
+        }
+
+        public virtual object GetDetailPage(PageDataOptions pageData)
+        {
+            Type t = typeof(TEntity);
+
+            if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+            string keyName = t.GetKeyName();
+            ////鐢熸垚鏌ヨ鏉′欢
+            //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+            int totalCount = 0;
+            PropertyInfo propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+            if (propertyInfo != null)
+            {
+                Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+                Navigate navigate = propertyInfo.GetCustomAttribute<Navigate>();
+                List<ExpandoObject> list = BaseDal.Db.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+                return new PageGridData<ExpandoObject>(totalCount, list);
+            }
+            return new PageGridData<object>(total: 0, null);
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.AddData(entity) > 0 ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.AddData(entities) > 0 ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 娣诲姞鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent AddData(SaveModel saveModel)
+        {
+            try
+            {
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+                string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, true, TProperties);
+
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
+
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                if (keyPro == null)
+                {
+                    return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+                }
+                if (keyPro.PropertyType == typeof(Guid))
+                {
+                    saveModel.MainData.Add(keyPro.Name, Guid.NewGuid());
+                }
+                else if (keyPro.PropertyType == typeof(int) || keyPro.PropertyType == typeof(long))
+                {
+                    SugarColumn sugarColumn = keyPro.GetCustomAttribute<SugarColumn>();
+                    if (sugarColumn.IsIdentity)
+                    {
+                        saveModel.MainData.Remove(keyPro.Name.FirstLetterToUpper());
+                        saveModel.MainData.Remove(keyPro.Name.FirstLetterToLower());
+                    }
+                }
+                TEntity entity = saveModel.MainData.DicToModel<TEntity>();
+                //if (saveModel.DetailData == null && saveModel.DetailData.Count == 0)
+                if (saveModel.DetailData == null )
+                {
+                    BaseDal.AddData(entity);
+                    return WebResponseContent.Instance.OK();
+                }
+
+                if (typeof(TEntity).GetNavigatePro() == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+                }
+
+                Type detailType = typeof(TEntity).GetDetailType();
+                MethodInfo? methodInfo = GetType().GetMethod("AddDataIncludesDetail");
+                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData });
+                return obj as WebResponseContent;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent AddDataIncludesDetail<TDetail>(TEntity entity, Type detailType, List<Dictionary<string, object>> detailDics) where TDetail : class, new()
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string name = typeof(TEntity).GetMainIdByDetail();
+                string reslut = detailType.ValidateDicInEntity(detailDics, true, new string[] { name });
+                if (reslut != string.Empty)
+                    return WebResponseContent.Instance.Error(reslut);
+
+                List<TDetail> list = detailDics.DicToIEnumerable<TDetail>();
+
+                ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                int id = BaseDal.Db.Insertable(entity).ExecuteReturnIdentity();
+
+                for (int i = 0; i < list.Count; i++)
+                {
+                    TDetail detail = list[i];
+                    typeof(TDetail).SetDetailId(detail, id, name);
+                }
+
+                BaseDal.Db.Insertable(list).ExecuteCommand();
+
+                ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.UpdateData(entity) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.UpdateData(entities) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 淇敼鏁版嵁
+        /// </summary>
+        /// <param name="saveModel"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            try
+            {
+                List<string>? list = UpdateIgnoreColOnExecute?.Invoke(saveModel);
+                if (saveModel == null || saveModel.MainData == null || saveModel.MainData.Count == 0)//鍒ゆ柇鍙傛暟鏄惁浼犲叆
+                {
+                    return WebResponseContent.Instance.Error("浼犲弬閿欒,鍙傛暟涓嶈兘涓虹┖");
+                }
+                string validResult = typeof(TEntity).ValidateDicInEntity(saveModel.MainData, false, TProperties, list?.ToArray());
+
+                if (!string.IsNullOrEmpty(validResult))
+                {
+                    return WebResponseContent.Instance.Error(validResult);
+                }
+
+                PropertyInfo keyPro = typeof(TEntity).GetKeyProperty();
+                if (keyPro == null)
+                {
+                    return WebResponseContent.Instance.Error("璇峰厛璁剧疆涓婚敭");
+                }
+
+                TEntity entity = saveModel.MainData.DicToModel<TEntity>();
+
+                List<string> listCol = new List<string>();
+                foreach (var item in saveModel.MainData)
+                {
+                    PropertyInfo propertyInfo = typeof(TEntity).GetProperty(item.Key);
+                    if (propertyInfo == null)
+                    {
+                        propertyInfo = typeof(TEntity).GetProperty(item.Key.FirstLetterToLower());
+                        if (propertyInfo == null)
+                        {
+                            propertyInfo = typeof(TEntity).GetProperty(item.Key.FirstLetterToUpper());
+                        }
+                    }
+
+                    listCol.Add(propertyInfo?.Name);
+                }
+
+                //if (saveModel.DetailData == null && saveModel.DetailData.Count == 0)
+                if (saveModel.DetailData == null)
+                {
+                    if (list != null)
+                        listCol = listCol.Where(x => !list.Contains(x)).ToList();
+                    bool result = BaseDal.UpdateData(entity, listCol, list);
+                    return WebResponseContent.Instance.OK();
+                }
+
+                if (typeof(TEntity).GetNavigatePro() == null)
+                {
+                    return WebResponseContent.Instance.Error("鏈厤缃鑸睘鎬�");
+                }
+
+                Type detailType = typeof(TEntity).GetDetailType();
+                MethodInfo? methodInfo = GetType().GetMethod("UpdateDataInculdesDetail");
+                methodInfo = methodInfo?.MakeGenericMethod(new Type[] { detailType });
+                object? obj = methodInfo?.Invoke(this, new object[] { entity, detailType, saveModel.DetailData, saveModel.DelKeys });
+                return obj as WebResponseContent;
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        public WebResponseContent UpdateDataInculdesDetail<TDetail>(TEntity entity, Type detailType, List<Dictionary<string, object>> detailDics, List<object> delKeys) where TDetail : class, new()
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                string name = typeof(TEntity).GetMainIdByDetail();
+                string reslut = detailType.ValidateDicInEntity(detailDics, true, new string[] { name });
+                if (reslut != string.Empty)
+                    return WebResponseContent.Instance.Error(reslut);
+
+                List<TDetail> list = detailDics.DicToIEnumerable<TDetail>();
+
+                List<object> dynamicDelKeys = new List<object>();
+                if (delKeys != null)
+                {
+                    for (int i = 0; i < delKeys.Count; i++)
+                    {
+                        dynamicDelKeys.Add(delKeys[i]);
+                    }
+                }
+
+                List<TDetail> updateRows = new List<TDetail>();
+                List<TDetail> addRows = new List<TDetail>();
+
+                for (int i = 0; i < list.Count; i++)
+                {
+                    object detailId = typeof(TDetail).GetPropertyValue(list[i], typeof(TDetail).GetKeyName());
+                    if (detailId != null)
+                    {
+                        if (detailId.ToString() != "0")
+                        {
+                            updateRows.Add(list[i]);
+                        }
+                        else
+                        {
+                            addRows.Add(list[i]);
+                        }
+                    }
+                }
+
+                object mainId = typeof(TEntity).GetPropertyValue(entity, typeof(TEntity).GetKeyName());
+                if (mainId != null)
+                {
+                    ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                    if (dynamicDelKeys.Count > 0)
+                        BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{detailType.GetKeyName()} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
+
+                    BaseDal.Db.Updateable(entity).ExecuteCommandHasChange();
+
+                    BaseDal.Db.Updateable(updateRows).ExecuteCommand();
+
+                    for (int i = 0; i < addRows.Count; i++)
+                    {
+                        TDetail detail = addRows[i];
+                        typeof(TDetail).SetDetailId(detail, mainId, name);
+                    }
+
+                    BaseDal.Db.Insertable(addRows).ExecuteCommand();
+
+                    ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                    content = WebResponseContent.Instance.OK();
+                }
+                else
+                {
+                    content = WebResponseContent.Instance.Error("鏈壘鍒颁富琛ㄤ富閿��");
+                }
+
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="key">涓婚敭</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(object key)
+        {
+            try
+            {
+                return BaseDal.DeleteDataById(key) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="keys">涓婚敭鏁扮粍</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(object[] keys)
+        {
+            try
+            {
+                if (typeof(TEntity).GetNavigatePro() == null)
+                    return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛") : WebResponseContent.Instance.Error();
+                else
+                {
+                    if (keys != null)
+                    {
+                        Type detailType = typeof(TEntity).GetDetailType();
+                        string name = typeof(TEntity).GetMainIdByDetail();
+                        List<object> dynamicDelKeys = new List<object>();
+
+                        for (int i = 0; i < keys.Length; i++)
+                        {
+                            dynamicDelKeys.Add(keys[i]);
+                        }
+                        ((SqlSugarClient)BaseDal.Db).BeginTran();
+
+                        if (dynamicDelKeys.Count > 0)
+                            BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange();
+
+                        BaseDal.DeleteDataByIds(keys);
+
+                        ((SqlSugarClient)BaseDal.Db).CommitTran();
+
+                        return WebResponseContent.Instance.OK("鍒犻櫎鎴愬姛");
+                    }
+                    else
+                    {
+                        return WebResponseContent.Instance.Error("鍙傛暟閿欒");
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                ((SqlSugarClient)BaseDal.Db).RollbackTran();
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entity">鍗曚釜瀹炰綋</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(TEntity entity)
+        {
+            try
+            {
+                return BaseDal.DeleteData(entity) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏁版嵁
+        /// </summary>
+        /// <param name="entities">瀹炰綋闆嗗悎</param>
+        /// <returns></returns>
+        public virtual WebResponseContent DeleteData(List<TEntity> entities)
+        {
+            try
+            {
+                return BaseDal.DeleteData(entities) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 瀵煎嚭鏁版嵁
+        /// </summary>
+        /// <param name="pageData"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Export(PageDataOptions options)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Type t = typeof(TEntity);
+
+                string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport";
+                IExporter exporter = new ExcelExporter();
+                string wheres = ValidatePageOptions(options);
+                //鑾峰彇鎺掑簭瀛楁
+                Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+
+                List<TEntity> entities = BaseDal.QueryData(wheres, orderbyDic);
+
+                byte[] data = exporter.ExportAsByteArray(entities).Result;
+
+                string fileName = "";
+                SugarTable sugarTable = t.GetCustomAttribute<SugarTable>();
+                if (sugarTable != null)
+                {
+                    fileName = sugarTable.TableDescription + ".xlsx";
+                }
+                else
+                {
+                    fileName = nameof(TEntity) + ".xlsx";
+                }
+
+                FileHelper.WriteFile(savePath, fileName, data);
+
+                content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        /// <summary>
+        /// 瀵煎叆鏁版嵁
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Import(List<IFormFile> files)
+        {
+            try
+            {
+                if (files == null || files.Count == 0)
+                    return new WebResponseContent { Status = true, Message = "璇烽�夋嫨涓婁紶鐨勬枃浠�" };
+                Microsoft.AspNetCore.Http.IFormFile formFile = files[0];
+                string dicPath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelImprot/{DateTime.Now.ToString("yyyMMdd")}/{typeof(TEntity).Name}/";
+                if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath);
+                string fileName = $"{Guid.NewGuid()}_{formFile.FileName}";
+                dicPath = $"{dicPath}{fileName}";
+                using (FileStream stream = new FileStream(dicPath, FileMode.Create))
+                {
+                    formFile.CopyTo(stream);
+                }
+                ExcelImporter importer = new ExcelImporter();
+                ImportResult<TEntity> importResult = importer.Import<TEntity>(dicPath, "").Result;
+                if (importResult.HasError)
+                {
+                    return WebResponseContent.Instance.Error(importResult.TemplateErrors.Serialize());
+                }
+                BaseDal.AddData(importResult.Data.ToList());
+                return WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 涓婁紶鏂囦欢
+        /// </summary>
+        /// <param name="files"></param>
+        /// <returns></returns>
+        public virtual WebResponseContent Upload(List<IFormFile> files)
+        {
+            throw new NotImplementedException();
+        }
+
+        /// <summary>
+        /// 妯℃澘涓嬭浇
+        /// </summary>
+        /// <returns></returns>
+        public virtual WebResponseContent DownLoadTemplate()
+        {
+            WebResponseContent content = new WebResponseContent();
+            Type t = typeof(TEntity);
+            IExporter exporter = new ExcelExporter();
+            byte[] data = exporter.ExportHeaderAsByteArray(new TEntity()).Result;
+            string fileName = "";
+            SugarTable sugarTable = t.GetCustomAttribute<SugarTable>();
+            if (sugarTable != null)
+            {
+                fileName = sugarTable.TableDescription + "瀵煎叆妯℃澘.xlsx";
+            }
+            else
+            {
+                fileName = nameof(TEntity) + "瀵煎叆妯℃澘.xlsx";
+            }
+            string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelImprotTemplate";
+            FileHelper.WriteFile(savePath, fileName, data);
+
+            content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+            return content;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs
new file mode 100644
index 0000000..441cd3d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/BaseServices/ServiceFunFilter.cs
@@ -0,0 +1,234 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.BaseServices
+{
+    public abstract class ServiceFunFilter<T> where T : class
+    {
+        /// <summary>
+        /// 2020.08.15鏄惁寮�鍚绉熸埛鍔熻兘
+        /// 浣跨敤鏂规硶瑙佹枃妗f垨SellOrderService.cs
+        /// </summary>
+        protected bool IsMultiTenancy { get; set; }
+
+        /// <summary>
+        /// 鏌ヨ鐣岄潰table 缁熻銆佹眰鍜屻�佸钩鍧囧�肩瓑
+        /// 瀹炵幇鏂瑰紡
+        ///SummaryExpress = (IQueryable<App_TransactionAvgPrice> queryable) =>
+        //                {
+        //                return queryable.GroupBy(x => 1).Select(x => new
+        //                {
+        //                    AvgPrice = x.Average(o => o.AvgPrice),
+        //                    Enable = x.Sum(o => o.Enable)
+        //            }).FirstOrDefault();
+        //};
+        /// </summary>
+        //   protected Func<IGrouping<T, T>, object> SummaryExpress = null;
+        protected Func<IQueryable<T>, object> SummaryExpress = null;
+
+        /// <summary>
+        /// 鏄庣粏table 缁熻銆佹眰鍜屻�佸钩鍧囧�肩瓑
+        /// </summary>
+        /// <typeparam name="Detail"></typeparam>
+        /// <param name="queryeable"></param>
+        /// <returns></returns>
+        //protected abstract object GetDetailSummary<Detail>(IQueryable<Detail> queryeable);
+
+        /// <summary>
+        /// 鏄惁寮�鍚敤鎴锋暟鎹潈闄�,true=鐢ㄦ埛鍙兘鎿嶄綔鑷繁(鍙婁笅绾ц鑹�)鍒涘缓鐨勬暟鎹�,濡�:鏌ヨ銆佸垹闄ゃ�佷慨鏀圭瓑鎿嶄綔
+        /// 娉ㄦ剰锛氶渶瑕佸湪浠g爜鐢熸垚鍣ㄧ晫闈㈤�夋嫨銆愭槸銆戝強鐢熸垚Model鎵嶄細鐢熸晥)
+        /// </summary>
+        protected bool LimitCurrentUserPermission { get; set; } = false;
+
+        ///榛樿瀵煎嚭鏈�澶ц〃鏁伴噺锛�0涓嶉檺鍒� 
+        protected int Limit { get; set; } = 0;
+
+        /// <summary>
+        /// 榛樿涓婁紶鏂囦欢澶у皬闄愬埗3M
+        /// </summary>
+        protected int LimitUpFileSizee { get; set; } = 3;
+
+
+        /// <summary>
+        /// 2020.08.15娣诲姞鑷畾涔夊師鐢熸煡璇ql,杩欎釜瀵逛簬涓嶆兂鍐欒〃杈惧紡鍏宠仈鎴栬�呭鏉傛煡璇㈤潪甯告湁鐢�
+        /// 渚嬶細QuerySql=$"select * from tb1 as a where  a.name='xxxx' x.id in (select b.id from tb2 b)";
+        ///  select * 杩欓噷鍙互鑷畾涔夛紝浣唖elect 蹇呴』杩斿洖琛ㄦ墍鏈夌殑鍒楋紝涓嶈兘灏�
+        /// </summary>
+        protected string QuerySql = null;
+
+        /// <summary>
+        /// 鏌ヨ鍓�,瀵圭幇鍦ㄦ湁鐨勬煡璇㈠瓧绗︿覆鏉′欢澧炲姞鎴栧垹闄�
+        /// </summary>
+        protected Action<List<SearchParameters>> QueryRelativeList { get; set; }
+
+        //鏌ヨ鍓�,鍦ㄧ幇鏈夌殑鏌ヨ鏉′欢涓婇�氳繃琛ㄨ揪寮忎慨鏀规煡璇㈡潯浠�
+        protected Func<IQueryable<T>, IQueryable<T>> QueryRelativeExpression { get; set; }
+
+
+        /// <summary>
+        /// 鎸囧畾鏌ヨ鐨勫垪锛屾牸寮�:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }(鏆傛椂鏈惎鐢�)
+        /// </summary>
+        protected Expression<Func<T, object>> Columns { get; set; }
+
+        /// <summary>
+        /// 璁剧疆鏌ヨ鎺掑簭鍙傛暟鍙婃柟寮�,鍙傛暟鏍煎紡涓猴細
+        ///  Expression<Func<T, Dictionary<object, bool>>> orderBy = x => new Dictionary<object, QueryOrderBy>() 
+        ///            {{ x.ID, QueryOrderBy.Asc },{ x.DestWarehouseName, QueryOrderBy.Desc } };
+        /// 杩斿洖鐨勬槸new Dictionary<object, bool>(){{}}key涓烘帓搴忓瓧娈碉紝QueryOrderBy涓烘帓搴忔柟寮�
+        /// </summary>
+        protected Expression<Func<T, Dictionary<object, OrderByType>>> OrderByExpression;
+
+        /// <summary>
+        /// 璁剧疆鏌ヨ鐨勮〃鍚�(宸插純鐢�)
+        /// </summary>
+        protected string TableName { get; set; }
+
+        /// <summary>
+        /// 椤甸潰鏌ヨ鎴栧鍑猴紝浠庢暟鎹簱鏌ヨ鍑烘潵鐨勭粨鏋�
+        /// </summary>
+        protected Action<PageGridData<T>> GetPageDataOnExecuted;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓澶勭悊鍓�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, WebResponseContent> AddOnExecute;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓淇濆瓨鏁版嵁搴撳墠澶勭悊(宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�)
+        ///  Func<T, object,ResponseData>  T涓轰富琛ㄦ暟鎹紝object涓烘槑缁嗘暟鎹�(濡傛灉闇�瑕佷娇鐢ㄦ槑缁嗗璞�,璇风敤 object as List<T>杞崲) 
+        /// </summary>
+        protected Func<T, object, WebResponseContent> AddOnExecuting;
+
+        /// <summary>
+        /// 璋冪敤鏂板缓淇濆瓨鏁版嵁搴撳悗澶勭悊銆�
+        /// **瀹炵幇褰撳墠鏂规硶鏃讹紝鍐呴儴榛樿宸茬粡寮�鍚簨鍔★紝濡傛灉瀹炵幇鐨勬柟娉曟搷浣滅殑鏄悓涓�鏁版嵁搴�,鍒欎笉闇�瑕佸湪AddOnExecuted涓簨鍔�
+        ///  Func<T, object,ResponseData>  T涓轰富琛ㄦ暟鎹紝object涓烘槑缁嗘暟鎹�(濡傛灉闇�瑕佷娇鐢ㄦ槑缁嗗璞�,璇风敤 object as List<T>杞崲) 
+        ///  姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<T, object, WebResponseContent> AddOnExecuted;
+
+        /// <summary>
+        /// 杩涘叆瀹℃壒娴佺▼鏂规硶涔嬪墠
+        /// </summary>
+        protected Func<T, bool> AddWorkFlowExecuting;
+
+        /// <summary>
+        /// 鍐欏叆瀹℃壒娴佺▼鏁版嵁涔嬪悗
+        /// list:瀹℃壒鐨勪汉id
+        /// </summary>
+        protected Action<T, List<int>> AddWorkFlowExecuted;
+
+        /// <summary>
+        /// 璋冪敤鏇存柊鏂规硶鍓嶅鐞�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, WebResponseContent> UpdateOnExecute;
+
+        /// <summary>
+        /// 璋冪敤鏇存柊鏂规硶鍓嶅鐞�(SaveModel涓轰紶鍏ョ殑鍘熺敓鏁版嵁)
+        /// </summary>
+        protected Func<SaveModel, List<string>> UpdateIgnoreColOnExecute;
+
+        /// <summary>
+        ///  璋冪敤鏇存柊鏂规硶淇濆瓨鏁版嵁搴撳墠澶勭悊
+        ///  (宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�,灏嗘槑缁嗘柊澧炪�佷慨鏀广�佸垹闄ょ殑鏁版嵁鍒嗗埆鐢╫bject1/2/3鏍囪瘑鍑烘潵 )
+        ///  T=鏇存柊鐨勪富琛ㄥ璞�
+        ///  object1=涓烘柊澧炴槑缁嗙殑瀵硅薄锛屼娇鐢ㄦ椂灏唎bject as List<T>杞崲涓�涓�
+        ///  object2=涓烘洿鏂版槑缁嗙殑瀵硅薄
+        ///  List<object>=涓哄垹闄ょ殑缁嗙殑瀵硅薄Key
+        /// </summary>
+        protected Func<T, object, object, List<object>, WebResponseContent> UpdateOnExecuting;
+
+        /// <summary>
+        ///  璋冪敤鏇存柊鏂规硶淇濆瓨鏁版嵁搴撳悗澶勭悊
+        ///   **瀹炵幇褰撳墠鏂规硶鏃讹紝鍐呴儴榛樿宸茬粡寮�鍚簨鍔★紝濡傛灉瀹炵幇鐨勬柟娉曟搷浣滅殑鏄悓涓�鏁版嵁搴�,鍒欎笉闇�瑕佸湪UpdateOnExecuted涓簨鍔�
+        ///  (宸插皢鎻愪氦鐨勫師鐢熸暟鎹浆鎹㈡垚浜嗗璞�,灏嗘槑缁嗘柊澧炪�佷慨鏀广�佸垹闄ょ殑鏁版嵁鍒嗗埆鐢╫bject1/2/3鏍囪瘑鍑烘潵 )
+        ///  T=鏇存柊鐨勪富琛ㄥ璞�
+        ///  object1=涓烘柊澧炴槑缁嗙殑瀵硅薄锛屼娇鐢ㄦ椂灏唎bject as List<T>杞崲涓�涓�
+        ///  object2=涓烘洿鏂版槑缁嗙殑瀵硅薄
+        ///  List<object>=涓哄垹闄ょ殑缁嗙殑瀵硅薄Key
+        /// 姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<T, object, object, List<object>, WebResponseContent> UpdateOnExecuted;
+
+        /// <summary>
+        /// 鍒犻櫎鍓嶅鐞�,object[]鍑嗗鍒犻櫎鐨勪富閿�
+        /// </summary>
+        protected Func<object[], WebResponseContent> DelOnExecuting;
+
+        /// <summary>
+        /// 鍒犻櫎鍚庡鐞�,object[]宸插垹闄ょ殑涓婚敭,姝ゅ宸插紑鍚簡DbContext浜嬪姟(閲嶇偣),濡傛灉杩樻湁鍏朵粬涓氬姟澶勪簨锛岀洿鎺ュ湪杩欓噷鍐橢F浠g爜,涓嶉渶瑕佸啀寮�鍚簨鍔�
+        /// 濡傛灉鎵ц鐨勬槸鎵嬪啓sql璇风敤repository.DbContext.Database.ExecuteSqlCommand()鎴� repository.DbContext.Set<T>().FromSql鎵ц鍏蜂綋sql璇彞
+        /// </summary>
+        protected Func<object[], WebResponseContent> DelOnExecuted;
+
+        /// <summary>
+        /// 瀹℃牳鍓嶅鐞�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> AuditOnExecuting;
+        /// <summary>
+        /// 瀹℃牳鍚庡鐞�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> AuditOnExecuted;
+
+
+        /// <summary>
+        ///瀵煎嚭鍓嶅鐞�,DataTable瀵煎嚭鐨勮〃鏁版嵁
+        ///List<T>瀵煎嚭鐨勬暟鎹�, List<string>蹇界暐涓嶉渶瑕佸鍑虹殑瀛楁
+        ///姝ゆ柟娉曚笉寤鸿浣跨敤,鐢变笅闈xportColumns濮旀墭鏇夸唬2020.05.07
+        /// </summary>
+        protected Func<List<T>, List<string>, WebResponseContent> ExportOnExecuting;
+
+        /// <summary>
+        /// 2020.05.07
+        /// 瀵煎嚭琛ㄦ暟鎹�(鐣岄潰涓婂鍑烘搷浣�),鎸囧畾瑕佸鍑虹殑鍒楋紝鏍煎紡:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }
+        /// </summary>
+        protected Expression<Func<T, object>> ExportColumns { get; set; }
+
+
+        /// <summary>
+        /// 2020.05.07
+        /// 瀵煎嚭涓嬭浇妯℃澘锛屾寚瀹氳瀵煎嚭鐨勬ā鏉垮垪锛屾牸寮�:Expression<Func<T, object>> exp = x => new { x.瀛楁1, x.瀛楁2 }
+        /// </summary>
+        protected Expression<Func<T, object>> DownLoadTemplateColumns { get; set; }
+
+
+        /// <summary>
+        /// 瀵煎叆淇濆瓨鍚�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> ImportOnExecuted;
+
+        /// <summary>
+        /// 瀵煎叆淇濆瓨鍓�
+        /// </summary>
+        protected Func<List<T>, WebResponseContent> ImportOnExecuting;
+
+        /// <summary>
+        /// 瀵煎叆鏃朵笉楠岃瘉涓嬫媺妗嗘暟鎹簮鐨勫瓧娈靛��2023.05.03
+        /// </summary>
+        protected Expression<Func<T, object>> ImportIgnoreSelectValidationColumns;
+
+        /// <summary>
+        /// 2022.06.20澧炲姞鍘熺敓excel璇诲彇鏂规硶(瀵煎叆鏃跺彲浠ヨ嚜瀹氫箟璇诲彇excel鍐呭)
+        /// string=褰撳墠璇诲彇鐨別xcel鍗曞厓鏍肩殑鍊�
+        /// ExcelWorksheet=excel瀵硅薄
+        /// ExcelRange褰撳墠excel鍗曞厓鏍煎璞�
+        /// int=褰撳墠璇诲彇鐨勭鍑犳暟
+        /// int=褰撳墠璇诲彇鐨勭鍑犲垪
+        /// string=杩斿洖鐨勫��
+        /// </summary>
+        //protected Func<string, ExcelWorksheet, ExcelRange, int, int, string> ImportOnReadCellValue;
+
+
+        /// <summary>
+        /// 鑷畾涔変笂浼犳枃浠跺す(2022.10.07)
+        /// </summary>
+        protected string UploadFolder = null;
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs
new file mode 100644
index 0000000..fff2699
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/Caching.cs
@@ -0,0 +1,351 @@
+锘縰sing Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Memory;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+
+namespace WIDESEA_Core.Caches
+{
+    /// <summary>
+    /// 瀹炰緥鍖栫紦瀛樻帴鍙Caching
+    /// </summary>
+    public class Caching : ICaching
+    {
+        private readonly IDistributedCache _cache;
+
+        public Caching(IDistributedCache cache)
+        {
+            _cache = cache;
+        }
+
+        private byte[] GetBytes<T>(T source)
+        {
+            return Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(source));
+        }
+
+        public IDistributedCache Cache => _cache;
+
+        public void AddCacheKey(string cacheKey)
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (!allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Add(cacheKey);
+                _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        /// <summary>
+        /// 澧炲姞缂撳瓨Key
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task AddCacheKeyAsync(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (!allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Add(cacheKey);
+                await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        public void DelByPattern(string key)
+        {
+            var allkeys = GetAllCacheKeys();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+            delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+            _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鏌愮壒寰佸叧閿瓧缂撳瓨
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task DelByPatternAsync(string key)
+        {
+            var allkeys = await GetAllCacheKeysAsync();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.Contains(key)).ToList();
+            delAllkeys.ForEach(u => { _cache.Remove(u); });
+
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.Contains(key)).ToList();
+            await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+
+        public void DelCacheKey(string cacheKey)
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Remove(cacheKey);
+                _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task DelCacheKeyAsync(string cacheKey)
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            var allkeys = string.IsNullOrWhiteSpace(res) ? new List<string>() : JsonConvert.DeserializeObject<List<string>>(res);
+            if (allkeys.Any(m => m == cacheKey))
+            {
+                allkeys.Remove(cacheKey);
+                await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+            }
+        }
+
+        public bool Exists(string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res != null;
+        }
+
+        /// <summary>
+        /// 妫�鏌ョ粰瀹� key 鏄惁瀛樺湪
+        /// </summary>
+        /// <param name="cacheKey">閿�</param>
+        /// <returns></returns>
+        public async Task<bool> ExistsAsync(string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res != null;
+        }
+
+        public List<string> GetAllCacheKeys()
+        {
+            var res = _cache.GetString(CacheConst.KeyAll);
+            return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌紦瀛樺垪琛�
+        /// </summary>
+        /// <returns></returns>
+        public async Task<List<string>> GetAllCacheKeysAsync()
+        {
+            var res = await _cache.GetStringAsync(CacheConst.KeyAll);
+            return string.IsNullOrWhiteSpace(res) ? null : JsonConvert.DeserializeObject<List<string>>(res);
+        }
+
+        public T Get<T>(string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task<T> GetAsync<T>(string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject<T>(Encoding.UTF8.GetString(res));
+        }
+
+        public object Get(Type type, string cacheKey)
+        {
+            var res = _cache.Get(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+        }
+
+        public async Task<object> GetAsync(Type type, string cacheKey)
+        {
+            var res = await _cache.GetAsync(cacheKey);
+            return res == null ? default : JsonConvert.DeserializeObject(Encoding.UTF8.GetString(res), type);
+        }
+
+        public string GetString(string cacheKey)
+        {
+            return _cache.GetString(cacheKey);
+        }
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <returns></returns>
+        public async Task<string> GetStringAsync(string cacheKey)
+        {
+            return await _cache.GetStringAsync(cacheKey);
+        }
+
+        public void Remove(string key)
+        {
+            _cache.Remove(key);
+            DelCacheKey(key);
+        }
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task RemoveAsync(string key)
+        {
+            await _cache.RemoveAsync(key);
+            await DelCacheKeyAsync(key);
+        }
+
+        public void RemoveAll()
+        {
+            var catches = GetAllCacheKeys();
+            foreach (var @catch in catches) Remove(@catch);
+
+            catches.Clear();
+            _cache.SetString(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+        }
+
+        public async Task RemoveAllAsync()
+        {
+            var catches = await GetAllCacheKeysAsync();
+            foreach (var @catch in catches) await RemoveAsync(@catch);
+
+            catches.Clear();
+            await _cache.SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(catches));
+        }
+
+
+        public void Set<T>(string cacheKey, T value, TimeSpan? expire = null)
+        {
+            _cache.Set(cacheKey, GetBytes(value),
+                expire == null
+                    ? new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) }
+                    : new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀵硅薄缂撳瓨
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public async Task SetAsync<T>(string cacheKey, T value)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+                new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀵硅薄缂撳瓨,骞惰缃繃鏈熸椂闂�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <param name="expire"></param>
+        /// <returns></returns>
+        public async Task SetAsync<T>(string cacheKey, T value, TimeSpan expire)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)),
+                new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        public void SetPermanent<T>(string cacheKey, T value)
+        {
+            _cache.Set(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+            AddCacheKey(cacheKey);
+        }
+
+        public async Task SetPermanentAsync<T>(string cacheKey, T value)
+        {
+            await _cache.SetAsync(cacheKey, Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(value)));
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        public void SetString(string cacheKey, string value, TimeSpan? expire = null)
+        {
+            if (expire == null)
+                _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+            else
+                _cache.SetString(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            AddCacheKey(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛楃涓茬紦瀛�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <returns></returns>
+        public async Task SetStringAsync(string cacheKey, string value)
+        {
+            await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(6) });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        /// 澧炲姞瀛楃涓茬紦瀛�,骞惰缃繃鏈熸椂闂�
+        /// </summary>
+        /// <param name="cacheKey"></param>
+        /// <param name="value"></param>
+        /// <param name="expire"></param>
+        /// <returns></returns>
+        public async Task SetStringAsync(string cacheKey, string value, TimeSpan expire)
+        {
+            await _cache.SetStringAsync(cacheKey, value, new DistributedCacheEntryOptions() { AbsoluteExpirationRelativeToNow = expire });
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+
+        /// <summary>
+        /// 缂撳瓨鏈�澶ц鑹叉暟鎹寖鍥�
+        /// </summary>
+        /// <param name="userId"></param>
+        /// <param name="dataScopeType"></param>
+        /// <returns></returns>
+        public async Task SetMaxDataScopeType(long userId, int dataScopeType)
+        {
+            var cacheKey = CacheConst.KeyMaxDataScopeType + userId;
+            await SetStringAsync(cacheKey, dataScopeType.ToString());
+
+            await AddCacheKeyAsync(cacheKey);
+        }
+
+        /// <summary>
+        ///  鏍规嵁鐖堕敭娓呯┖
+        /// </summary>
+        /// <param name="key"></param>
+        /// <returns></returns>
+        public async Task DelByParentKeyAsync(string key)
+        {
+            var allkeys = await GetAllCacheKeysAsync();
+            if (allkeys == null) return;
+
+            var delAllkeys = allkeys.Where(u => u.StartsWith(key)).ToList();
+            delAllkeys.ForEach(Remove);
+            // 鏇存柊鎵�鏈夌紦瀛橀敭
+            allkeys = allkeys.Where(u => !u.StartsWith(key)).ToList();
+            await SetStringAsync(CacheConst.KeyAll, JsonConvert.SerializeObject(allkeys));
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs
new file mode 100644
index 0000000..7deecbf
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICacheService.cs
@@ -0,0 +1,60 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    public interface ICacheService : IDisposable
+    {
+        /// <summary>
+        /// 楠岃瘉缂撳瓨椤规槸鍚﹀瓨鍦�
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        bool Exists(string key);
+
+        /// <summary>
+        /// 娣诲姞缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <param name="value">缂撳瓨Value</param>
+        /// <param name="expiresIn">缂撳瓨鏃堕暱</param>
+        /// <param name="isSliding">鏄惁婊戝姩杩囨湡锛堝鏋滃湪杩囨湡鏃堕棿鍐呮湁鎿嶄綔锛屽垯浠ュ綋鍓嶆椂闂寸偣寤堕暱杩囨湡鏃堕棿锛� //new TimeSpan(0, 60, 0);</param>
+        /// <returns></returns>
+        bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false);
+
+        bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false);
+
+        void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false);
+
+        /// <summary>
+        /// 鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        bool Remove(string key);
+
+        /// <summary>
+        /// 鎵归噺鍒犻櫎缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key闆嗗悎</param>
+        /// <returns></returns>
+        void Remove(IEnumerable<string> keys);
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        T Get<T>(string key) where T : class;
+
+        /// <summary>
+        /// 鑾峰彇缂撳瓨
+        /// </summary>
+        /// <param name="key">缂撳瓨Key</param>
+        /// <returns></returns>
+        string Get(string key);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs
new file mode 100644
index 0000000..052615c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/ICaching.cs
@@ -0,0 +1,59 @@
+锘縰sing Microsoft.Extensions.Caching.Distributed;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    /// <summary>
+    /// 缂撳瓨鎶借薄鎺ュ彛,鍩轰簬IDistributedCache灏佽
+    /// </summary>
+    public interface ICaching
+    {
+        public IDistributedCache Cache { get; }
+        void AddCacheKey(string cacheKey);
+        Task AddCacheKeyAsync(string cacheKey);
+
+        void DelByPattern(string key);
+        Task DelByPatternAsync(string key);
+
+        void DelCacheKey(string cacheKey);
+        Task DelCacheKeyAsync(string cacheKey);
+
+        bool Exists(string cacheKey);
+        Task<bool> ExistsAsync(string cacheKey);
+
+        List<string> GetAllCacheKeys();
+        Task<List<string>> GetAllCacheKeysAsync();
+
+        T Get<T>(string cacheKey);
+        Task<T> GetAsync<T>(string cacheKey);
+
+        object Get(Type type, string cacheKey);
+        Task<object> GetAsync(Type type, string cacheKey);
+
+        string GetString(string cacheKey);
+        Task<string> GetStringAsync(string cacheKey);
+
+        void Remove(string key);
+        Task RemoveAsync(string key);
+
+        void RemoveAll();
+        Task RemoveAllAsync();
+
+        void Set<T>(string cacheKey, T value, TimeSpan? expire = null);
+        Task SetAsync<T>(string cacheKey, T value);
+        Task SetAsync<T>(string cacheKey, T value, TimeSpan expire);
+
+        void SetPermanent<T>(string cacheKey, T value);
+        Task SetPermanentAsync<T>(string cacheKey, T value);
+
+        void SetString(string cacheKey, string value, TimeSpan? expire = null);
+        Task SetStringAsync(string cacheKey, string value);
+        Task SetStringAsync(string cacheKey, string value, TimeSpan expire);
+
+        Task DelByParentKeyAsync(string key);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs
new file mode 100644
index 0000000..7b7f959
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs
@@ -0,0 +1,114 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Caches
+{
+    public class MemoryCacheService : ICacheService
+    {
+        protected IMemoryCache _cache;
+        public MemoryCacheService(IMemoryCache cache)
+        {
+            _cache = cache;
+
+        }
+
+        public bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false)
+        {
+            return AddObject(key, value, expireSeconds, isSliding);
+        }
+
+        public bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false)
+        {
+            if (expireSeconds != -1)
+            {
+                _cache.Set(key,
+                    value,
+                    new MemoryCacheEntryOptions()
+                    .SetSlidingExpiration(new TimeSpan(0, 0, expireSeconds))
+                    );
+            }
+            else
+            {
+                _cache.Set(key, value);
+            }
+
+            return true;
+        }
+
+        public void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false)
+        {
+            if (!string.IsNullOrEmpty(Get(key)))
+            {
+                Remove(key);
+                Add(key, value, expireSeconds, isSliding);
+            }
+            else
+            {
+                Add(key, value, expireSeconds, isSliding);
+            }
+        }
+
+        public void Dispose()
+        {
+            if (_cache != null)
+                _cache.Dispose();
+            GC.SuppressFinalize(this);
+        }
+
+        public bool Exists(string key)
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            return _cache.Get(key) != null;
+        }
+
+        public T Get<T>(string key) where T : class
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            return _cache.Get(key) as T;
+        }
+
+        public string Get(string key)
+        
+        {
+            try
+            {
+                return _cache.Get(key)?.ToString();
+            }
+            catch
+            {
+                return string.Empty;
+            }
+        }
+
+        public bool Remove(string key)
+        {
+            if (key == null)
+            {
+                throw new ArgumentNullException(nameof(key));
+            }
+            _cache.Remove(key);
+
+            return !Exists(key);
+        }
+
+        public void Remove(IEnumerable<string> keys)
+        {
+            if (keys == null)
+            {
+                throw new ArgumentNullException(nameof(keys));
+            }
+
+            keys.ToList().ForEach(item => _cache.Remove(item));
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs
new file mode 100644
index 0000000..8760498
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/AppSecret.cs
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 绉橀挜閰嶇疆
+    /// </summary>
+    public struct AppSecret
+    {
+        public const string JWT = "BB3647441FFA4B5DB4E64A29B53CE525";
+
+        public const string Audience = "WIDESEA_WMS";
+
+        public const string Issuer = "WIDESEA_WMS_Owner";
+
+        public const string TokenHeaderName = "Authorization";
+
+        public const string User = "C5ABA9E202D94C43A3CA66002BF77FAF";
+
+        public const string DB = "3F8B7B38AD3D484A89ACA513CBD79F36";
+
+        //杩炴帴瀛楃涓�
+        //Data Source=.;Initial Catalog=WIDESEA_DB_2;User ID=sa;Password=P@ssw0rd;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs
new file mode 100644
index 0000000..841d5d2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/CacheConst.cs
@@ -0,0 +1,94 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 缂撳瓨鐩稿叧甯搁噺
+    /// </summary>
+    public class CacheConst
+    {
+        /// <summary>
+        /// 鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string KeyUser = "user:";
+
+        /// <summary>
+        /// 鐢ㄦ埛閮ㄩ棬缂撳瓨
+        /// </summary>
+        public const string KeyUserDepart = "userDepart:";
+
+        /// <summary>
+        /// 鑿滃崟缂撳瓨
+        /// </summary>
+        public const string KeyMenu = "menu:";
+
+        /// <summary>
+        /// 鑿滃崟
+        /// </summary>
+        public const string KeyPermissions = "permissions";
+
+        /// <summary>
+        /// 鏉冮檺缂撳瓨
+        /// </summary>
+        public const string KeyPermission = "permission:";
+
+        /// <summary>
+        /// 鎺ュ彛璺敱
+        /// </summary>
+        public const string KeyModules = "modules";
+
+        /// <summary>
+        /// 绯荤粺閰嶇疆
+        /// </summary>
+        public const string KeySystemConfig = "sysConfig";
+
+        /// <summary>
+        /// 鏌ヨ杩囨护鍣ㄧ紦瀛�
+        /// </summary>
+        public const string KeyQueryFilter = "queryFilter:";
+
+        /// <summary>
+        /// 鏈烘瀯Id闆嗗悎缂撳瓨
+        /// </summary>
+        public const string KeyOrgIdList = "org:";
+
+        /// <summary>
+        /// 鏈�澶ц鑹叉暟鎹寖鍥寸紦瀛�
+        /// </summary>
+        public const string KeyMaxDataScopeType = "maxDataScopeType:";
+
+        /// <summary>
+        /// 楠岃瘉鐮佺紦瀛�
+        /// </summary>
+        public const string KeyVerCode = "verCode:";
+
+        /// <summary>
+        /// 鎵�鏈夌紦瀛樺叧閿瓧闆嗗悎
+        /// </summary>
+        public const string KeyAll = "keys";
+
+        /// <summary>
+        /// 瀹氭椂浠诲姟缂撳瓨
+        /// </summary>
+        public const string KeyTimer = "timer:";
+
+        /// <summary>
+        /// 鍦ㄧ嚎鐢ㄦ埛缂撳瓨
+        /// </summary>
+        public const string KeyOnlineUser = "onlineuser:";
+
+        /// <summary>
+        /// 甯搁噺涓嬫媺妗�
+        /// </summary>
+        public const string KeyConstSelector = "selector:";
+
+        /// <summary>
+        /// swagger鐧诲綍缂撳瓨
+        /// </summary>
+        public const string SwaggerLogin = "swaggerLogin:";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs
new file mode 100644
index 0000000..345b0dd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ConfigConst.cs
@@ -0,0 +1,121 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    /// <summary>
+    /// 鍒嗙被甯搁噺
+    /// </summary>
+    public class CateGoryConst
+    {
+        /// <summary>
+        /// 閭鍩虹
+        /// </summary>
+        public const string CONFIG_SYS_BaseExmail = "Sys_BaseExmail";
+
+        /// <summary>
+        /// 閭閰嶇疆
+        /// </summary>
+        public const string CONFIG_SYS_RegExmail = "Sys_RegExmail";
+
+        /// <summary>
+        /// IP鎺ュ彛鍦板潃
+        /// </summary>
+        public const string CONFIG_SYS_IPAddress = "SYS_IPAddress";
+
+    }
+
+    /// <summary>
+    /// 閰嶇疆Key甯搁噺
+    /// </summary>
+    public class SysConfigConst
+    {
+        /// <summary>
+        ///  閭SMTP鍦板潃
+        /// </summary>
+        public const string SMTP_Server = "smtpServer";
+
+        /// <summary>
+        ///  閭SMTP绔彛
+        /// </summary>
+        public const string SMTP_Port = "smtpPort";
+
+        /// <summary>
+        ///  閭SMTP璐﹀彿
+        /// </summary>
+        public const string SMTP_User = "smtpUser";
+
+        /// <summary>
+        ///  閭SMTP瀵嗙爜
+        /// </summary>
+        public const string SMTP_Pass = "smtpPass";
+
+        /// <summary>
+        ///  閭鏍囬
+        /// </summary>
+        public const string SMTP_Title = "smtpTitle";
+
+        /// <summary>
+        ///  閭鍐呭鏍囬
+        /// </summary>
+        public const string SMTP_ContentTitle = "smtpContentTitle";
+
+        /// <summary>
+        ///  閭鍐呭鏍囬
+        /// </summary>
+        public const string SMTP_RegUser = "smtpRegUser";
+
+        /// <summary>
+        /// WCS IP
+        /// </summary>
+        public const string WCSIPAddress = "WCSIPAddress";
+
+        /// <summary>
+        /// 鎵撳嵃绋嬪簭IP
+        /// </summary>
+        public const string PrintIPAddress = "PrintIPAddress";
+
+        /// <summary>
+        /// ERP IP
+        /// </summary>
+        public const string ERPIPAddress = "ERPIPAddress";
+
+        /// <summary>
+        /// 璇锋眰WCS浠诲姟
+        /// </summary>
+        public const string ReceiveTask = "ReceiveTask";
+
+        /// <summary>
+        /// 浠诲姟瀹屾垚
+        /// </summary>
+        public const string CompleteTask = "CompleteTask";
+
+        /// <summary>
+        /// ERP璋冩嫧鍑哄簱
+        /// </summary>
+        public const string Allocate = "Allocate";
+
+        /// <summary>
+        /// 鏉傚彂
+        /// </summary>
+        public const string MixedSend = "MixedSend";
+
+        /// <summary>
+        /// 鐢熶骇棰嗘枡
+        /// </summary>
+        public const string MaterialRequisition = "MaterialRequisition";
+
+        /// <summary>
+        /// 鎵撳嵃璁㈠崟
+        /// </summary>
+        public const string PrintInboundOrder = "PrintInboundOrder";
+
+        /// <summary>
+        /// 鎵撳嵃鎵樼洏鏉$爜
+        /// </summary>
+        public const string PrintPalletCodes = "PrintPalletCodes";
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs
new file mode 100644
index 0000000..3456c44
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/ErrorMsgConst.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public class ErrorMsgConst
+    {
+        public const string ParamIsNull = "鍙傛暟鏃犳晥";
+        public const string EntityValueIsNull = "涓哄繀椤绘彁浜ら」";
+        public const string SugarColumnIsNull = "璇烽厤缃甋ugarColumn灞炴��";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs
new file mode 100644
index 0000000..735718d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/HtmlElementType.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct HtmlElementType
+    {
+        public const string drop = "drop";
+        public const string droplist = "droplist";
+        public const string select = "select";
+        public const string selectlist = "selectlist";
+        public const string checkbox = "checkbox";
+        public const string textarea = "textarea";
+        public const string thanorequal = "thanorequal";
+        public const string lessorequal = "lessorequal";
+
+
+        public const string gt = "gt";
+        public const string lt = "lt";
+        public const string GT = ">";
+        public const string LT = "<";
+        public const string like = "like";
+
+        public const string ThanOrEqual = ">=";
+        public const string LessOrequal = "<=";
+        public const string Contains = "in";
+        public const string Equal = "=";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs
new file mode 100644
index 0000000..b12f10d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/SqlDbTypeName.cs
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct SqlDbTypeName
+    {
+        public const string NVarChar = "nvarchar";
+        public const string VarChar = "varchar";
+        public const string NChar = "nchar";
+        public const string Char = "char";
+        public const string Text = "text";
+        public const string Int = "int";
+        public const string BigInt = "bigint";
+        public const string DateTime = "datetime";
+        public const string Date = "date";
+        public const string SmallDateTime = "smalldatetime";
+        public const string SmallDate = "smalldate";
+        public const string Float = "float";
+        public const string Decimal = "decimal";
+        public const string Double = "double";
+        public const string Bit = "bit";
+        public const string Bool = "bool";
+        public const string UniqueIdentifier = "uniqueidentifier";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs
new file mode 100644
index 0000000..eeeeae4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantConst.cs
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public class TenantConst
+    {
+        public const string DBConStr = "Data Source={0};Initial Catalog={1};User ID={2};Password={3};Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs
new file mode 100644
index 0000000..581b035
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Const/TenantStatus.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Const
+{
+    public struct TenantStatus
+    {
+        public const int Enable = 1;
+        public const int Disable = 2;
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs
new file mode 100644
index 0000000..a313a78
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/ConfigurableOptions.cs
@@ -0,0 +1,66 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public static class ConfigurableOptions
+    {
+        /// <summary>娣诲姞閫夐」閰嶇疆</summary>
+        /// <typeparam name="TOptions">閫夐」绫诲瀷</typeparam>
+        /// <param name="services">鏈嶅姟闆嗗悎</param>
+        /// <returns>鏈嶅姟闆嗗悎</returns>
+        public static IServiceCollection AddConfigurableOptions<TOptions>(this IServiceCollection services)
+            where TOptions : class, IConfigurableOptions
+        {
+            Type optionsType = typeof(TOptions);
+            string path = GetConfigurationPath(optionsType);
+            services.Configure<TOptions>(App.Configuration.GetSection(path));
+
+            return services;
+        }
+
+        public static IServiceCollection AddConfigurableOptions(this IServiceCollection services, Type type)
+        {
+            string path = GetConfigurationPath(type);
+            var config = App.Configuration.GetSection(path);
+
+            Type iOptionsChangeTokenSource = typeof(IOptionsChangeTokenSource<>);
+            Type iConfigureOptions = typeof(IConfigureOptions<>);
+            Type configurationChangeTokenSource = typeof(ConfigurationChangeTokenSource<>);
+            Type namedConfigureFromConfigurationOptions = typeof(NamedConfigureFromConfigurationOptions<>);
+            iOptionsChangeTokenSource = iOptionsChangeTokenSource.MakeGenericType(type);
+            iConfigureOptions = iConfigureOptions.MakeGenericType(type);
+            configurationChangeTokenSource = configurationChangeTokenSource.MakeGenericType(type);
+            namedConfigureFromConfigurationOptions = namedConfigureFromConfigurationOptions.MakeGenericType(type);
+
+            services.AddOptions();
+            services.AddSingleton(iOptionsChangeTokenSource,
+                Activator.CreateInstance(configurationChangeTokenSource, Options.DefaultName, config) ?? throw new InvalidOperationException());
+            return services.AddSingleton(iConfigureOptions,
+                Activator.CreateInstance(namedConfigureFromConfigurationOptions, Options.DefaultName, config) ?? throw new InvalidOperationException());
+        }
+
+        /// <summary>鑾峰彇閰嶇疆璺緞</summary>
+        /// <param name="optionsType">閫夐」绫诲瀷</param>
+        /// <returns></returns>
+        public static string GetConfigurationPath(Type optionsType)
+        {
+            var endPath = new[] { "Option", "Options" };
+            var configurationPath = optionsType.Name;
+            foreach (var s in endPath)
+            {
+                if (configurationPath.EndsWith(s))
+                {
+                    return configurationPath[..^s.Length];
+                }
+            }
+
+            return configurationPath;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs
new file mode 100644
index 0000000..a891834
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/IConfigurableOptions.cs
@@ -0,0 +1,12 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public interface IConfigurableOptions
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs
new file mode 100644
index 0000000..5dfff8e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Core/InternalApp.cs
@@ -0,0 +1,47 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Core
+{
+    public static class InternalApp
+    {
+        internal static IServiceCollection InternalServices;
+
+        /// <summary>鏍规湇鍔�</summary>
+        internal static IServiceProvider RootServices;
+
+        /// <summary>鑾峰彇Web涓绘満鐜</summary>
+        internal static IWebHostEnvironment WebHostEnvironment;
+
+        /// <summary>鑾峰彇娉涘瀷涓绘満鐜</summary>
+        internal static IHostEnvironment HostEnvironment;
+
+        /// <summary>閰嶇疆瀵硅薄</summary>
+        internal static IConfiguration Configuration;
+
+        public static void ConfigureApplication(this WebApplicationBuilder wab)
+        {
+            HostEnvironment = wab.Environment;
+            WebHostEnvironment = wab.Environment;
+            InternalServices = wab.Services;
+        }
+
+        public static void ConfigureApplication(this IConfiguration configuration)
+        {
+            Configuration = configuration;
+        }
+
+        public static void ConfigureApplication(this IHost app)
+        {
+            RootServices = app.Services;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs
new file mode 100644
index 0000000..ed0e254
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/BaseDBConfig.cs
@@ -0,0 +1,121 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.DB
+{
+    public class BaseDBConfig
+    {
+        /* 涔嬪墠鐨勫崟搴撴搷浣滃凡缁忓垹闄わ紝濡傛灉鎯宠涔嬪墠鐨勪唬鐮侊紝鍙互鏌ョ湅鎴戠殑GitHub鐨勫巻鍙茶褰�
+         * 鐩墠鏄搴撴搷浣滐紝榛樿鍔犺浇鐨勬槸appsettings.json璁剧疆涓簍rue鐨勭涓�涓猟b杩炴帴銆�
+         */
+        public static List<MutiDBOperate> MutiConnectionString => MutiInitConn();
+
+        private static string DifDBConnOfSecurity(params string[] conn)
+        {
+            foreach (var item in conn)
+            {
+                try
+                {
+                    if (File.Exists(item))
+                    {
+                        return File.ReadAllText(item).Trim();
+                    }
+                }
+                catch (System.Exception)
+                {
+                }
+            }
+
+            return conn[conn.Length - 1];
+        }
+
+        public static List<MutiDBOperate> MutiInitConn()
+        {
+            SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
+            {
+                ConfigId = MainDb.CurrentDbConnId,
+                ConnectionString = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                IsAutoCloseConnection = true,
+                DbType = MainDb.DbType,
+                AopEvents = new AopEvents
+                {
+                    OnError = x =>
+                    {
+                        Console.WriteLine(x.Sql);
+                    }
+                }
+            });
+
+            List<ExpandoObject> list = sqlSugarClient.Queryable(MainDb.TenantTableName, "x").Where(MainDb.TenantStatus, "=", TenantStatus.Enable).Select(TenantUtil.GetTenantSelectModels()).ToList();
+            List<MutiDBOperate> listdatabaseSlaveDB = new List<MutiDBOperate>();
+            MutiDBOperate mainDb = new MutiDBOperate()
+            {
+                Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                ConnId = MainDb.CurrentDbConnId,
+                DbType = DataBaseType.SqlServer
+            };
+            listdatabaseSlaveDB.Add(mainDb);
+            for (int i = 0; i < list.Count; i++)
+            {
+                dynamic data = list[i];
+                MutiDBOperate mutiDBOperate = new MutiDBOperate()
+                {
+                    Connection = data.ConnectionString,
+                    ConnId = data.TenantId + "",
+                    DbType = (DataBaseType)data.DbType,
+                };
+                mutiDBOperate.Connection = mutiDBOperate.Connection.DecryptDES(AppSecret.DB);
+                listdatabaseSlaveDB.Add(mutiDBOperate);
+            }
+
+            return listdatabaseSlaveDB;
+        }
+    }
+
+    public enum DataBaseType
+    {
+        MySql = 0,
+        SqlServer = 1,
+        Sqlite = 2,
+        Oracle = 3,
+        PostgreSQL = 4,
+        Dm = 5,
+        Kdbndp = 6,
+    }
+
+    public class MutiDBOperate
+    {
+        /// <summary>
+        /// 杩炴帴鍚敤寮�鍏�
+        /// </summary>
+        public bool Enabled { get; set; }
+
+        /// <summary>
+        /// 杩炴帴ID
+        /// </summary>
+        public string ConnId { get; set; }
+
+        /// <summary>
+        /// 浠庡簱鎵ц绾у埆锛岃秺澶ц秺鍏堟墽琛�
+        /// </summary>
+        public int HitRate { get; set; }
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        public string Connection { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        public DataBaseType DbType { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs
new file mode 100644
index 0000000..2909548
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/MainDb.cs
@@ -0,0 +1,30 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB
+{
+    public static class MainDb
+    {
+        public const string CurrentDbConnId = "WIDESEA";
+        public const string ConnectionString = "ConnectionString";
+        public const string ConnectionStringWCS = "ConnectionStringWCS";
+        public const string Connection = "Connection";
+        public const string TenantTableName = "Sys_Tenant";
+        public const string TenantStatus = "Status";
+        public const string TenantId = "TenantId";
+        public const string TenantName = "TenantName";
+        public const string EntityNameSpace = "WIDESEA_Model.Models";
+        public const string TenantDbType = "DbType";
+        public const string AssemblyName = "WIDESEA_Model.dll";
+        public static DbType DbType = DbType.SqlServer;
+        public const string UserTableName = "Sys_User";
+        public const string RoleId = "Role_Id";
+        public const string SystemType = "SystemType";
+        public const string UserName = "UserName";
+        public const string UserId = "User_Id";
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs
new file mode 100644
index 0000000..0ca7303
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/BaseEntity.cs
@@ -0,0 +1,80 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB.Models
+{
+    public class BaseEntity
+    {
+        #region 鏁版嵁鐘舵�佺鐞�
+
+        /// <summary>
+        /// 鐘舵�� <br/>
+        /// 涓珛瀛楁锛屾煇浜涜〃鍙娇鐢ㄦ煇浜涜〃涓嶄娇鐢�
+        /// </summary>
+        //public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 涓珛瀛楁锛屾煇浜涜〃鍙娇鐢ㄦ煇浜涜〃涓嶄娇鐢�   <br/>
+        /// 閫昏緫涓婄殑鍒犻櫎锛岄潪鐗╃悊鍒犻櫎  <br/>
+        /// 渚嬪锛氬崟鎹垹闄ゅ苟闈炵洿鎺ュ垹闄�
+        /// </summary>
+        //public bool IsDeleted { get; set; }
+
+        /// <summary>
+        /// 涓珛瀛楁 <br/>
+        /// 鏄惁鍐呯疆鏁版嵁
+        /// </summary>
+        //public bool IsInternal { get; set; }
+
+        #endregion 鏁版嵁鐘舵�佺鐞�
+
+        #region 鍒涘缓
+        /// <summary>
+        /// 鍒涘缓鑰�
+        /// </summary>
+        [ImporterHeader(Name = "鍒涘缓鑰�")]
+        [ExporterHeader(DisplayName = "鍒涘缓鑰�")]
+        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "鍒涘缓鑰�")]
+        public string Creater { get; set; } = "System";
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "鍒涘缓鏃堕棿")]
+        [ExporterHeader(DisplayName = "鍒涘缓鏃堕棿")]
+        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "鍒涘缓鏃堕棿")]
+        public DateTime CreateDate { get; set; } = DateTime.Now;
+
+        #endregion
+
+        #region 淇敼
+        /// <summary>
+        /// 鏇存柊鑰�
+        /// </summary>
+        [ImporterHeader(Name = "淇敼浜�")]
+        [ExporterHeader(DisplayName = "淇敼浜�")]
+        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "淇敼浜�")]
+        public string Modifier { get; set; }
+
+        /// <summary>
+        /// 淇敼鏃ユ湡
+        /// </summary>
+        [ImporterHeader(Name = "淇敼鏃ユ湡")]
+        [ExporterHeader(DisplayName = "淇敼鏃ユ湡")]
+        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "淇敼鏃ユ湡")]
+        public DateTime? ModifyDate { get; set; } = DateTime.Now;
+
+        /// <summary>
+        /// 鏁版嵁鐗堟湰
+        /// </summary>
+        //[SugarColumn(DefaultValue = "0", IsEnableUpdateVersionValidation = true)] //鏍囪瘑鐗堟湰瀛楁
+        //public long Version { get; set; }
+
+        #endregion 淇敼
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs
new file mode 100644
index 0000000..a5b560f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/Models/IBaseHistoryEntity.cs
@@ -0,0 +1,37 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.DB.Models
+{
+    public interface IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs
new file mode 100644
index 0000000..67c4968
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/DB/RepositorySetting.cs
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.DB
+{
+    public class RepositorySetting
+    {
+        private static readonly Lazy<IEnumerable<Type>> AllEntitys = new(() =>
+        {
+            var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
+            var referencedAssemblies = System.IO.Directory.GetFiles(path, MainDb.AssemblyName).Select(Assembly.LoadFrom).FirstOrDefault();
+            return referencedAssemblies
+                .GetTypes()
+                .Where(t => t.IsClass && !t.IsAbstract && t.IsSubclassOf(typeof(BaseEntity)))
+                .Where(it => it.FullName != null && it.FullName.StartsWith(MainDb.EntityNameSpace));
+        });
+
+        public static IEnumerable<Type> Entitys => AllEntitys.Value;
+
+        /// <summary>
+        /// 閰嶇疆瀹炰綋杞垹闄よ繃婊ゅ櫒<br/>
+        /// 缁熶竴杩囨护 杞垹闄� 鏃犻渶鑷繁鍐欐潯浠�
+        /// </summary>
+        public static void SetDeletedEntityFilter(SqlSugarScopeProvider db)
+        {
+            //db.QueryFilter.AddTableFilter<IDeleteFilter>(it => it.IsDeleted == false);
+        }
+
+        /// <summary>
+        /// 閰嶇疆绉熸埛
+        /// </summary>
+        public static void SetTenantEntityFilter(SqlSugarScopeProvider db)
+        {
+            if (App.User is not { UserId: > 0, TenantId: > 0 })
+            {
+                return;
+            }
+
+            //澶氱鎴� 鍗曡〃
+            //db.QueryFilter.AddTableFilter<ITenantEntity>(it => it.TenantId == App.User.TenantId || it.TenantId == 0);
+
+            //澶氱鎴� 澶氳〃
+            //db.SetTenantTable(App.User.TenantId.ToString());
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs
new file mode 100644
index 0000000..97b33e5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/EnumHelper.cs
@@ -0,0 +1,142 @@
+锘縰sing System.ComponentModel;
+using System.Reflection;
+
+namespace WIDESEA_Core.Enums
+{
+    public static class EnumHelper
+    {
+        /// <summary>  
+        /// 鏋氫妇杞瓧鍏搁泦鍚�  
+        /// </summary>  
+        /// <typeparam name="T">鏋氫妇绫诲悕绉�</typeparam>  
+        /// <param name="keyDefault">榛樿key鍊�</param>  
+        /// <param name="valueDefault">榛樿value鍊�</param>  
+        /// <returns>杩斿洖鐢熸垚鐨勫瓧鍏搁泦鍚�</returns>  
+        public static Dictionary<string, object> EnumListDic<T>(string keyDefault, string valueDefault = "")
+        {
+            Dictionary<string, object> dicEnum = new Dictionary<string, object>();
+            Type enumType = typeof(T);
+            if (!enumType.IsEnum)
+            {
+                return dicEnum;
+            }
+            if (!string.IsNullOrEmpty(keyDefault)) //鍒ゆ柇鏄惁娣诲姞榛樿閫夐」  
+            {
+                dicEnum.Add(keyDefault, valueDefault);
+            }
+            string[] fieldstrs = Enum.GetNames(enumType); //鑾峰彇鏋氫妇瀛楁鏁扮粍  
+            foreach (var item in fieldstrs)
+            {
+                string description = string.Empty;
+                var field = enumType.GetField(item);
+                object[] arr = field.GetCustomAttributes(typeof(DescriptionAttribute), true); //鑾峰彇灞炴�у瓧娈垫暟缁�  
+                if (arr != null && arr.Length > 0)
+                {
+                    description = ((DescriptionAttribute)arr[0]).Description;   //灞炴�ф弿杩�  
+                }
+                else
+                {
+                    description = item;  //鎻忚堪涓嶅瓨鍦ㄥ彇瀛楁鍚嶇О  
+                }
+                dicEnum.Add(description, (int)Enum.Parse(enumType, item));  //涓嶇敤鏋氫妇鐨剉alue鍊间綔涓哄瓧鍏竗ey鍊肩殑鍘熷洜浠庢灇涓句緥瀛愯兘鐪嬪嚭鏉ワ紝鍏跺疄杩欒竟搴旇鍒ゆ柇浠栫殑鍊间笉瀛樺湪锛岄粯璁ゅ彇瀛楁鍚嶇О  
+            }
+            return dicEnum;
+        }
+        /// <summary>
+        /// 鑾峰彇鏋氫妇椤规弿杩颁俊鎭� 渚嬪GetEnumDesc(Days.Sunday)
+        /// </summary>
+        /// <param name="en">鏋氫妇椤� 濡侱ays.Sunday</param>
+        /// <returns></returns>
+        public static string GetIntegralRuleTypeEnumDesc(this Enum en)
+        {
+            Type type = en.GetType();
+            MemberInfo[] memInfo = type.GetMember(en.ToString());
+            if (memInfo != null && memInfo.Length > 0)
+            {
+                object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
+                if (attrs != null && attrs.Length > 0)
+                    return ((DescriptionAttribute)attrs[0]).Description;
+            }
+            return en.ToString();
+        }
+        public static string GetDescriptionFromEnums(int? value, params Type[] enumTypes)
+        {
+            if (!value.HasValue) return string.Empty;
+
+            foreach (var enumType in enumTypes)
+            {
+                if (Enum.IsDefined(enumType, value.Value))
+                {
+                    var enumValue = Enum.ToObject(enumType, value.Value);
+                    return GetDescription(enumValue);
+                }
+            }
+
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏋氫妇鎻忚堪
+        /// </summary>
+        public static string GetDescription(object value)
+        {
+            if (value == null) return string.Empty;
+
+            var field = value.GetType().GetField(value.ToString());
+            if (field == null) return value.ToString();
+
+            var descriptionAttribute = field.GetCustomAttributes(typeof(DescriptionAttribute), false)
+                                          .FirstOrDefault() as DescriptionAttribute;
+
+            return descriptionAttribute?.Description ?? value.ToString();
+        }
+        /// <summary>
+        /// 鑾峰彇鏋氫妇闆嗗悎
+        /// </summary>
+        /// <typeparam name="T">鏋氫妇绫诲悕绉�</typeparam>
+        /// <returns></returns>
+        public static IEnumerable<EnumModel> GetEnumList<T>()
+        {
+            var model = default(T);
+            FieldInfo[] fieldinfo = typeof(T).GetFields();
+            List<EnumModel> result = new List<EnumModel>();
+            foreach (FieldInfo field in fieldinfo)
+            {
+                EnumModel enumModel = new EnumModel();
+                if (!(Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) is DescriptionAttribute attribute))
+                {
+                    enumModel.Desc = field.GetValue(model).ToString();
+                }
+                else
+                {
+                    enumModel.Desc = attribute.Description;
+                }
+                enumModel.Value = field.GetValue(model).GetHashCode();
+                enumModel.Key = field.GetValue(model) as ValueType;
+                if (field.GetValue(model).ToString() != "0")
+                {
+                    result.Add(enumModel);
+                }
+
+            }
+            return result;
+        }
+    }
+
+    public class EnumModel
+    {
+        /// <summary>
+        /// Enum鐨勫��
+        /// </summary>
+        public int Value { get; set; }
+        /// <summary>
+        /// Enum鐨刱ey
+        /// </summary>
+        public ValueType Key { get; set; }
+        /// <summary>
+        /// Enum鎻忚堪
+        /// </summary>
+        public string Desc { get; set; }
+    }
+
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs
new file mode 100644
index 0000000..cd90b5a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/LinqExpressionType.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+    public enum LinqExpressionType
+    {
+        Equal = 0,//=
+        NotEqual = 1,//!=
+        GreaterThan,//>
+        LessThan,//<
+        ThanOrEqual,//>=
+        LessThanOrEqual,//<=
+        In,
+        Contains,//Contains
+        NotContains//NotContains
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs
new file mode 100644
index 0000000..bc336e9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/ManageEnum.cs
@@ -0,0 +1,739 @@
+锘縰sing System.ComponentModel;
+
+namespace WIDESEA_Core.Enums
+{
+    #region 璐т綅鐘舵�佷俊鎭�
+    /// <summary>
+    /// 鍚鐘舵��
+    /// </summary>
+    public enum EnableEnum
+    {
+        /// <summary>
+        /// 绂佺敤
+        /// </summary>
+        [Description("绂佺敤")]
+        Disable = 0,
+
+        /// <summary>
+        /// 鍚敤
+        /// </summary>
+        [Description("鍚敤")]
+        Enable = 1,
+    }
+
+    /// <summary>
+    /// 璐т綅鐘舵��
+    /// </summary>
+    public enum LocationEnum
+    {
+        /// <summary>
+        /// 绌洪棽
+        /// </summary>
+        [Description("绌洪棽")]
+        Free = 0,
+
+        /// <summary>
+        /// 閿佸畾
+        /// </summary>
+        [Description("閿佸畾")]
+        Lock = 1,
+
+        /// <summary>
+        /// 鏈夎揣
+        /// </summary>
+        [Description("鏈夎揣")]
+        InStock = 2,
+
+        /// <summary>
+        /// 鏈夎揣绂佺敤
+        /// </summary>
+        [Description("鏈夎揣绂佺敤")]
+        InStockDisable = 3,
+
+        /// <summary>
+        /// 鏃犺揣绂佺敤
+        /// </summary>
+        [Description("鏃犺揣绂佺敤")]
+        FreeDisable = 4,
+    }
+
+    public enum LocationState
+    {
+        /// <summary>
+        /// 鍏佽
+        /// </summary>
+        [Description("鍏佽")]
+        Allow = 1,
+
+        /// <summary>
+        /// 涓嶅厑璁�
+        /// </summary>
+        [Description("涓嶅厑璁�")]
+        NotAllow = 2
+    }
+
+    public enum LocationType
+    {
+        /// <summary>
+        /// 鍗曟繁璐т綅
+        /// </summary>
+        [Description("鍗曟繁璐т綅")]
+        Single = 1,
+
+        /// <summary>
+        /// 鍙屾繁璐т綅
+        /// </summary>
+        [Description("鍙屾繁璐т綅")]
+        Double = 2
+    }
+    #endregion 
+
+    #region 浠诲姟绫诲瀷
+
+    /// <summary>
+    /// 浠诲姟绫诲瀷
+    /// </summary>
+
+    public enum TaskInboundTypeEnum
+    {
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍏ュ簱")]
+        Inbound = 200,
+
+        /// <summary>
+        /// 鍏朵粬鍏ュ簱
+        /// </summary>
+        [Description("鍏朵粬鍏ュ簱")]
+        InOther = 205,
+    }
+
+    public enum TaskOutboundTypeEnum
+    {
+        /// <summary>
+        /// 鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        Outbound = 100,
+
+        /// <summary>
+        /// 璋冩嫧鍑哄簱
+        /// </summary>
+        [Description("璋冩嫧鍑哄簱")]
+        OutAllocate = 105,
+
+        /// <summary>
+        /// 鍏朵粬鍑哄簱
+        /// </summary>
+        [Description("鍏朵粬鍑哄簱")]
+        OutOther = 110,
+
+        /// <summary>
+        /// 鐢熶骇棰嗘枡鍑哄簱
+        /// </summary>
+        [Description("鐢熶骇棰嗘枡鍑哄簱")]
+        MaterialRequisition = 115,
+
+        /// <summary>
+        /// 鍘熸潗鏂欏嚭搴�
+        /// </summary>
+        [Description("鍘熸潗鏂欏嚭搴�")]
+        RawMaterials = 120,
+    }
+
+    public enum TaskRelocationTypeEnum
+    {
+        /// <summary>
+        /// 搴撳唴绉诲簱
+        /// </summary>
+        [Description("搴撳唴绉诲簱")]
+        Relocation = 300,
+
+        /// <summary>
+        /// 搴撳绉诲簱
+        /// </summary>
+        [Description("搴撳绉诲簱")]
+        RelocationIn = 301
+    }
+
+    public enum TaskOtherTypeEnum
+    {
+    }
+    public enum TaskAGVCarryTypeEnum
+    {
+        /// <summary>
+        /// AGV鎼繍
+        /// </summary>
+        [Description("AGV鎼繍")]
+        Carry = 400,
+
+        /// <summary>
+        /// AGV绉诲簱鎼繍
+        /// </summary>
+        [Description("AGV绉诲簱鎼繍")]
+        CarryReloction = 410
+    }
+    public enum TaskAcrossFloorTypeEnum
+    {
+        /// <summary>
+        /// 璺ㄦゼ灞傛惉杩�
+        /// </summary>
+        [Description("璺ㄦゼ灞傛惉杩�")]
+        AcrossFloorCarry = 500
+    }
+    public enum TaskTypeEnum
+    {
+        /// <summary>
+        /// 鍑哄簱 =100
+        /// </summary>
+        [Description("鍑哄簱")]
+        Outbound = 100,
+
+        /// <summary>
+        /// 鐩樼偣鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        OutInventory = 101,
+
+        /// <summary>
+        /// 鍒嗘嫞鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        OutPick = 102,
+
+        /// <summary>
+        /// 璐ㄦ鍑哄簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        OutQuality = 103,
+
+        /// <summary>
+        /// 鍏ュ簱
+        /// </summary>
+        [Description("鍑哄簱")]
+        Inbound = 200,
+
+        /// <summary>
+        /// 鐩樼偣鍏ュ簱
+        /// </summary>
+        InInventory = 201,
+
+        /// <summary>
+        /// 鍒嗘嫞鍏ュ簱
+        /// </summary>
+        InPick = 202,
+
+        /// <summary>
+        /// 璐ㄦ鍏ュ簱
+        /// </summary>
+        InQuality = 203,
+
+        /// <summary>
+        /// 绉诲簱
+        /// </summary>
+        Relocation = 300,
+
+        /// <summary>
+        /// 搴撳唴绉诲簱
+        /// </summary>
+        RelocationIn = 301,
+
+        /// <summary>
+        /// 搴撳绉诲簱
+        /// </summary>
+        RelocationOut = 302,
+    }
+
+    #endregion 浠诲姟绫诲瀷
+
+    #region 鍏ュ簱鐘舵��
+    public enum TaskInStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓鍏ュ簱浠诲姟
+        /// </summary>
+        [Description("鏂板缓鍏ュ簱浠诲姟")]
+        InNew = 200,
+
+        /// <summary>
+        /// AGV鍏ュ簱鎵ц涓�
+        /// </summary>
+        [Description("AGV鍏ュ簱鎵ц涓�")]
+        AGV_InExecuting = 210,
+
+        /// <summary>
+        /// AGV鍏ュ簱瀹屾垚
+        /// </summary>
+        [Description("AGV鎼繍瀹屾垚")]
+        AGV_InFinish = 215,
+
+        /// <summary>
+        /// 杈撻�佺嚎鍏ュ簱鎵ц涓�
+        /// </summary>
+        [Description("杈撻�佺嚎鍏ュ簱鎵ц涓�")]
+        Line_InExecuting = 220,
+
+        /// <summary>
+        /// 杈撻�佺嚎鍏ュ簱瀹屾垚
+        /// </summary>
+        [Description("杈撻�佺嚎鍏ュ簱瀹屾垚")]
+        Line_InFinish = 225,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄叆搴撴墽琛屼腑
+        /// </summary>
+        [Description("鍫嗗灈鏈哄叆搴撴墽琛屼腑")]
+        SC_InExecuting = 230,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄叆搴撳畬鎴�
+        /// </summary>
+        [Description("鍫嗗灈鏈哄叆搴撳畬鎴�")]
+        SC_InFinish = 235,
+
+        /// <summary>
+        /// 鍏ュ簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("鍏ュ簱浠诲姟瀹屾垚")]
+        InFinish = 290,
+
+        /// <summary>
+        /// 鍏ュ簱浠诲姟鎸傝捣
+        /// </summary>
+        [Description("鍏ュ簱浠诲姟鎸傝捣")]
+        InPending = 297,
+
+        /// <summary>
+        /// 鍏ュ簱浠诲姟鍙栨秷
+        /// </summary>
+        [Description("鍏ュ簱浠诲姟鍙栨秷")]
+        InCancel = 298,
+
+        /// <summary>
+        /// 鍏ュ簱浠诲姟寮傚父
+        /// </summary>
+        [Description("鍏ュ簱浠诲姟寮傚父")]
+        InException = 299,
+    }
+
+    #endregion
+
+    #region 鍑哄簱鐘舵��
+    public enum TaskOutStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓鍑哄簱浠诲姟
+        /// </summary>
+        [Description("鏂板缓鍑哄簱浠诲姟")]
+        OutNew = 100,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄嚭搴撴墽琛屼腑
+        /// </summary>
+        [Description("鍫嗗灈鏈哄嚭搴撴墽琛屼腑")]
+        SC_OutExecuting = 110,
+
+        /// <summary>
+        /// 鍫嗗灈鏈哄嚭搴撳畬鎴�
+        /// </summary>
+        [Description("鍫嗗灈鏈哄嚭搴撳畬鎴�")]
+        SC_OutFinish = 115,
+
+        /// <summary>
+        /// 杈撻�佺嚎鍑哄簱鎵ц涓�
+        /// </summary>
+        [Description("杈撻�佺嚎鍑哄簱鎵ц涓�")]
+        Line_OutExecuting = 120,
+
+        /// <summary>
+        /// 杈撻�佺嚎鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("杈撻�佺嚎鍑哄簱瀹屾垚")]
+        Line_OutFinish = 125,
+
+
+        /// <summary>
+        /// AGV鍑哄簱鎵ц涓�
+        /// </summary>
+        [Description("AGV鍑哄簱鎵ц涓�")]
+        AGV_OutExecuting = 130,
+
+        /// <summary>
+        /// AGV鍑哄簱瀹屾垚
+        /// </summary>
+        [Description("AGV鎼繍瀹屾垚")]
+        AGV_OutFinish = 135,
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("鍑哄簱浠诲姟瀹屾垚")]
+        OutFinish = 190,
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟鎸傝捣
+        /// </summary>
+        [Description("鍑哄簱浠诲姟鎸傝捣")]
+        OutPending = 197,
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟鍙栨秷
+        /// </summary>
+        [Description("鍑哄簱浠诲姟鍙栨秷")]
+        OutCancel = 198,
+
+        /// <summary>
+        /// 鍑哄簱浠诲姟寮傚父
+        /// </summary>
+        [Description("鍑哄簱浠诲姟寮傚父")]
+        OutException = 199,
+    }
+
+    #endregion
+
+    #region 鍏朵粬鐘舵��
+    public enum TaskOtherStateEnum
+    {
+
+    }
+
+    #endregion
+
+    #region 绉诲簱鐘舵��
+    public enum TaskRelocationStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓绉诲簱浠诲姟
+        /// </summary>
+        [Description("鏂板缓绉诲簱浠诲姟")]
+        RelocationNew = 300,
+
+        /// <summary>
+        /// 鍫嗗灈鏈虹Щ搴撴墽琛屼腑
+        /// </summary>
+        [Description("鍫嗗灈鏈虹Щ搴撴墽琛屼腑")]
+        SC_RelocationExecuting = 310,
+
+        /// <summary>
+        /// 鍫嗗灈鏈虹Щ搴撳畬鎴�
+        /// </summary>
+        [Description("鍫嗗灈鏈虹Щ搴撳畬鎴�")]
+        SC_RelocationFinish = 315,
+
+        /// <summary>
+        /// 鏂板缓AGV绉诲簱浠诲姟
+        /// </summary>
+        [Description("鏂板缓AGV绉诲簱浠诲姟")]
+        RelocationNewAGV = 320,
+
+        /// <summary>
+        /// AGV绉诲簱鎵ц涓�
+        /// </summary>
+        [Description("AGV绉诲簱鎵ц涓�")]
+        AGV_RelocationExecuting = 325,
+
+        /// <summary>
+        /// AGV绉诲簱瀹屾垚
+        /// </summary>
+        [Description("AGV绉诲簱瀹屾垚")]
+        AGV_RelocationFinish = 330,
+
+        /// <summary>
+        /// 绉诲簱浠诲姟瀹屾垚
+        /// </summary>
+        [Description("绉诲簱浠诲姟瀹屾垚")]
+        RelocationFinish = 390,
+
+        /// <summary>
+        /// 绉诲簱浠诲姟鎸傝捣
+        /// </summary>
+        [Description("绉诲簱浠诲姟鎸傝捣")]
+        RelocationPending = 397,
+
+        /// <summary>
+        /// 绉诲簱浠诲姟鍙栨秷
+        /// </summary>
+        [Description("绉诲簱浠诲姟鍙栨秷")]
+        RelocationCancel = 398,
+
+        /// <summary>
+        /// 绉诲簱浠诲姟寮傚父
+        /// </summary>
+        [Description("绉诲簱浠诲姟寮傚父")]
+        RelocationException = 399,
+    }
+
+    #endregion
+
+    #region AGV鎼繍鐘舵��
+    public enum TaskAGVCarryStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓AGV鎼繍浠诲姟
+        /// </summary>
+        [Description("鏂板缓AGV鎼繍浠诲姟")]
+        CarryNew = 400,
+
+        /// <summary>
+        /// AGV鎼繍鎵ц涓�
+        /// </summary>
+        [Description("AGV鎼繍鎵ц涓�")]
+        AGV_CarryExecuting = 410,
+
+        /// <summary>
+        /// AGV鎼繍瀹屾垚
+        /// </summary>
+        [Description("AGV鎼繍瀹屾垚")]
+        AGV_CarryFinish = 415,
+
+        /// <summary>
+        /// AGV鎼繍浠诲姟瀹屾垚
+        /// </summary>
+        [Description("AGV鎼繍浠诲姟瀹屾垚")]
+        CarryFinish = 490,
+
+        /// <summary>
+        /// AGV鎼繍浠诲姟鎸傝捣
+        /// </summary>
+        [Description("AGV鎼繍浠诲姟鎸傝捣")]
+        CarryPending = 497,
+
+        /// <summary>
+        /// AGV鎼繍浠诲姟鍙栨秷
+        /// </summary>
+        [Description("AGV鎼繍浠诲姟鍙栨秷")]
+        CarryCancel = 498,
+
+        /// <summary>
+        /// AGV鎼繍浠诲姟寮傚父
+        /// </summary>
+        [Description("AGV鎼繍浠诲姟寮傚父")]
+        CarryException = 499,
+    }
+
+    #endregion
+
+    #region 璺ㄦゼ灞傛惉杩愮姸鎬�
+    public enum TaskAcrossFloorStatusEnum
+    {
+        /// <summary>
+        /// 鏂板缓璺ㄦゼ灞備换鍔�
+        /// </summary>
+        [Description("鏂板缓璺ㄦゼ灞備换鍔�")]
+        CarryNew = 500,
+
+        /// <summary>
+        /// 璺ㄦゼ灞傛惉杩�1
+        /// </summary>
+        [Description("璺ㄦゼ灞傛惉杩�1")]
+        FirstCarry = 510,
+
+        /// <summary>
+        /// 涓�妤兼惉杩愬畬鎴�
+        /// </summary>
+        [Description("璺ㄦゼ灞傛惉杩�1瀹屾垚")]
+        FirstCarryFinish = 515,
+
+        /// <summary>
+        /// 璺ㄦゼ灞傛惉杩�2
+        /// </summary>
+        [Description("璺ㄦゼ灞傛惉杩�2")]
+        SecondCarry = 520,
+
+        /// <summary>
+        /// 璺ㄦゼ灞傜粓鐐规墽琛�
+        /// </summary>
+        [Description("璺ㄦゼ灞傜粓鐐规墽琛�")]
+        EndAddressExecuting = 525,
+
+        /// <summary>
+        /// 璺ㄦゼ灞傛惉杩�2瀹屾垚
+        /// </summary>
+        [Description("璺ㄦゼ灞傛惉杩�2瀹屾垚")]
+        SecondCarryFinish = 530,
+
+        /// <summary>
+        /// 璺ㄦゼ灞備换鍔″畬鎴�
+        /// </summary>
+        [Description("璺ㄦゼ灞備换鍔″畬鎴�")]
+        CarryFinish = 590,
+
+        /// <summary>
+        /// 璺ㄦゼ灞備换鍔℃寕璧�
+        /// </summary>
+        [Description("璺ㄦゼ灞備换鍔℃寕璧�")]
+        CarryPending = 597,
+
+        /// <summary>
+        /// 璺ㄦゼ灞備换鍔″彇娑�
+        /// </summary>
+        [Description("璺ㄦゼ灞備换鍔″彇娑�")]
+        CarryCancel = 598,
+
+        /// <summary>
+        /// AGV鎼繍浠诲姟寮傚父
+        /// </summary>
+        [Description("AGV鎼繍浠诲姟寮傚父")]
+        CarryException = 599,
+    }
+
+    #endregion
+
+    #region 鍘熷鍗曟嵁鍚屾鐘舵��
+
+    /// <summary>
+    /// 鍚屾鏍囧織 0:鏈悓姝� 1锛氬悓姝ユ垚鍔�  2锛氬悓姝ュけ璐�
+    /// </summary>
+    public enum SynchronizationFlagEmun
+    {
+        鏈悓姝� = 0,
+        鍚屾鎴愬姛 = 1,
+        鍚屾澶辫触 = 2
+    }
+
+    #endregion 鍘熷鍗曟嵁鍚屾鐘舵��
+
+    #region 鍗曟嵁鐘舵��
+
+    /// <summary>
+    /// 鍏ュ簱鍗曟嵁鐘舵�� 0锛屾湭寮�濮�  1锛屽凡瀹屾垚
+    /// </summary>
+    public enum OrderStateEmun
+    {
+        [Description("鏈紑濮�")]
+        鏈紑濮� = 0,
+
+        [Description("寮�濮�")]
+        寮�濮� = 1,
+
+        [Description("宸插畬鎴�")]
+        宸插畬鎴� = 2,
+    }
+
+    #endregion 鍗曟嵁鐘舵��
+
+    #region 鍗曟嵁绫诲瀷
+
+    public enum OrderTypeEmun
+    {
+        [Description("鐩樼偣鍑哄簱鍗�")]
+        鐩樼偣鍑哄簱鍗� = 100,
+
+        [Description("璋冩嫧鍑哄簱鍗�")]
+        璋冩嫧鍑哄簱鍗� = 105,
+
+        [Description("鍏朵粬鍑哄簱鍗�")]
+        鍏朵粬鍑哄簱鍗� = 110,
+
+        [Description("鐢熶骇棰嗘枡鍗�")]
+        鐢熶骇棰嗘枡鍗� = 115,
+
+        [Description("鍘熸潗鏂欓鏂欏崟")]
+        鍘熸潗鏂欓鏂欏崟 = 120,
+    }
+
+    #endregion 鍗曟嵁绫诲瀷
+
+    #region 鍗曟嵁绫诲瀷
+
+    public enum OrderCreateTypeEmun
+    {
+        [Description("鎵嬪姩鍒涘缓")]
+        鎵嬪姩鍒涘缓 = 0,
+
+        [Description("ERP鎺ㄩ��")]
+        ERP鎺ㄩ�� = 1,
+    }
+
+    #endregion 鍗曟嵁绫诲瀷
+
+    #region 缁勭洏绫诲瀷
+
+    /// <summary>
+    /// 缁勭洏绫诲瀷  1锛氫竴娆$粍鐩�  2锛氬娆$粍鐩�
+    /// </summary>
+    public enum GroupTypeEmun
+    {
+        涓�娆$粍鐩� = 1,
+        澶氭缁勭洏 = 2
+    }
+
+    #endregion 缁勭洏绫诲瀷
+
+    #region 搴撳瓨鐘舵��
+
+    /// <summary>
+    /// 搴撳瓨鐘舵�侊細 1锛岀粍鐩樻殏瀛�  2锛岀粍鐩樻挙閿�  3锛屽叆搴撶‘璁� 4锛屽叆搴撴挙閿�   5锛屽凡鍏ュ簱  6锛屽凡鍑哄簱
+    /// </summary>
+    public enum StockStateEmun
+    {
+        [Description("缁勭洏鏆傚瓨")]
+        缁勭洏鏆傚瓨 = 1,
+
+        [Description("缁勭洏鎾ら攢")]
+        缁勭洏鎾ら攢 = 2,
+
+        [Description("鍏ュ簱纭")]
+        鍏ュ簱纭 = 3,
+
+        [Description("鍏ュ簱鎾ら攢")]
+        鍏ュ簱鎾ら攢 = 4,
+
+        [Description("宸插叆搴�")]
+        宸插叆搴� = 5,
+
+        [Description("鍏ュ簱瀹屾垚")]
+        鍏ュ簱瀹屾垚 = 6,
+
+        [Description("鍑哄簱閿佸畾")]
+        鍑哄簱閿佸畾 = 7,
+
+        [Description("鍑哄簱瀹屾垚")]
+        鍑哄簱瀹屾垚 = 8,
+
+    }
+
+    #endregion 搴撳瓨鐘舵��
+
+    #region 鎿嶄綔绫诲瀷
+    public enum OperateTypeEnum
+    {
+        [Description("浜哄伐鍒犻櫎")]
+        浜哄伐鍒犻櫎 = 1,
+        [Description("鑷姩鍒犻櫎")]
+        鑷姩鍒犻櫎 = 2,
+        [Description("浜哄伐鎭㈠")]
+        浜哄伐鎭㈠ = 3,
+        [Description("鑷姩鎭㈠")]
+        鑷姩鎭㈠ = 4,
+        [Description("浜哄伐瀹屾垚")]
+        浜哄伐瀹屾垚 = 5,
+        [Description("鑷姩瀹屾垚")]
+        鑷姩瀹屾垚 = 6,
+    }
+    #endregion
+
+    #region 鐩樼偣鐘舵��
+    public enum InventoryStatus
+    {
+        /// <summary>
+        /// 姝e父
+        /// </summary>
+        [Description("姝e父")]
+        Normal =0,
+
+        /// <summary>
+        /// 鐩樼泩
+        /// </summary>
+        [Description("鐩樼泩")]
+        Panying = 1,
+
+        /// <summary>
+        /// 鐩樹簭
+        /// </summary>
+        [Description("鐩樹簭")]
+        InventoryShortage = 2,
+    }
+    #endregion
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnumHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnumHelper.cs
new file mode 100644
index 0000000..bee5f32
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Enums/TaskEnumHelper.cs
@@ -0,0 +1,123 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Enums
+{
+    public static class TaskEnumHelper
+    {
+        public static List<int> GetEnumIndexList(this Type type)
+        {
+            if (type is null) throw new ArgumentNullException("type");
+            if (!type.IsEnum) return new List<int>();
+            return Enum.GetValues(type).Cast<int>().ToList();
+        }
+
+        public static TaskTypeGroup GetTaskTypeGroup(this int taskType)
+        {
+            if (!int.TryParse(Enum.Parse<TaskOutboundTypeEnum>(taskType.ToString()).ToString(), out int result))
+            {
+                return TaskTypeGroup.OutbondGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskInboundTypeEnum>(taskType.ToString()).ToString(), out result))
+            {
+                return TaskTypeGroup.InboundGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskRelocationTypeEnum>(taskType.ToString()).ToString(), out result))
+            {
+                return TaskTypeGroup.RelocationGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskOtherTypeEnum>(taskType.ToString()).ToString(), out result))
+            {
+                return TaskTypeGroup.OtherGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskAGVCarryTypeEnum>(taskType.ToString()).ToString(), out result))
+            {
+                return TaskTypeGroup.CarryGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskAcrossFloorTypeEnum>(taskType.ToString()).ToString(), out result))
+            {
+                return TaskTypeGroup.AcrossFloorGroup;
+            }
+            else
+            {
+                throw new NotImplementedException();
+            }
+        }
+        public static TaskStateGroup GetTaskStateGroup(this int taskState)
+        {
+            if (!int.TryParse(Enum.Parse<TaskOutStatusEnum>(taskState.ToString()).ToString(), out int result))
+            {
+                return TaskStateGroup.OutbondGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskInStatusEnum>(taskState.ToString()).ToString(), out result))
+            {
+                return TaskStateGroup.InboundGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskRelocationStatusEnum>(taskState.ToString()).ToString(), out result))
+            {
+                return TaskStateGroup.RelocationGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskOtherStateEnum>(taskState.ToString()).ToString(), out result))
+            {
+                return TaskStateGroup.OtherGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskAGVCarryStatusEnum>(taskState.ToString()).ToString(), out result))
+            {
+                return TaskStateGroup.CarryGroup;
+            }
+            else if (!int.TryParse(Enum.Parse<TaskAcrossFloorStatusEnum>(taskState.ToString()).ToString(), out result))
+            {
+                return TaskStateGroup.AcrossFloorGroup;
+            }
+            else
+            {
+                throw new NotImplementedException();
+            }
+        }
+
+        public static int GetNextNotCompletedStatus<T>(this int currentStatus) where T : Enum
+        {
+            Type type = typeof(T);
+            if (type is null) throw new ArgumentNullException();
+            if (!type.IsEnum) return 0;
+            if (type == typeof(TaskInStatusEnum))
+            {
+                List<int> taskInboundTypes = type.GetEnumIndexList();
+                return taskInboundTypes.Where(x => x > currentStatus && x < (int)TaskInStatusEnum.InFinish).OrderBy(x => x).FirstOrDefault();
+            }
+            else if (type == typeof(TaskOutStatusEnum))
+            {
+                return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskOutStatusEnum.OutFinish).OrderBy(x => x).FirstOrDefault();
+            }
+            else if (type == typeof(TaskAGVCarryStatusEnum))
+            {
+                return type.GetEnumIndexList().Where(x => x > currentStatus && x < (int)TaskAGVCarryStatusEnum.CarryFinish).OrderBy(x => x).FirstOrDefault();
+            }
+            else
+            {
+                throw new NotImplementedException();
+            }
+        }
+    }
+    public enum TaskTypeGroup
+    {
+        InboundGroup,
+        OutbondGroup,
+        RelocationGroup,
+        OtherGroup,
+        CarryGroup,
+        AcrossFloorGroup
+    }
+    public enum TaskStateGroup
+    {
+        InboundGroup,
+        OutbondGroup,
+        RelocationGroup,
+        OtherGroup,
+        CarryGroup,
+        AcrossFloorGroup,
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs
new file mode 100644
index 0000000..93eefc0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AllOptionRegister.cs
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Core;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class AllOptionRegister
+    {
+        public static void AddAllOptionRegister(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            foreach (var optionType in App.EffectiveTypes.Where(s =>
+                         !s.IsInterface && typeof(IConfigurableOptions).IsAssignableFrom(s)))
+            {
+                services.AddConfigurableOptions(optionType);
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs
new file mode 100644
index 0000000..404bf07
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/ApplicationSetup.cs
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class ApplicationSetup
+    {
+        public static void UseApplicationSetup(this WebApplication app)
+        {
+            app.Lifetime.ApplicationStarted.Register(() =>
+            {
+                App.IsRun = true;
+            });
+
+            app.Lifetime.ApplicationStopped.Register(() =>
+            {
+                App.IsRun = false;
+
+                //娓呴櫎鏃ュ織
+                //Log.CloseAndFlush();
+            });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs
new file mode 100644
index 0000000..848c3ea
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/AutofacModuleRegister.cs
@@ -0,0 +1,81 @@
+锘縰sing Autofac;
+using Autofac.Extras.DynamicProxy;
+using log4net;
+using Microsoft.Extensions.DependencyModel;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Loader;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
+
+namespace WIDESEA_Core.Extensions
+{
+    public class AutofacModuleRegister : Autofac.Module
+    {
+        //private static readonly ILog log = LogManager.GetLogger(typeof(AutofacModuleRegister));
+        protected override void Load(ContainerBuilder builder)
+        {
+            var cacheType = new List<Type>();
+
+            //builder.RegisterType<LogAOP>();
+            //cacheType.Add(typeof(LogAOP));
+
+            builder.RegisterGeneric(typeof(RepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency();//娉ㄥ唽浠撳偍
+            builder.RegisterGeneric(typeof(ServiceBase<,>)).As(typeof(IService<>)).InstancePerDependency();//娉ㄥ唽鏈嶅姟
+
+            Type baseType = typeof(IDependency);
+
+            List<RuntimeLibrary> compilationLibrary = DependencyContext.Default
+                    .RuntimeLibraries
+                    .Where(x => !x.Serviceable && x.Type == "project")
+                    .ToList();
+
+            List<Assembly> assemblyList = new List<Assembly>();
+            foreach (var library in compilationLibrary)
+            {
+                try
+                {
+                    assemblyList.Add(AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(library.Name)));
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine(library.Name + ex.Message);
+                }
+            }
+
+            builder.RegisterAssemblyTypes(assemblyList.ToArray()).Where(x => !x.IsInterface && !x.IsAbstract && baseType.IsAssignableFrom(x))
+                        .AsImplementedInterfaces()
+                        .PropertiesAutowired()
+                        .InstancePerDependency()
+                        .EnableInterfaceInterceptors()
+                        .InterceptedBy(cacheType.ToArray());
+
+
+            //foreach (var assembly in assemblyList)
+            //{
+            //    foreach (var type in assembly.GetTypes())
+            //    {
+            //        if (!type.IsInterface && !type.IsAbstract && baseType.IsAssignableFrom(type))
+            //        {
+            //            Console.WriteLine($"娉ㄥ唽绫诲瀷: {type.FullName}");
+            //        }
+            //    }
+            //}
+
+            builder.RegisterType<UnitOfWorkManage>().As<IUnitOfWorkManage>()
+               .AsImplementedInterfaces()
+               .InstancePerLifetimeScope()
+               .PropertiesAutowired();
+
+            builder.RegisterType<RequestLogModel>().InstancePerLifetimeScope();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs
new file mode 100644
index 0000000..e449a0e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/CorsSetup.cs
@@ -0,0 +1,56 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Cors 璺ㄥ煙
+    /// </summary>
+    public static class CorsSetup
+    {
+        /// <summary>
+        /// 璺ㄥ煙
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddCorsSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddCors(c =>
+            {
+                if (!AppSettings.app(new string[] { "Cors", "EnableAllIPs" }).ObjToBool())
+                {
+                    c.AddPolicy(AppSettings.app(new string[] {"Cors", "PolicyName" }),
+
+                        policy =>
+                        {
+                            policy
+                            .WithOrigins(AppSettings.app(new string[] { "Cors", "IPs" }).Split(','))
+                            .AllowAnyHeader()//Ensures that the policy allows any header.
+                            .AllowAnyMethod();
+                        });
+                }
+                else
+                {
+                    //鍏佽浠绘剰璺ㄥ煙璇锋眰
+                    c.AddPolicy(AppSettings.app(new string[] { "Cors", "PolicyName" }),
+                        policy =>
+                        {
+                            policy
+                            .SetIsOriginAllowed((host) => true)
+                            .AllowAnyMethod()
+                            .AllowAnyHeader()
+                            .AllowCredentials();
+                        });
+                }
+
+            });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs
new file mode 100644
index 0000000..dba095c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/DbSetup.cs
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// Db 鍚姩鏈嶅姟
+    /// </summary>
+    public static class DbSetup
+    {
+        public static void AddDbSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            
+            services.AddScoped<DBSeed>();
+            services.AddScoped<DBContext>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs
new file mode 100644
index 0000000..2615700
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/HttpContextSetup.cs
@@ -0,0 +1,30 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// HttpContext 鐩稿叧鏈嶅姟
+    /// </summary>
+    public static class HttpContextSetup
+    {
+        /// <summary>
+        ///  HttpContext 鐩稿叧鏈嶅姟
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddHttpContextSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+            services.AddScoped<IUser, AspNetUser>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs
new file mode 100644
index 0000000..9acbd1e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/InitializationHostServiceSetup.cs
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    public static class InitializationHostServiceSetup
+    {
+        /// <summary>
+        /// 搴旂敤鍒濆鍖栨湇鍔℃敞鍏�
+        /// </summary>
+        /// <param name="services"></param>
+        public static void AddInitializationHostServiceSetup(this IServiceCollection services)
+        {
+            if (services is null)
+            {
+                ArgumentNullException.ThrowIfNull(nameof(services));
+            }
+            services.AddHostedService<SeedDataHostedService>();//绉嶅瓙鏁版嵁
+            //services.AddHostedService<QuartzJobHostedService>();
+            //services.AddHostedService<ConsulHostedService>();
+            //services.AddHostedService<EventBusHostedService>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs
new file mode 100644
index 0000000..9684dfa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/IpPolicyRateLimitSetup.cs
@@ -0,0 +1,43 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// IPLimit闄愭祦 鍚姩鏈嶅姟
+    /// </summary>
+    public static class IpPolicyRateLimitSetup
+    {
+        public static void AddIpPolicyRateLimitSetup(this IServiceCollection services, IConfiguration Configuration)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            // needed to store rate limit counters and ip rules
+            //services.AddMemoryCache();
+
+            //load general configuration from appsettings.json
+            //services.Configure<IpRateLimitOptions>(Configuration.GetSection("IpRateLimiting"));
+
+            // inject counter and rules stores
+            //services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
+            //services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
+            //services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
+
+            // inject counter and rules distributed cache stores
+            //services.AddSingleton<IIpPolicyStore, DistributedCacheIpPolicyStore>();
+            //services.AddSingleton<IRateLimitCounterStore, DistributedCacheRateLimitCounterStore>();
+
+            // the clientId/clientIp resolvers use it.
+            //services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
+
+            // configuration (resolvers, counter key builders)
+            //services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/JobSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/JobSetup.cs
new file mode 100644
index 0000000..1851aa6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/JobSetup.cs
@@ -0,0 +1,23 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Extensions
+{
+
+    /// <summary>
+    /// 浠诲姟璋冨害 鍚姩鏈嶅姟
+    /// </summary>
+    public static class JobSetup
+    {
+        public static void AddJobSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs
new file mode 100644
index 0000000..b2a5e8e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MemoryCacheSetup.cs
@@ -0,0 +1,28 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Options;
+using System;
+using WIDESEA_Core.Caches;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Memory缂撳瓨 鍚姩鏈嶅姟
+    /// </summary>
+    public static class MemoryCacheSetup
+    {
+        public static void AddMemoryCacheSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            services.AddSingleton<ICacheService, MemoryCacheService>();
+            services.AddMemoryCache();
+            //services.AddScoped<ICaching, Caching>();
+            //services.AddSingleton<IMemoryCache>(factory =>
+            //{
+            //    var value = factory.GetRequiredService<IOptions<MemoryCacheOptions>>();
+            //    var cache = new MemoryCache(value);
+            //    return cache;
+            //});
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs
new file mode 100644
index 0000000..3ceecb8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/MiniProfilerSetup.cs
@@ -0,0 +1,32 @@
+锘縰sing Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// MiniProfiler 鎬ц兘鍒嗘瀽
+    /// </summary>
+    public static class MiniProfilerSetup
+    {
+        /// <summary>
+        /// 鎬ц兘鍒嗘瀽
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddMiniProfilerSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+            //if (AppSettings.app(new string[] { "Startup", "MiniProfiler", "Enabled" }).ObjToBool())
+            //{
+            services.AddMiniProfiler(options =>
+            {
+                options.RouteBasePath = "/profiler";
+            });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs
new file mode 100644
index 0000000..364bbff
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SqlsugarSetup.cs
@@ -0,0 +1,143 @@
+锘縰sing Microsoft.Extensions.Caching.Memory;
+using Microsoft.Extensions.DependencyInjection;
+using SqlSugar;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.LogHelper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    /// <summary>
+    /// SqlSugar 鍚姩鏈嶅姟
+    /// </summary>
+    public static class SqlsugarSetup
+    {
+        private static readonly MemoryCache Cache = new MemoryCache(new MemoryCacheOptions());
+
+        public static void AddSqlsugarSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            // 榛樿娣诲姞涓绘暟鎹簱杩炴帴
+            //MainDb.CurrentDbConnId = AppSettings.app(new string[] { "MainDB" });
+
+            // SqlSugarScope鏄嚎绋嬪畨鍏紝鍙娇鐢ㄥ崟渚嬫敞鍏�
+            // 鍙傝�冿細https://www.donet5.com/Home/Doc?typeId=1181
+            services.AddScoped<ISqlSugarClient>(o =>
+            {
+                var memoryCache = o.GetRequiredService<IMemoryCache>();
+
+                // 杩炴帴瀛楃涓�
+                var listConfig = new List<ConnectionConfig>
+                {
+                    new ConnectionConfig
+                    {
+                        ConfigId = MainDb.CurrentDbConnId,
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                        AopEvents = new AopEvents
+                        {
+                            OnLogExecuting = (sql, p) =>
+                            {
+                                  Parallel.For(0, 1, e =>
+                                  {
+                                        MiniProfiler.Current.CustomTiming("SQL锛�", GetParas(p) + "銆怱QL璇彞銆戯細" + sql);
+                                  });
+                            }
+                        }
+                    }
+                };
+                #region 浠庡簱
+                //var listConfig_Slave = new List<SlaveConnectionConfig>();
+                //BaseDBConfig.MutiConnectionString.ForEach(s =>
+                //{
+                //    if(s.ConnId != MainDb.CurrentDbConnId)
+                //    {
+                //        listConfig_Slave.Add(new SlaveConnectionConfig()
+                //        {
+                //            HitRate = s.HitRate,
+                //            ConnectionString = s.Connection
+                //        });
+                //    }
+
+                //});
+
+                //BaseDBConfig.MutiConnectionString.ForEach(m =>
+                //{
+                //    listConfig.Add(new ConnectionConfig()
+                //    {
+                //        ConfigId = m.ConnId.ObjToString().ToLower(),
+                //        ConnectionString = m.Connection,
+                //        DbType = (DbType)m.DbType,
+                //        IsAutoCloseConnection = true,
+                //        MoreSettings = new ConnMoreSettings()
+                //        {
+                //            //IsWithNoLockQuery = true,
+                //            IsAutoRemoveDataCache = true
+                //        },
+                //        // 浠庡簱
+                //        //SlaveConnectionConfigs = listConfig_Slave,
+                //        // 鑷畾涔夌壒鎬�
+                //        ConfigureExternalServices = new ConfigureExternalServices()
+                //        {
+                //            DataInfoCacheService = new SqlSugarMemoryCacheService(memoryCache),
+                //            EntityService = (property, column) =>
+                //            {
+                //                if (column.IsPrimarykey && property.PropertyType == typeof(int))
+                //                {
+                //                    column.IsIdentity = true;
+                //                }
+                //            }
+                //        },
+                //        InitKeyType = InitKeyType.Attribute,
+                //        AopEvents = new AopEvents()
+                //        {
+                //            OnError = x =>
+                //            {
+                //                Console.WriteLine(x.Sql);
+                //            }
+                //        }
+                //    }
+                //   );
+                //});
+                #endregion
+
+                SqlSugarClient sqlSugarClient = new SqlSugarClient(listConfig, db =>
+                {
+                    db.Aop.DataExecuting = SqlSugarAop.DataExecuting;
+                });
+                return sqlSugarClient;
+            });
+        }
+
+        private static string GetWholeSql(SugarParameter[] paramArr, string sql)
+        {
+            foreach (var param in paramArr)
+            {
+                sql.Replace(param.ParameterName, param.Value.ObjToString());
+            }
+
+            return sql;
+        }
+
+        private static string GetParas(SugarParameter[] pars)
+        {
+            string key = "銆怱QL鍙傛暟銆戯細";
+            foreach (var param in pars)
+            {
+                key += $"{param.ParameterName}:{param.Value}\n";
+            }
+
+            return key;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs
new file mode 100644
index 0000000..b0f70df
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/SwaggerSetup.cs
@@ -0,0 +1,134 @@
+锘縰sing log4net;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.OpenApi.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using static WIDESEA_Core.Extensions.CustomApiVersion;
+using Swashbuckle.AspNetCore.Filters;
+
+namespace WIDESEA_Core.Extensions
+{
+    /// <summary>
+    /// Swagger 
+    /// </summary>
+    public static class SwaggerSetup
+    {
+
+        private static readonly ILog log =
+        LogManager.GetLogger(typeof(SwaggerSetup));
+        /// <summary>
+        /// Swagger
+        /// </summary>
+        /// <param name="services"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void AddSwaggerSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            var basePath = AppContext.BaseDirectory;
+            //var basePath2 = Microsoft.DotNet.PlatformAbstractions.ApplicationEnvironment.ApplicationBasePath;
+            var ApiName = AppSettings.app(new string[] { "ApiName" });
+
+            services.AddSwaggerGen(c =>
+            {
+                //閬嶅巻鍑哄叏閮ㄧ殑鐗堟湰锛屽仛鏂囨。淇℃伅灞曠ず
+                typeof(ApiVersions).GetEnumNames().ToList().ForEach(version =>
+                {
+                    c.SwaggerDoc(version, new OpenApiInfo
+                    {
+                        Version = version,
+                        Title = $"{ApiName} 鎺ュ彛鏂囨。鈥斺�攞RuntimeInformation.FrameworkDescription}",
+                        Description = $"{ApiName} HTTP API " + version,
+                        //Contact = new OpenApiContact { Name = ApiName, Email = "Blog.Core@xxx.com", Url = new Uri("https://neters.club") },
+                        //License = new OpenApiLicense { Name = ApiName + " 瀹樻柟鏂囨。", Url = new Uri("http://apk.neters.club/.doc/") }
+                    });
+                    //c.OrderActionsBy(o => o.RelativePath);
+                });
+
+                c.UseInlineDefinitionsForEnums();
+                try
+                {
+                    //杩欎釜灏辨槸鍒氬垰閰嶇疆鐨剎ml鏂囦欢鍚�
+                    //var xmlPath = Path.Combine(basePath, "Blog.Core.xml");
+                    //榛樿鐨勭浜屼釜鍙傛暟鏄痜alse锛岃繖涓槸controller鐨勬敞閲婏紝璁板緱淇敼
+                    //c.IncludeXmlComments(xmlPath, true);
+
+                    //杩欎釜灏辨槸Model灞傜殑xml鏂囦欢鍚�
+                    //var xmlModelPath = Path.Combine(basePath, "Blog.Core.Model.xml");
+                    //c.IncludeXmlComments(xmlModelPath);
+                }
+                catch (Exception ex)
+                {
+                    log.Error("Blog.Core.xml鍜孊log.Core.Model.xml 涓㈠け锛岃妫�鏌ュ苟鎷疯礉銆俓n" + ex.Message);
+                }
+
+                // 寮�鍚姞鏉冨皬閿�
+                c.OperationFilter<AddResponseHeadersFilter>();
+                c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>();
+
+                // 鍦╤eader涓坊鍔爐oken锛屼紶閫掑埌鍚庡彴
+                //c.OperationFilter<SecurityRequirementsOperationFilter>();
+
+                c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
+                {
+                    Description = "JWT鎺堟潈token鍓嶉潰闇�瑕佸姞涓婂瓧娈礏earer涓庝竴涓┖鏍�,濡侭earer token",
+                    Name = "Authorization",
+                    In = ParameterLocation.Header,
+                    Type = SecuritySchemeType.ApiKey,
+                    BearerFormat = "JWT",
+                    Scheme = "Bearer"
+                });
+
+                c.AddSecurityRequirement(new OpenApiSecurityRequirement
+                {
+                    {
+                        new OpenApiSecurityScheme
+                        {
+                            Reference = new OpenApiReference {
+                                Type = ReferenceType.SecurityScheme,
+                                Id = "Bearer"
+                            }
+                        },
+                        new string[] { }
+                    }
+                });
+            }).AddControllers()
+            .ConfigureApiBehaviorOptions(options =>
+            {
+                options.SuppressConsumesConstraintForFormFileParameters = true;
+                options.SuppressInferBindingSourcesForParameters = true;
+                options.SuppressModelStateInvalidFilter = true;
+                options.SuppressMapClientErrors = true;
+                options.ClientErrorMapping[404].Link =
+                    "https://*/404";
+            });
+            //services.AddSwaggerGenNewtonsoftSupport();
+        }
+    }
+
+    /// <summary>
+    /// 鑷畾涔夌増鏈�
+    /// </summary>
+    public class CustomApiVersion
+    {
+        /// <summary>
+        /// Api鎺ュ彛鐗堟湰 鑷畾涔�
+        /// </summary>
+        public enum ApiVersions
+        {
+            /// <summary>
+            /// V1 鐗堟湰
+            /// </summary>
+            V1 = 1,
+            /// <summary>
+            /// V2 鐗堟湰
+            /// </summary>
+            V2 = 2,
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs
new file mode 100644
index 0000000..8cc7c44
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Extensions/WebSocketSetup.cs
@@ -0,0 +1,31 @@
+锘�
+using HslCommunication.WebSocket;
+using Microsoft.Extensions.DependencyInjection;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEAWCS_Server.HostedService
+{
+    public static class WebSocketSetup
+    {
+        public static void AddWebSocketSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            if(AppSettings.Get("WebSocketEnable").ObjToBool())
+            {
+                int port = AppSettings.Get("WebSocketPort").ObjToInt();
+                if (port == 0)
+                {
+                    port = 9001;
+                }
+
+                services.AddSingleton(x =>
+                {
+                    WebSocketServer socketServer = new WebSocketServer();
+                    socketServer.ServerStart(port);
+                    return socketServer;
+                });
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
new file mode 100644
index 0000000..ce595c8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ApiAuthorizeFilter.cs
@@ -0,0 +1,80 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Hosting;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Runtime;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Filter
+{
+    /// <summary>
+    /// 鍒ゆ柇token鏄惁姝g‘
+    /// </summary>
+    public class ApiAuthorizeFilter : IAuthorizationFilter
+    {
+        private static readonly string replaceTokenPath = "/api/Sys_User/replaceToken";
+        private static readonly string loginPath = "/api/Sys_User/login";
+        private static readonly string vierificationCodePath = "/api/Sys_User/getVierificationCode";
+
+        public ApiAuthorizeFilter()
+        {
+
+        }
+
+        /// <summary>
+        /// 鍙垽鏂璽oken鏄惁姝g‘锛屼笉鍒ゆ柇鏉冮檺
+        /// 濡傛灉闇�瑕佸垽鏂潈闄愮殑鍦ˋction涓婂姞涓夾piActionPermission灞炴�ф爣璇嗘潈闄愮被鍒紝ActionPermissionFilter浣滄潈闄愬鐞�
+        ///(string,string,string)1銆佽姹傚弬鏁�,2銆佽繑鍥炴秷鎭紝3,寮傚父娑堟伅,4鐘舵��
+        /// </summary>
+        /// <param name="context"></param>
+        public void OnAuthorization(AuthorizationFilterContext context)
+        {
+            //if (!App.HostEnvironment.IsProduction() || context.HttpContext.Request.Path.Value == loginPath || context.HttpContext.Request.Path.Value == vierificationCodePath)
+            //{
+            if (context.ActionDescriptor.EndpointMetadata.Any(item => item is IAllowAnonymous))
+            {
+                //濡傛灉浣跨敤浜嗗浐瀹歍oken涓嶈繃鏈燂紝鐩存帴瀵箃oken鐨勫悎娉曟�у強token鏄惁瀛樺湪杩涜楠岃瘉
+                //if (context.Filters
+                //   .Where(item => item is IFixedTokenFilter)
+                //   .FirstOrDefault() is IFixedTokenFilter tokenFilter)
+                //{
+                //    tokenFilter.OnAuthorization(context);
+                //    return;
+                //}
+                //鍖垮悕骞朵紶鍏ヤ簡token锛岄渶瑕佸皢鐢ㄦ埛鐨処D缂撳瓨璧锋潵锛屼繚璇乁serHelper閲岃兘姝g‘鑾峰彇鍒扮敤鎴蜂俊鎭�
+                if (!context.HttpContext.User.Identity.IsAuthenticated
+                    && !string.IsNullOrEmpty(context.HttpContext.Request.Headers[AppSecret.TokenHeaderName]))
+                {
+                    context.AddIdentity();
+                }
+                return;
+            }
+            //}
+            //else
+            //{
+            //    if (!context.HttpContext.User.Identity.IsAuthenticated
+            //            || !context.HttpContext.Request.Headers.ContainsKey(AppSecret.TokenHeaderName))
+            //    {
+            //        context.Unauthorized("鏈巿鏉�");
+            //        return;
+            //    }
+            //}
+
+            DateTime expDate = context.HttpContext.User.Claims.Where(x => x.Type == JwtRegisteredClaimNames.Exp)
+                .Select(x => x.Value).FirstOrDefault().GetTimeSpmpToDate();
+            //鍔ㄦ�佹爣璇嗗埛鏂皌oken(2021.05.01)
+            int ExpMinutes = AppSettings.app("ExpMinutes").ObjToInt();
+            if ((expDate - DateTime.Now).TotalMinutes < ExpMinutes / 3 && context.HttpContext.Request.Path != replaceTokenPath)
+            {
+                context.HttpContext.Response.Headers.Add("widesea_exp", "1");
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs
new file mode 100644
index 0000000..81dc421
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/ExporterHeaderFilter.cs
@@ -0,0 +1,23 @@
+锘縰sing Magicodes.ExporterAndImporter.Core.Filters;
+using Magicodes.ExporterAndImporter.Core.Models;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Filter
+{
+    public class ExporterHeaderFilter : IExporterHeaderFilter
+    {
+        /// <summary>
+        /// 琛ㄥご绛涢�夊櫒锛堜慨鏀瑰悕绉帮級
+        /// </summary>
+        /// <param name="exporterHeaderInfo"></param>
+        /// <returns></returns>
+        public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
+        {
+            return exporterHeaderInfo;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs
new file mode 100644
index 0000000..b8e02ba
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/GlobalExceptionsFilter.cs
@@ -0,0 +1,93 @@
+锘縰sing Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.SignalR;
+using Microsoft.Extensions.Logging;
+using StackExchange.Profiling;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using System.Reflection.Metadata;
+using WIDESEA_Core.LogHelper;
+
+namespace WIDESEA_Core.Filter
+{
+    /// <summary>
+    /// 鍏ㄥ眬寮傚父閿欒鏃ュ織
+    /// </summary>
+    public class GlobalExceptionsFilter : IExceptionFilter
+    {
+        private readonly IWebHostEnvironment _env;
+        private readonly ILogger<GlobalExceptionsFilter> _loggerHelper;
+
+        public GlobalExceptionsFilter(IWebHostEnvironment env, ILogger<GlobalExceptionsFilter> loggerHelper)
+        {
+            _env = env;
+            _loggerHelper = loggerHelper;
+        }
+
+        public void OnException(ExceptionContext context)
+        {
+            var json = new WebResponseContent();
+
+            json.Message = context.Exception.Message;//閿欒淇℃伅
+            json.Code = 500;//500寮傚父 
+            var errorAudit = "Unable to resolve service for";
+            if (!string.IsNullOrEmpty(json.Message) && json.Message.Contains(errorAudit))
+            {
+                json.Message = json.Message.Replace(errorAudit, $"锛堣嫢鏂版坊鍔犳湇鍔★紝闇�瑕侀噸鏂扮紪璇戦」鐩級{errorAudit}");
+            }
+
+            if (_env.EnvironmentName.ObjToString().Equals("Development"))
+            {
+                json.DevMessage = context.Exception.StackTrace;//鍫嗘爤淇℃伅
+            }
+            var res = new ContentResult();
+            res.Content = json.Serialize();
+
+            context.Result = res;
+            MiniProfiler.Current.CustomTiming("Errors锛�", json.Message);
+
+            LogLock.OutLogAOP("鍏ㄥ眬寮傚父閿欒鏃ュ織", new string[] { json.Message + WriteLog(json.Message, context.Exception) });
+            //閲囩敤log4net 杩涜閿欒鏃ュ織璁板綍
+            //_loggerHelper.LogError(json.Message + WriteLog(json.Message, context.Exception));
+        }
+
+        /// <summary>
+        /// 鑷畾涔夎繑鍥炴牸寮�
+        /// </summary>
+        /// <param name="throwMsg"></param>
+        /// <param name="ex"></param>
+        /// <returns></returns>
+        public string WriteLog(string throwMsg, Exception ex)
+        {
+            return string.Format("\r\n銆愯嚜瀹氫箟閿欒銆戯細{0} \r\n銆愬紓甯哥被鍨嬨�戯細{1} \r\n銆愬紓甯镐俊鎭�戯細{2} \r\n銆愬爢鏍堣皟鐢ㄣ�戯細{3}", new object[] { throwMsg,
+                ex.GetType().Name, ex.Message, ex.StackTrace });
+        }
+
+    }
+    public class InternalServerErrorObjectResult : ObjectResult
+    {
+        public InternalServerErrorObjectResult(object value) : base(value)
+        {
+            StatusCode = StatusCodes.Status500InternalServerError;
+        }
+    }
+    //杩斿洖閿欒淇℃伅
+    public class JsonErrorResponse
+    {
+        /// <summary>
+        /// 鐢熶骇鐜鐨勬秷鎭�
+        /// </summary>
+        public string Message { get; set; }
+        /// <summary>
+        /// 寮�鍙戠幆澧冪殑娑堟伅
+        /// </summary>
+        public string DevelopmentMessage { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs
new file mode 100644
index 0000000..99368a2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/IFixedTokenFilter.cs
@@ -0,0 +1,57 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc.Filters;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Net;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Filter
+{
+    public interface IFixedTokenFilter : IFilterMetadata
+    {
+        AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context);
+    }
+    public class FixedTokenAttribute : Attribute, IFixedTokenFilter, IAllowAnonymous
+    {
+        public AuthorizationFilterContext OnAuthorization(AuthorizationFilterContext context)
+        {
+            string fixedoken = "";
+            //濡傛灉token宸插け鏁堬紝鐩存帴鑾峰彇header閲岀殑token
+            if (!context.HttpContext.User.Identity.IsAuthenticated)
+            {
+                fixedoken = context.HttpContext.Request.Headers[AppSecret.TokenHeaderName];
+                fixedoken = fixedoken?.Replace("Bearer ", "");
+                //鍒ゆ柇鏄惁浼犲叆浜唗oken
+                if (string.IsNullOrEmpty(fixedoken))
+                {
+                    return context.Unauthorized("娌℃湁浼犲叆token");
+                }
+                //瑙f瀽token
+                int userId = JwtHelper.GetUserId(fixedoken);
+                if (userId <= 0)
+                {
+                    return context.Unauthorized("token涓嶆纭�");
+                }
+                context.AddIdentity(userId);
+            }
+            else
+            {
+                fixedoken = ((ClaimsIdentity)context.HttpContext.User.Identity)
+                ?.BootstrapContext?.ToString();
+            }
+            //鍒ゆ柇褰撳墠鐢ㄦ埛鐨則oken涓庣紦瀛樼殑token鏄惁鐩稿悓
+            if (App.User.Token != fixedoken)
+            {
+                context.FilterResult(HttpStatusCode.Unauthorized, "token宸插け鏁�");
+            }
+            return context;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs
new file mode 100644
index 0000000..be1d4a8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Filter/UseServiceDIAttribute.cs
@@ -0,0 +1,38 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Filter
+{
+    public class UseServiceDIAttribute : ActionFilterAttribute
+    {
+
+        protected readonly ILogger<UseServiceDIAttribute> _logger;
+        //private readonly IBlogArticleServices _blogArticleServices;
+        private readonly string _name;
+
+        public UseServiceDIAttribute(ILogger<UseServiceDIAttribute> logger/*, IBlogArticleServices blogArticleServices*/, string Name = "")
+        {
+            _logger = logger;
+            /*_blogArticleServices = blogArticleServices;*/
+            _name = Name;
+        }
+
+
+        public override void OnActionExecuted(ActionExecutedContext context)
+        {
+            //var dd =await _blogArticleServices.Query();
+            base.OnActionExecuted(context);
+            DeleteSubscriptionFiles();
+        }
+
+        private void DeleteSubscriptionFiles()
+        {
+
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs
new file mode 100644
index 0000000..994d738
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AppSettings.cs
@@ -0,0 +1,109 @@
+锘縰sing Microsoft.Extensions.Configuration.Json;
+using Microsoft.Extensions.Configuration;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    /// <summary>
+    /// appsettings.json鎿嶄綔绫�
+    /// </summary>
+    public class AppSettings
+    {
+        public static IConfiguration Configuration { get; set; }
+        static string contentPath { get; set; }
+
+        public AppSettings(string contentPath)
+        {
+            string Path = "appsettings.json";
+
+            //濡傛灉浣犳妸閰嶇疆鏂囦欢 鏄� 鏍规嵁鐜鍙橀噺鏉ュ垎寮�浜嗭紝鍙互杩欐牱鍐�
+            //Path = $"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json";
+
+            Configuration = new ConfigurationBuilder()
+               .SetBasePath(contentPath)
+               .Add(new JsonConfigurationSource { Path = Path, Optional = false, ReloadOnChange = true })//杩欐牱鐨勮瘽锛屽彲浠ョ洿鎺ヨ鐩綍閲岀殑json鏂囦欢锛岃�屼笉鏄� bin 鏂囦欢澶逛笅鐨勶紝鎵�浠ヤ笉鐢ㄤ慨鏀瑰鍒跺睘鎬�
+               .Build();
+        }
+
+        public AppSettings(IConfiguration configuration)
+        {
+            Configuration = configuration;
+        }
+
+        /// <summary>
+        /// 灏佽瑕佹搷浣滅殑瀛楃
+        /// </summary>
+        /// <param name="sections">鑺傜偣閰嶇疆</param>
+        /// <returns></returns>
+        public static string app(params string[] sections)
+        {
+            try
+            {
+
+                if (sections.Any())
+                {
+                    return Configuration[string.Join(":", sections)];
+                }
+            }
+            catch (Exception) { }
+
+            return "";
+        }
+
+        /// <summary>
+        /// 閫掑綊鑾峰彇閰嶇疆淇℃伅鏁扮粍
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="sections"></param>
+        /// <returns></returns>
+        public static List<T> app<T>(params string[] sections)
+        {
+            List<T> list = new List<T>();
+            // 寮曠敤 Microsoft.Extensions.Configuration.Binder 鍖�
+            Configuration.Bind(string.Join(":", sections), list);
+            return list;
+        }
+
+
+        /// <summary>
+        /// 鏍规嵁璺緞  configuration["App:Name"];
+        /// </summary>
+        /// <param name="sectionsPath"></param>
+        /// <returns></returns>
+        public static string GetValue(string sectionsPath)
+        {
+            try
+            {
+                return Configuration[sectionsPath];
+            }
+            catch (Exception) { }
+
+            return "";
+
+        }
+
+        /// <summary>
+        /// 灏佽瑕佹搷浣滅殑瀛楃
+        /// </summary>
+        /// <param name="sections">鑺傜偣閰嶇疆</param>
+        /// <returns></returns>
+        public static string Get(params string[] sections)
+        {
+            try
+            {
+
+                if (sections.Any())
+                {
+                    return Configuration[string.Join(":", sections)];
+                }
+            }
+            catch (Exception) { }
+
+            return "";
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs
new file mode 100644
index 0000000..cb72738
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/AutoMapperHelper.cs
@@ -0,0 +1,23 @@
+锘縰sing AutoMapper;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+
+    /// <summary>
+    /// AutoMapper鏄犲皠甯姪绫�
+    /// AutoMapper 鐗堟湰13.0.1
+    /// </summary>
+    public static class AutoMapperHelper
+    {
+
+
+    }
+
+    
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs
new file mode 100644
index 0000000..2cc4614
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ConsoleHelper.cs
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ConsoleHelper
+    {
+        private static readonly object _objLock = new();
+
+        /// <summary>
+        /// 鍦ㄦ帶鍒跺彴杈撳嚭
+        /// </summary>
+        /// <param name="str">鏂囨湰</param>
+        /// <param name="color">鍓嶉鑹�</param>
+        public static void WriteColorLine(string str, ConsoleColor color)
+        {
+            lock (_objLock)
+            {
+                ConsoleColor currentForeColor = Console.ForegroundColor;
+                Console.ForegroundColor = color;
+                Console.WriteLine(str);
+                Console.ForegroundColor = currentForeColor;
+            }
+        }
+
+        /// <summary>
+        /// 鎵撳嵃閿欒淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteErrorLine(this string str, ConsoleColor color = ConsoleColor.Red) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃璀﹀憡淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteWarningLine(this string str, ConsoleColor color = ConsoleColor.Yellow) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃姝e父淇℃伅
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteInfoLine(this string str, ConsoleColor color = ConsoleColor.White) => WriteColorLine(str, color);
+
+        /// <summary>
+        /// 鎵撳嵃鎴愬姛鐨勪俊鎭�
+        /// </summary>
+        /// <param name="str">寰呮墦鍗扮殑瀛楃涓�</param>
+        /// <param name="color">鎯宠鎵撳嵃鐨勯鑹�</param>
+        public static void WriteSuccessLine(this string str, ConsoleColor color = ConsoleColor.Green) => WriteColorLine(str, color);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs
new file mode 100644
index 0000000..6e9a8fc
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ExportHelper.cs
@@ -0,0 +1,106 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
+using Magicodes.IE.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ExportHelper
+    {
+        public static Type CreateDynamicClass(this PropertyInfo[] propertyInfos)
+        {
+            string className = "DynamicClass";
+            AssemblyName assemblyName = new AssemblyName("WIDESEA_Model.Models");
+            AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);//瀹氫箟鍏锋湁鎸囧畾鍚嶇О鍜岃闂潈闄愮殑鍔ㄦ�佺▼搴忛泦
+            ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("MainModule");//鍦ㄦ绋嬪簭闆嗕腑瀹氫箟鍛藉悕鐨勬殏鏃跺姩鎬佹ā鍧�
+            TypeBuilder typeBuilder = moduleBuilder.DefineType(className, TypeAttributes.Public);//TypeBuilder:鍦ㄨ繍琛屾椂瀹氫箟骞跺垱寤虹被鐨勬柊瀹炰緥
+
+            Type attributeType1 = typeof(ExcelExporterAttribute);
+            MethodInfo [] methodInfos = attributeType1.GetMethods(BindingFlags.Public);
+            ConstructorInfo[] constructorInfos2 = attributeType1.GetConstructors();
+            ConstructorInfo constructorInfo2 = constructorInfos2[0];
+            CustomAttributeBuilder customAttributeBuilder2 = new CustomAttributeBuilder(constructorInfo2, new object[] { });
+
+            typeBuilder.SetCustomAttribute(customAttributeBuilder2);
+
+            foreach (var property in propertyInfos)
+            {
+                string propertyName = property.Name;
+                Type propertyType = property.PropertyType;
+
+                FieldBuilder fieldBuilder = typeBuilder.DefineField("_" + propertyName, propertyType, FieldAttributes.Private);
+                PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(propertyName, PropertyAttributes.HasDefault, propertyType, null);
+
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn != null)
+                {
+                    Type attributeType = typeof(ExporterHeaderAttribute);
+                    ConstructorInfo[] constructorInfos = attributeType.GetConstructors();
+                    ConstructorInfo constructorInfo = constructorInfos[0];
+                    CustomAttributeBuilder customAttributeBuilder = new CustomAttributeBuilder(constructorInfo, new object[] { sugarColumn.ColumnDescription, 11f, null, false, true, true, 0, KnownColor.Empty });
+                    propertyBuilder.SetCustomAttribute(customAttributeBuilder);
+                }
+
+                MethodAttributes getSetAttributes = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig;
+
+                MethodBuilder getMethodBuilder = typeBuilder.DefineMethod("get_" + propertyName, getSetAttributes, propertyType, Type.EmptyTypes);
+                ILGenerator getIL = getMethodBuilder.GetILGenerator();
+                getIL.Emit(OpCodes.Ldarg_0);
+                getIL.Emit(OpCodes.Ldfld, fieldBuilder);
+                getIL.Emit(OpCodes.Ret);
+
+                MethodBuilder setMethodBuilder = typeBuilder.DefineMethod("set_" + propertyName, getSetAttributes, null, new Type[] { propertyType });
+                ILGenerator setIL = setMethodBuilder.GetILGenerator();
+                setIL.Emit(OpCodes.Ldarg_0);
+                setIL.Emit(OpCodes.Ldarg_1);
+                setIL.Emit(OpCodes.Stfld, fieldBuilder);
+                setIL.Emit(OpCodes.Ret);
+
+                propertyBuilder.SetGetMethod(getMethodBuilder);
+                propertyBuilder.SetSetMethod(setMethodBuilder);
+
+
+            }
+
+            Type generatedType = typeBuilder.CreateType();
+            return generatedType;
+        }
+
+        public static void SetProperty(object instance, string propertyName, object value)
+        {
+            Type type = instance.GetType();
+            PropertyInfo propertyInfo = type.GetProperty(propertyName);
+            propertyInfo.SetValue(instance, value);
+        }
+
+        public static object GetProperty(object instance, string propertyName)
+        {
+            Type type = instance.GetType();
+            PropertyInfo propertyInfo = type.GetProperty(propertyName);
+            return propertyInfo.GetValue(instance);
+        }
+
+        public static void SetValue<T>(object instance, T value)
+        {
+            Type type = instance.GetType();
+
+            PropertyInfo[] propertyInfos = typeof(T).GetProperties();
+            for (int j = 0; j < propertyInfos.Length; j++)
+            {
+                PropertyInfo propertyInfo = type.GetProperty(propertyInfos[j].Name);
+                object obj = propertyInfos[j].GetValue(value);
+                propertyInfo.SetValue(instance, obj);
+                ExporterHeaderAttribute exporterHeaderAttribute = propertyInfo.GetCustomAttribute<ExporterHeaderAttribute>();
+            }
+
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs
new file mode 100644
index 0000000..9a83b21
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/FileHelper.cs
@@ -0,0 +1,428 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public class FileHelper : IDisposable
+    {
+
+        private bool _alreadyDispose = false;
+
+        #region 鏋勯�犲嚱鏁�
+        public FileHelper()
+        {
+
+        }
+        ~FileHelper()
+        {
+            Dispose(); ;
+        }
+
+        protected virtual void Dispose(bool isDisposing)
+        {
+            if (_alreadyDispose) return;
+            _alreadyDispose = true;
+        }
+        #endregion
+
+        #region IDisposable 鎴愬憳
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        #endregion
+
+        #region 鍙栧緱鏂囦欢鍚庣紑鍚�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欸etPostfixStr
+          * 鍔熻兘璇存槑锛氬彇寰楁枃浠跺悗缂�鍚�
+          * 鍙�     鏁帮細filename:鏂囦欢鍚嶇О
+          * 璋冪敤绀哄垪锛�
+          *            string filename = "aaa.aspx";        
+          *            string s = EC.FileObj.GetPostfixStr(filename);         
+         *****************************************/
+        /// <summary>
+        /// 鍙栧悗缂�鍚�
+        /// </summary>
+        /// <param name="filename">鏂囦欢鍚�</param>
+        /// <returns>.gif|.html鏍煎紡</returns>
+        public static string GetPostfixStr(string filename)
+        {
+            int start = filename.LastIndexOf(".");
+            int length = filename.Length;
+            string postfix = filename.Substring(start, length - start);
+            return postfix;
+        }
+        #endregion
+
+        #region 鏍规嵁鏂囦欢澶у皬鑾峰彇鎸囧畾鍓嶇紑鐨勫彲鐢ㄦ枃浠跺悕
+        /// <summary>
+        /// 鏍规嵁鏂囦欢澶у皬鑾峰彇鎸囧畾鍓嶇紑鐨勫彲鐢ㄦ枃浠跺悕
+        /// </summary>
+        /// <param name="folderPath">鏂囦欢澶�</param>
+        /// <param name="prefix">鏂囦欢鍓嶇紑</param>
+        /// <param name="size">鏂囦欢澶у皬(1m)</param>
+        /// <param name="ext">鏂囦欢鍚庣紑(.log)</param>
+        /// <returns>鍙敤鏂囦欢鍚�</returns>
+        public static string GetAvailableFileWithPrefixOrderSize(string folderPath, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
+        {
+            var allFiles = new DirectoryInfo(folderPath);
+            var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
+
+            if (selectFiles.Count > 0)
+            {
+                return selectFiles.FirstOrDefault().FullName;
+            }
+
+            return Path.Combine(folderPath, $@"{prefix}_{DateTime.Now.DateToTimeStamp()}.log");
+        }
+        public static string GetAvailableFileNameWithPrefixOrderSize(string _contentRoot, string prefix, int size = 1 * 1024 * 1024, string ext = ".log")
+        {
+            var folderPath = Path.Combine(_contentRoot, "Log");
+            if (!Directory.Exists(folderPath))
+            {
+                Directory.CreateDirectory(folderPath);
+            }
+
+            var allFiles = new DirectoryInfo(folderPath);
+            var selectFiles = allFiles.GetFiles().Where(fi => fi.Name.ToLower().Contains(prefix.ToLower()) && fi.Extension.ToLower() == ext.ToLower() && fi.Length < size).OrderByDescending(d => d.Name).ToList();
+
+            if (selectFiles.Count > 0)
+            {
+                return selectFiles.FirstOrDefault().Name.Replace(".log", "");
+            }
+
+            return $@"{prefix}_{DateTime.Now.DateToTimeStamp()}";
+        }
+        #endregion
+
+        #region 鍐欐枃浠�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛歐riteFile
+          * 鍔熻兘璇存槑锛氬啓鏂囦欢,浼氳鐩栨帀浠ュ墠鐨勫唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞,Strings:鏂囨湰鍐呭
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");       
+          *            string Strings = "杩欐槸鎴戝啓鐨勫唴瀹瑰晩";
+          *            EC.FileObj.WriteFile(Path,Strings);
+         *****************************************/
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        public static void WriteFile(string Path, string Strings)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            StreamWriter f2 = new StreamWriter(Path, false, System.Text.Encoding.GetEncoding("gb2312"));
+            f2.Write(Strings);
+            f2.Close();
+            f2.Dispose();
+        }
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        public static void WriteFile(string Path, byte[] buf)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            FileStream f2 = new FileStream(Path, FileMode.Create, FileAccess.Write);
+            f2.Write(buf, 0, buf.Length);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        public static void WriteFile(string Path, string fileName, byte[] buf)
+        {
+            if (!Directory.Exists(Path))
+            {
+                Directory.CreateDirectory(Path);
+            }
+            if (!File.Exists(Path + "\\" + fileName))
+            {
+                FileStream f = File.Create(Path + "\\" + fileName);
+                f.Close();
+            }
+            FileStream f2 = new FileStream(Path + "\\" + fileName, FileMode.Create, FileAccess.Write);
+            f2.Write(buf, 0, buf.Length);
+            f2.Close();
+            f2.Dispose();
+        }
+
+        /// <summary>
+        /// 鍐欐枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="Strings">鏂囦欢鍐呭</param>
+        /// <param name="encode">缂栫爜鏍煎紡</param>
+        public static void WriteFile(string Path, string Strings, Encoding encode)
+        {
+            if (!File.Exists(Path))
+            {
+                FileStream f = File.Create(Path);
+                f.Close();
+            }
+            StreamWriter f2 = new StreamWriter(Path, false, encode);
+            f2.Write(Strings);
+            f2.Close();
+            f2.Dispose();
+        }
+        #endregion
+
+        #region 璇绘枃浠�
+        /****************************************
+          * 鍑芥暟鍚嶇О锛歊eadFile
+          * 鍔熻兘璇存槑锛氳鍙栨枃鏈唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");       
+          *            string s = EC.FileObj.ReadFile(Path);
+         *****************************************/
+        /// <summary>
+        /// 璇绘枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <returns></returns>
+        public static string ReadFile(string Path)
+        {
+            string s = "";
+            if (!File.Exists(Path))
+                s = "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍";
+            else
+            {
+                StreamReader f2 = new StreamReader(Path, System.Text.Encoding.GetEncoding("gb2312"));
+                s = f2.ReadToEnd();
+                f2.Close();
+                f2.Dispose();
+            }
+
+            return s;
+        }
+
+        /// <summary>
+        /// 璇绘枃浠�
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="encode">缂栫爜鏍煎紡</param>
+        /// <returns></returns>
+        public static string ReadFile(string Path, Encoding encode)
+        {
+            string s = "";
+            if (!File.Exists(Path))
+                s = "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍";
+            else
+            {
+                StreamReader f2 = new StreamReader(Path, encode);
+                s = f2.ReadToEnd();
+                f2.Close();
+                f2.Dispose();
+            }
+
+            return s;
+        }
+        #endregion
+
+        #region 杩藉姞鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileAdd
+          * 鍔熻兘璇存槑锛氳拷鍔犳枃浠跺唴瀹�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞,strings:鍐呭
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default2.aspx");     
+          *            string Strings = "鏂拌拷鍔犲唴瀹�";
+          *            EC.FileObj.FileAdd(Path, Strings);
+         *****************************************/
+        /// <summary>
+        /// 杩藉姞鏂囦欢
+        /// </summary>
+        /// <param name="Path">鏂囦欢璺緞</param>
+        /// <param name="strings">鍐呭</param>
+        public static void FileAdd(string Path, string strings)
+        {
+            StreamWriter sw = File.AppendText(Path);
+            sw.Write(strings);
+            sw.Flush();
+            sw.Close();
+        }
+        #endregion
+
+        #region 鎷疯礉鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileCoppy
+          * 鍔熻兘璇存槑锛氭嫹璐濇枃浠�
+          * 鍙�     鏁帮細OrignFile:鍘熷鏂囦欢,NewFile:鏂版枃浠惰矾寰�
+          * 璋冪敤绀哄垪锛�
+          *            string orignFile = Server.MapPath("Default2.aspx");     
+          *            string NewFile = Server.MapPath("Default3.aspx");
+          *            EC.FileObj.FileCoppy(OrignFile, NewFile);
+         *****************************************/
+        /// <summary>
+        /// 鎷疯礉鏂囦欢
+        /// </summary>
+        /// <param name="OrignFile">鍘熷鏂囦欢</param>
+        /// <param name="NewFile">鏂版枃浠惰矾寰�</param>
+        public static void FileCoppy(string orignFile, string NewFile)
+        {
+            File.Copy(orignFile, NewFile, true);
+        }
+
+        #endregion
+
+        #region 鍒犻櫎鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileDel
+          * 鍔熻兘璇存槑锛氬垹闄ゆ枃浠�
+          * 鍙�     鏁帮細Path:鏂囦欢璺緞
+          * 璋冪敤绀哄垪锛�
+          *            string Path = Server.MapPath("Default3.aspx");    
+          *            EC.FileObj.FileDel(Path);
+         *****************************************/
+        /// <summary>
+        /// 鍒犻櫎鏂囦欢
+        /// </summary>
+        /// <param name="Path">璺緞</param>
+        public static void FileDel(string Path)
+        {
+            File.Delete(Path);
+        }
+        #endregion
+
+        #region 绉诲姩鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶ileMove
+          * 鍔熻兘璇存槑锛氱Щ鍔ㄦ枃浠�
+          * 鍙�     鏁帮細OrignFile:鍘熷璺緞,NewFile:鏂版枃浠惰矾寰�
+          * 璋冪敤绀哄垪锛�
+          *             string orignFile = Server.MapPath("../璇存槑.txt");    
+          *             string NewFile = Server.MapPath("http://www.cnblogs.com/璇存槑.txt");
+          *             EC.FileObj.FileMove(OrignFile, NewFile);
+         *****************************************/
+        /// <summary>
+        /// 绉诲姩鏂囦欢
+        /// </summary>
+        /// <param name="OrignFile">鍘熷璺緞</param>
+        /// <param name="NewFile">鏂拌矾寰�</param>
+        public static void FileMove(string orignFile, string NewFile)
+        {
+            File.Move(orignFile, NewFile);
+        }
+        #endregion
+
+        #region 鍦ㄥ綋鍓嶇洰褰曚笅鍒涘缓鐩綍
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欶olderCreate
+          * 鍔熻兘璇存槑锛氬湪褰撳墠鐩綍涓嬪垱寤虹洰褰�
+          * 鍙�     鏁帮細OrignFolder:褰撳墠鐩綍,NewFloder:鏂扮洰褰�
+          * 璋冪敤绀哄垪锛�
+          *            string orignFolder = Server.MapPath("test/");    
+          *            string NewFloder = "new";
+          *            EC.FileObj.FolderCreate(OrignFolder, NewFloder);
+         *****************************************/
+        /// <summary>
+        /// 鍦ㄥ綋鍓嶇洰褰曚笅鍒涘缓鐩綍
+        /// </summary>
+        /// <param name="OrignFolder">褰撳墠鐩綍</param>
+        /// <param name="NewFloder">鏂扮洰褰�</param>
+        public static void FolderCreate(string orignFolder, string NewFloder)
+        {
+            Directory.SetCurrentDirectory(orignFolder);
+            Directory.CreateDirectory(NewFloder);
+        }
+        #endregion
+
+        #region 閫掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欴eleteFolder
+          * 鍔熻兘璇存槑锛氶�掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+          * 鍙�     鏁帮細dir:鏂囦欢澶硅矾寰�
+          * 璋冪敤绀哄垪锛�
+          *            string dir = Server.MapPath("test/");  
+          *            EC.FileObj.DeleteFolder(dir);       
+         *****************************************/
+        /// <summary>
+        /// 閫掑綊鍒犻櫎鏂囦欢澶圭洰褰曞強鏂囦欢
+        /// </summary>
+        /// <param name="dir"></param>
+        /// <returns></returns>
+        public static void DeleteFolder(string dir)
+        {
+            if (Directory.Exists(dir)) //濡傛灉瀛樺湪杩欎釜鏂囦欢澶瑰垹闄や箣
+            {
+                foreach (string d in Directory.GetFileSystemEntries(dir))
+                {
+                    if (File.Exists(d))
+                        File.Delete(d); //鐩存帴鍒犻櫎鍏朵腑鐨勬枃浠�
+                    else
+                        DeleteFolder(d); //閫掑綊鍒犻櫎瀛愭枃浠跺す
+                }
+                Directory.Delete(dir); //鍒犻櫎宸茬┖鏂囦欢澶�
+            }
+
+        }
+        #endregion
+
+        #region 灏嗘寚瀹氭枃浠跺す涓嬮潰鐨勬墍鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰 鏋滅洰鏍囨枃浠跺す涓哄彧璇诲睘鎬у氨浼氭姤閿欍��
+        /****************************************
+          * 鍑芥暟鍚嶇О锛欳opyDir
+          * 鍔熻兘璇存槑锛氬皢鎸囧畾鏂囦欢澶逛笅闈㈢殑鎵�鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰 鏋滅洰鏍囨枃浠跺す涓哄彧璇诲睘鎬у氨浼氭姤閿欍��
+          * 鍙�     鏁帮細srcPath:鍘熷璺緞,aimPath:鐩爣鏂囦欢澶�
+          * 璋冪敤绀哄垪锛�
+          *            string srcPath = Server.MapPath("test/");  
+          *            string aimPath = Server.MapPath("test1/");
+          *            EC.FileObj.CopyDir(srcPath,aimPath);   
+         *****************************************/
+        /// <summary>
+        /// 鎸囧畾鏂囦欢澶逛笅闈㈢殑鎵�鏈夊唴瀹筩opy鍒扮洰鏍囨枃浠跺す涓嬮潰
+        /// </summary>
+        /// <param name="srcPath">鍘熷璺緞</param>
+        /// <param name="aimPath">鐩爣鏂囦欢澶�</param>
+        public static void CopyDir(string srcPath, string aimPath)
+        {
+            try
+            {
+                // 妫�鏌ョ洰鏍囩洰褰曟槸鍚︿互鐩綍鍒嗗壊瀛楃缁撴潫濡傛灉涓嶆槸鍒欐坊鍔犱箣
+                if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
+                    aimPath += Path.DirectorySeparatorChar;
+                // 鍒ゆ柇鐩爣鐩綍鏄惁瀛樺湪濡傛灉涓嶅瓨鍦ㄥ垯鏂板缓涔�
+                if (!Directory.Exists(aimPath))
+                    Directory.CreateDirectory(aimPath);
+                // 寰楀埌婧愮洰褰曠殑鏂囦欢鍒楄〃锛岃閲岄潰鏄寘鍚枃浠朵互鍙婄洰褰曡矾寰勭殑涓�涓暟缁�
+                //濡傛灉浣犳寚鍚慶opy鐩爣鏂囦欢涓嬮潰鐨勬枃浠惰�屼笉鍖呭惈鐩綍璇蜂娇鐢ㄤ笅闈㈢殑鏂规硶
+                //string[] fileList = Directory.GetFiles(srcPath);
+                string[] fileList = Directory.GetFileSystemEntries(srcPath);
+                //閬嶅巻鎵�鏈夌殑鏂囦欢鍜岀洰褰�
+                foreach (string file in fileList)
+                {
+                    //鍏堝綋浣滅洰褰曞鐞嗗鏋滃瓨鍦ㄨ繖涓洰褰曞氨閫掑綊Copy璇ョ洰褰曚笅闈㈢殑鏂囦欢
+
+                    if (Directory.Exists(file))
+                        CopyDir(file, aimPath + Path.GetFileName(file));
+                    //鍚﹀垯鐩存帴Copy鏂囦欢
+                    else
+                        File.Copy(file, aimPath + Path.GetFileName(file), true);
+                }
+
+            }
+            catch (Exception ee)
+            {
+                throw new Exception(ee.ToString());
+            }
+        }
+        #endregion
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs
new file mode 100644
index 0000000..d0d23cd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpContextHelper.cs
@@ -0,0 +1,36 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class HttpContextHelper
+    {
+        public static string GetUserIp(this HttpContext context)
+        {
+            string realIP = null;
+            string forwarded = null;
+            string remoteIpAddress = context.Connection.RemoteIpAddress.ToString();
+            if (context.Request.Headers.ContainsKey("X-Real-IP"))
+            {
+                realIP = context.Request.Headers["X-Real-IP"].ToString();
+                if (realIP != remoteIpAddress)
+                {
+                    remoteIpAddress = realIP;
+                }
+            }
+            if (context.Request.Headers.ContainsKey("X-Forwarded-For"))
+            {
+                forwarded = context.Request.Headers["X-Forwarded-For"].ToString();
+                if (forwarded != remoteIpAddress)
+                {
+                    remoteIpAddress = forwarded;
+                }
+            }
+            return remoteIpAddress;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs
new file mode 100644
index 0000000..068d9d2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/HttpHelper.cs
@@ -0,0 +1,114 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public class HttpHelper
+    {
+        public static async Task<string> GetAsync(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            try
+            {
+                string result = string.Empty;
+                using HttpClient httpClient = new HttpClient();
+                httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                if (headers != null)
+                {
+                    foreach (var header in headers)
+                        httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                }
+
+                result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync();
+                return result;
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.Message);
+            }
+            return null;
+        }
+
+        public static async Task<string> PostAsync(string serviceAddress, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            try
+            {
+                string result = string.Empty;
+                using (HttpContent httpContent = new StringContent(requestJson))
+                {
+                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                    using HttpClient httpClient = new HttpClient();
+                    httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                    if (headers != null)
+                    {
+                        foreach (var header in headers)
+                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+
+                    result = await httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync();
+                }
+                return result;
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.Message);
+            }
+            return null;
+        }
+
+        public static string Get(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            try
+            {
+                string result = string.Empty;
+                using HttpClient httpClient = new HttpClient();
+                httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                foreach (var header in headers)
+                    httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+
+                result = httpClient.GetStringAsync(serviceAddress).Result;
+                return result;
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.Message);
+            }
+            return null;
+        }
+
+        public static string Post(string serviceAddress, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null)
+        {
+            try
+            {
+                string result = string.Empty;
+                using (HttpContent httpContent = new StringContent(requestJson))
+                {
+                    httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+                    using HttpClient httpClient = new HttpClient();
+                    httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+                    if (headers != null)
+                    {
+                        foreach (var header in headers)
+                            httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+                    }
+                    result = httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync().Result;
+                }
+                return result;
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e.Message);
+            }
+            return null;
+        }
+
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs
new file mode 100644
index 0000000..63edd4b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/MethodInfoExtensions.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class MethodInfoExtensions
+    {
+        public static string GetFullName(this MethodInfo method)
+        {
+            if (method.DeclaringType == null)
+            {
+                return $@"{method.Name}";
+            }
+
+            return $"{method.DeclaringType.FullName}.{method.Name}";
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs
new file mode 100644
index 0000000..1707c35
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/ObjectExtension.cs
@@ -0,0 +1,51 @@
+锘縰sing Microsoft.Extensions.Primitives;
+using Microsoft.IdentityModel.Tokens;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class ObjectExtension
+    {
+        public static List<T> DicToIEnumerable<T>(this List<Dictionary<string, object>> dicList)
+        {
+            List<T> list = new List<T>();
+            foreach (Dictionary<string, object> dic in dicList)
+            {
+                list.Add(dic.DicToModel<T>());
+            }
+            return list;
+        }
+
+        public static T DicToModel<T>(this Dictionary<string, object> dic)
+        {
+            T model = Activator.CreateInstance<T>();
+            PropertyInfo[] propertyInfos = typeof(T).GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);
+            foreach (var property in propertyInfos)
+            {
+                object value = null;
+                if (!dic.TryGetValue(property.Name, out value)) 
+                {
+                    if (!dic.TryGetValue(property.Name.FirstLetterToUpper(), out value))
+                    {
+                        if (!dic.TryGetValue(property.Name.FirstLetterToLower(), out value))
+                        {
+                            continue;
+                        }
+                    }
+                }
+                // 妫�鏌ユ槸鍚︿负绌哄瓧绗︿覆
+                if (!string.IsNullOrEmpty(value?.ToString()))
+                {
+                    // 灏嗗�艰浆鎹负灞炴�х殑绫诲瀷骞惰缃睘鎬у��
+                    property.SetValue(model, value.ChangeType(property.PropertyType));
+                }
+            }
+            return model;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs
new file mode 100644
index 0000000..20f5b5b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/RuntimeExtension.cs
@@ -0,0 +1,89 @@
+锘縰sing log4net;
+using Microsoft.Extensions.DependencyModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Loader;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class RuntimeExtension
+    {
+        /// <summary>
+        /// 鑾峰彇椤圭洰绋嬪簭闆嗭紝鎺掗櫎鎵�鏈夌殑绯荤粺绋嬪簭闆�(Microsoft.***銆丼ystem.***绛�)銆丯uget涓嬭浇鍖�
+        /// </summary>
+        /// <returns></returns>
+        public static IList<Assembly> GetAllAssemblies()
+        {
+            var list = new List<Assembly>();
+            var deps = DependencyContext.Default;
+            //鍙姞杞介」鐩腑鐨勭▼搴忛泦
+            var libs = deps.CompileLibraries.Where(lib => !lib.Serviceable && lib.Type == "project"); //鎺掗櫎鎵�鏈夌殑绯荤粺绋嬪簭闆嗐�丯uget涓嬭浇鍖�
+            foreach (var lib in libs)
+            {
+                try
+                {
+                    var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(lib.Name));
+                    list.Add(assembly);
+                }
+                catch (Exception e)
+                {
+                    //Log.Debug(e, "GetAllAssemblies Exception:{ex}", e.Message);
+                }
+            }
+
+            return list;
+        }
+
+        public static Assembly GetAssembly(string assemblyName)
+        {
+            return GetAllAssemblies().FirstOrDefault(assembly => assembly.FullName.Contains(assemblyName));
+        }
+
+        public static IList<Type> GetAllTypes()
+        {
+            var list = new List<Type>();
+            foreach (var assembly in GetAllAssemblies())
+            {
+                var typeInfos = assembly.DefinedTypes;
+                foreach (var typeInfo in typeInfos)
+                {
+                    list.Add(typeInfo.AsType());
+                }
+            }
+
+            return list;
+        }
+
+        public static IList<Type> GetTypesByAssembly(string assemblyName)
+        {
+            var list = new List<Type>();
+            var assembly = AssemblyLoadContext.Default.LoadFromAssemblyName(new AssemblyName(assemblyName));
+            var typeInfos = assembly.DefinedTypes;
+            foreach (var typeInfo in typeInfos)
+            {
+                list.Add(typeInfo.AsType());
+            }
+
+            return list;
+        }
+
+        public static Type GetImplementType(string typeName, Type baseInterfaceType)
+        {
+            return GetAllTypes().FirstOrDefault(t =>
+            {
+                if (t.Name == typeName &&
+                    t.GetTypeInfo().GetInterfaces().Any(b => b.Name == baseInterfaceType.Name))
+                {
+                    var typeInfo = t.GetTypeInfo();
+                    return typeInfo.IsClass && !typeInfo.IsAbstract && !typeInfo.IsGenericType;
+                }
+
+                return false;
+            });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs
new file mode 100644
index 0000000..43f564c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SecurityEncDecryptHelper.cs
@@ -0,0 +1,89 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class SecurityEncDecryptHelper
+    {
+        private static byte[] Keys = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F };
+        /// <summary> 
+        /// DES鍔犲瘑瀛楃涓� 
+        /// </summary> 
+        /// <param name="encryptString">寰呭姞瀵嗙殑瀛楃涓�</param> 
+        /// <param name="encryptKey">鍔犲瘑瀵嗛挜,瑕佹眰涓�16浣�</param> 
+        /// <returns>鍔犲瘑鎴愬姛杩斿洖鍔犲瘑鍚庣殑瀛楃涓诧紝澶辫触杩斿洖婧愪覆</returns> 
+
+        public static string EncryptDES(this string encryptString, string encryptKey)
+        {
+            try
+            {
+                byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 16));
+                byte[] rgbIV = Keys;
+                byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
+
+                using (var DCSP = Aes.Create())
+                {
+                    using (MemoryStream mStream = new MemoryStream())
+                    {
+                        using (CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write))
+                        {
+                            cStream.Write(inputByteArray, 0, inputByteArray.Length);
+                            cStream.FlushFinalBlock();
+                            return Convert.ToBase64String(mStream.ToArray()).Replace('+', '_').Replace('/', '~');
+                        }
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception("瀵嗙爜鍔犲瘑寮傚父" + ex.Message);
+            }
+
+        }
+
+        /// <summary> 
+        /// DES瑙e瘑瀛楃涓� 
+        /// </summary> 
+        /// <param name="decryptString">寰呰В瀵嗙殑瀛楃涓�</param> 
+        /// <param name="decryptKey">瑙e瘑瀵嗛挜,瑕佹眰涓�16浣�,鍜屽姞瀵嗗瘑閽ョ浉鍚�</param> 
+        /// <returns>瑙e瘑鎴愬姛杩斿洖瑙e瘑鍚庣殑瀛楃涓诧紝澶辫触杩旀簮涓�</returns> 
+
+        public static string DecryptDES(this string decryptString, string decryptKey)
+        {
+            byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 16));
+            byte[] rgbIV = Keys;
+            byte[] inputByteArray = Convert.FromBase64String(decryptString.Replace('_', '+').Replace('~', '/'));
+            using (var DCSP = Aes.Create())
+            {
+                using (MemoryStream mStream = new MemoryStream())
+                {
+                    using (CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write))
+                    {
+                        byte[] inputByteArrays = new byte[inputByteArray.Length];
+                        cStream.Write(inputByteArray, 0, inputByteArray.Length);
+                        cStream.FlushFinalBlock();
+                        return Encoding.UTF8.GetString(mStream.ToArray());
+                    }
+                }
+            }
+
+        }
+        public static bool TryDecryptDES(this string decryptString, string decryptKey, out string result)
+        {
+            result = "";
+            try
+            {
+                result = DecryptDES(decryptString, decryptKey);
+                return true;
+            }
+            catch
+            {
+                return false;
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SqlSugarHelper.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SqlSugarHelper.cs
new file mode 100644
index 0000000..c5db36f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/SqlSugarHelper.cs
@@ -0,0 +1,40 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core.Helper
+{
+    public class SqlSugarHelper
+    {
+        //澶氬簱鎯呭喌涓嬩娇鐢ㄨ鏄庯細
+        //濡傛灉鏄浐瀹氬搴撳彲浠ヤ紶 new SqlSugarScope(List<ConnectionConfig>,db=>{}) 鏂囨。锛氬绉熸埛
+        //濡傛灉鏄笉鍥哄畾澶氬簱 鍙互鐪嬫枃妗aas鍒嗗簱
+        //鐢ㄥ崟渚嬫ā寮�
+      //  public static SqlSugarScope DbWCS = new SqlSugarScope(new ConnectionConfig()
+      //  {
+      //      //ConnectionString = DBContext.GetMainConnectionDb().Connection,
+      //      ConnectionString = AppSettings.app(MainDb.ConnectionStringWCS),
+      //      DbType = DbType.SqlServer,//鏁版嵁搴撶被鍨�
+      //      IsAutoCloseConnection = true //涓嶈鎴恡rue瑕佹墜鍔╟lose
+      //  },
+      //db =>
+      //    { 
+      //    });
+      
+        public static SqlSugarScope DbWMS = new SqlSugarScope(new ConnectionConfig()
+        {
+            ConnectionString = DBContext.GetMainConnectionDb().Connection,
+            //ConnectionString = AppSettings.app(MainDb.ConnectionStringWCS),
+            DbType = DbType.SqlServer,//鏁版嵁搴撶被鍨�
+            IsAutoCloseConnection = true //涓嶈鎴恡rue瑕佹墜鍔╟lose
+        },
+      db =>
+      {
+      });
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs
new file mode 100644
index 0000000..dfe3615
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Helper/UtilConvert.cs
@@ -0,0 +1,970 @@
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Web;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_Core.Helper
+{
+    public static class UtilConvert
+    {
+        private static DateTime dateStart = new DateTime(1970, 1, 1, 8, 0, 0);
+
+        private static long longTime = 621355968000000000;
+
+        private static int samllTime = 10000000;
+        /// <summary>
+        /// 鏃堕棿鎴宠浆鎹㈡垚鏃ユ湡
+        /// </summary>
+        /// <param name="timeStamp"></param>
+        /// <returns></returns>
+        public static DateTime GetTimeSpmpToDate(this object timeStamp)
+        {
+            if (timeStamp == null) return dateStart;
+            DateTime dateTime = new DateTime(longTime + Convert.ToInt64(timeStamp) * samllTime, DateTimeKind.Utc).ToLocalTime();
+            return dateTime;
+        }
+
+        public static string Serialize(this object obj, JsonSerializerSettings formatDate = null)
+        {
+            if (obj == null) return null;
+            formatDate = formatDate ?? new JsonSerializerSettings
+            {
+                DateFormatString = "yyyy-MM-dd HH:mm:ss"
+            };
+            return JsonConvert.SerializeObject(obj, formatDate);
+        }
+
+        public static T DeserializeObject<T>(this string json)
+        {
+            if (string.IsNullOrEmpty(json))
+            {
+                return default(T);
+            }
+            if (json == "{}")
+            {
+                json = "[]";
+            }
+            return JsonConvert.DeserializeObject<T>(json);
+        }
+
+        public static string FirstLetterToLower(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToLower() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        public static string FirstLetterToUpper(this string thisValue)
+        {
+            if (string.IsNullOrEmpty(thisValue)) return string.Empty;
+            string result = thisValue.Substring(0, 1).ToUpper() + thisValue.Substring(1, thisValue.Length - 1);
+            return result;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static int ObjToInt(this object thisValue)
+        {
+            int reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static int DoubleToInt(this double thisValue)
+        {
+            int reval = 0;
+
+            return Convert.ToInt32(thisValue);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static int ObjToInt(this object thisValue, int errorValue)
+        {
+            int reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && int.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        public static long ObjToLong(this object thisValue)
+        {
+            long reval = 0;
+            if (thisValue == null) return 0;
+            if (thisValue != DBNull.Value && long.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+        
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static double ObjToMoney(this object thisValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static double ObjToMoney(this object thisValue, double errorValue)
+        {
+            double reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && double.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static string ObjToString(this object thisValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return "";
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static bool IsNotEmptyOrNull(this object thisValue)
+        {
+            return ObjToString(thisValue) != "" && ObjToString(thisValue) != "undefined" && ObjToString(thisValue) != "null";
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static string ObjToString(this object thisValue, string errorValue)
+        {
+            if (thisValue != null) return thisValue.ToString().Trim();
+            return errorValue;
+        }
+
+        public static bool IsNullOrEmpty(this object thisValue) => thisValue == null || thisValue == DBNull.Value || string.IsNullOrWhiteSpace(thisValue.ToString());
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static Decimal ObjToDecimal(this object thisValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return 0;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static Decimal ObjToDecimal(this object thisValue, decimal errorValue)
+        {
+            Decimal reval = 0;
+            if (thisValue != null && thisValue != DBNull.Value && decimal.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static DateTime ObjToDate(this object thisValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                reval = Convert.ToDateTime(thisValue);
+            }
+
+            return reval;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <param name="errorValue"></param>
+        /// <returns></returns>
+        public static DateTime ObjToDate(this object thisValue, DateTime errorValue)
+        {
+            DateTime reval = DateTime.MinValue;
+            if (thisValue != null && thisValue != DBNull.Value && DateTime.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return errorValue;
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static bool ObjToBool(this object thisValue)
+        {
+            bool reval = false;
+            if (thisValue != null && thisValue != DBNull.Value && bool.TryParse(thisValue.ToString(), out reval))
+            {
+                return reval;
+            }
+
+            return reval;
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鏃堕棿鐨勬椂闂存埑
+        /// </summary>
+        /// <param name="thisValue"></param>
+        /// <returns></returns>
+        public static string DateToTimeStamp(this DateTime thisValue)
+        {
+            TimeSpan ts = thisValue - new DateTime(1970, 1, 1, 0, 0, 0, 0);
+            return Convert.ToInt64(ts.TotalSeconds).ToString();
+        }
+
+        public static object ChangeType(this object value, Type type)
+        {
+            if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
+            if (value == null) return null;
+            if (type == value.GetType()) return value;
+            if (type.IsEnum)
+            {
+                if (value is string)
+                    return Enum.Parse(type, value as string);
+                else
+                    return Enum.ToObject(type, value);
+            }
+
+            if (!type.IsInterface && type.IsGenericType)
+            {
+                Type innerType = type.GetGenericArguments()[0];
+                object innerValue = ChangeType(value, innerType);
+                return Activator.CreateInstance(type, new object[] { innerValue });
+            }
+
+            if (value is string && type == typeof(Guid)) return new Guid(value as string);
+            if (value is string && type == typeof(Version)) return new Version(value as string);
+            if (!(value is IConvertible)) return value;
+            return Convert.ChangeType(value, type);
+        }
+
+        public static object ChangeTypeList(this object value, Type type)
+        {
+            if (value == null) return default;
+
+            var gt = typeof(List<>).MakeGenericType(type);
+            dynamic lis = Activator.CreateInstance(gt);
+
+            var addMethod = gt.GetMethod("Add");
+            string values = value.ToString();
+            if (values != null && values.StartsWith("(") && values.EndsWith(")"))
+            {
+                string[] splits;
+                if (values.Contains("\",\""))
+                {
+                    splits = values.Remove(values.Length - 2, 2)
+                        .Remove(0, 2)
+                        .Split("\",\"");
+                }
+                else
+                {
+                    splits = values.Remove(0, 1)
+                        .Remove(values.Length - 2, 1)
+                        .Split(",");
+                }
+
+                foreach (var split in splits)
+                {
+                    var str = split;
+                    if (split.StartsWith("\"") && split.EndsWith("\""))
+                    {
+                        str = split.Remove(0, 1)
+                            .Remove(split.Length - 2, 1);
+                    }
+
+                    addMethod.Invoke(lis, new object[] { ChangeType(str, type) });
+                }
+            }
+
+            return lis;
+        }
+
+        public static string ToJson(this object value)
+        {
+            return JsonConvert.SerializeObject(value);
+        }
+
+        public static bool IsInt(this object obj)
+        {
+            if (obj == null)
+                return false;
+            bool reslut = Int32.TryParse(obj.ToString(), out int _number);
+            return reslut;
+
+        }
+        public static bool IsDate(this object str)
+        {
+            return str.IsDate(out _);
+        }
+        public static bool IsDate(this object str, out DateTime dateTime)
+        {
+            dateTime = DateTime.Now;
+            if (str == null || str.ToString() == "")
+            {
+                return false;
+            }
+            return DateTime.TryParse(str.ToString(), out dateTime);
+        }
+
+        /// <summary>
+        /// 鏍规嵁浼犲叆鏍煎紡鍒ゆ柇鏄惁涓哄皬鏁�
+        /// </summary>
+        /// <param name="str"></param>
+        /// <param name="formatString">18,5</param>
+        /// <returns></returns>
+        public static bool IsNumber(this string str, string formatString)
+        {
+            if (string.IsNullOrEmpty(str)) return false;
+
+            return Regex.IsMatch(str, @"^[+-]?\d*[.]?\d*$");
+        }
+
+        public static bool IsGuid(this string guid)
+        {
+            Guid newId;
+            return guid.GetGuid(out newId);
+        }
+
+        public static bool GetGuid(this string guid, out Guid outId)
+        {
+            Guid emptyId = Guid.Empty;
+            return Guid.TryParse(guid, out outId);
+        }
+
+        /// <summary>
+        /// 杞崲涓虹煭鏁村瀷 qy 2024-7-15
+        /// </summary>
+        /// <param name="data">鏁版嵁</param>
+        public static short ToShort(this object data)
+        {
+            if (data == null)
+                return 0;
+            short result;
+            var success = short.TryParse(data.ToString(), out result);
+            if (success)
+                return result;
+            try
+            {
+                return Convert.ToInt16(data);
+            }
+            catch (Exception)
+            {
+                return 0;
+            }
+        }
+
+        /// <summary>
+        /// 杞崲涓洪珮绮惧害娴偣鏁�,骞舵寜鎸囧畾鐨勫皬鏁颁綅4鑸�5鍏� qy 2024-7-15
+        /// </summary>
+        /// <param name="data">鏁版嵁</param>
+        /// <param name="digits">灏忔暟浣嶆暟</param>
+        public static decimal ToDecimal(this object data, int digits)
+        {
+            return Math.Round(ObjToDecimal(data), digits);
+        }
+
+       
+
+        /// <summary>
+        /// 鏋氫妇杞琇ist qy 2024-7-15
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static List<object> GetEnumList<T>()
+        {
+            List<object> list = new List<object>();
+            var t = typeof(T);
+            foreach (var item in Enum.GetValues(typeof(T)))
+            {
+                FieldInfo f = t.GetField(Enum.GetName(typeof(T), item));
+                var r = (System.ComponentModel.DescriptionAttribute[])f.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
+                list.Add(new { ID = item, value = Enum.GetName(typeof(T), item), name = r[0].Description });
+            }
+            return list;
+        }
+
+        /// <summary> 
+        /// 楠岃瘉鍔ㄦ�佺被鍨嬪厓绱犳槸鍚︿负绌� qy 2024-7-15
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static bool CheckDynamic(object obj)
+        {
+            return (obj != null && Convert.ToString(obj) != "") ? true : false;
+        }
+
+        /// <summary>
+        /// 鍔ㄦ�佺被鍨嬪厓绱犺浆瀛楃涓插苟瑙g爜 qy 2024-7-15
+        /// </summary>
+        /// <param name="obj"></param>
+        /// <returns></returns>
+        public static string DynamicToString(object obj)
+        {
+            return CheckDynamic(obj) ? HttpUtility.UrlDecode(Convert.ToString(obj).Trim()) : "";
+        }
+
+        /// <summary> 
+        /// DataTable杞负json  qy 2024-7-15
+        /// </summary> 
+        /// <param name="parObjRefDataTable">DataTable</param> 
+        /// <returns>json鏁版嵁</returns> 
+        public static string ToJson(this DataTable parObjRefDataTable)
+        {
+            List<object> objArrList = new List<object>();
+
+            foreach (DataRow objDataRow in parObjRefDataTable.Rows)
+            {
+                Dictionary<string, object> objResult = new Dictionary<string, object>();
+
+                foreach (DataColumn objDataColumn in parObjRefDataTable.Columns)
+                    objResult.Add(objDataColumn.ColumnName, objDataRow[objDataColumn].ToString());
+
+                objArrList.Add(objResult);
+            }
+
+            return ToJson(objArrList);
+        }
+        /// <summary>
+        /// Json杞琇ist qy 2024-7-15
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="parJson"></param>
+        /// <returns></returns>
+        public static List<T> JsonToList<T>(this string parJson)
+        {
+            if (string.IsNullOrWhiteSpace(parJson))
+            {
+                return new List<T>();
+            }
+            else
+            {
+                return JsonConvert.DeserializeObject<List<T>>(parJson);
+            }
+        }
+
+        /// <summary>
+        /// 鏃ユ湡杞负unix鍊�
+        /// </summary>
+        /// <param name="dt"></param>
+        /// <param name="utc">T:鎸塙TC鏃堕棿璁$畻(榛樿);F:鎸夋湰鍦版椂闂磋绠�</param>
+        /// <returns></returns>
+        public static double ToUnix(this DateTime dt, bool utc = true)
+        {
+            double intResult = 0;
+            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
+            intResult = (dt - startTime).TotalSeconds;
+            intResult = Math.Round(intResult, 0);
+            return intResult;
+        }
+
+        #region 鍒ゆ柇鏄惁涓哄瓧绗︿覆 qy 2024-7-15
+        /// <summary>
+        /// 鍒ゆ柇瀛楃涓叉槸鍚︿负鍚堟硶鐨刯son瀛楃涓� qy 2024-7-15
+        /// </summary>
+        /// <param name="json"></param>
+        /// <returns></returns>
+        public static bool IsJson(string json)
+        {
+            int errIndex;
+            return IsJson(json, out errIndex);
+        }
+        public static bool IsJson(string json, out int errIndex)
+        {
+            errIndex = 0;
+            if (IsJsonStart(ref json))
+            {
+                CharState cs = new CharState();
+                char c;
+                for (int i = 0; i < json.Length; i++)
+                {
+                    c = json[i];
+                    if (SetCharState(c, ref cs) && cs.childrenStart)//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+                    {
+                        string item = json.Substring(i);
+                        int err;
+                        int length = GetValueLength(item, true, out err);
+                        cs.childrenStart = false;
+                        if (err > 0)
+                        {
+                            errIndex = i + err;
+                            return false;
+                        }
+                        i = i + length - 1;
+                    }
+                    if (cs.isError)
+                    {
+                        errIndex = i;
+                        return false;
+                    }
+                }
+
+                return !cs.arrayStart && !cs.jsonStart;
+            }
+            return false;
+        }
+
+        private static bool IsJsonStart(ref string json)
+        {
+            if (!string.IsNullOrEmpty(json))
+            {
+                json = json.Trim('\r', '\n', ' ');
+                if (json.Length > 1)
+                {
+                    char s = json[0];
+                    char e = json[json.Length - 1];
+                    return (s == '{' && e == '}') || (s == '[' && e == ']');
+                }
+            }
+            return false;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鍊肩殑闀垮害锛堝綋Json鍊煎祵濂椾互"{"鎴�"["寮�澶存椂锛� qy 2024-7-15
+        /// </summary>
+        private static int GetValueLength(string json, bool breakOnErr, out int errIndex)
+        {
+            errIndex = 0;
+            int len = 0;
+            if (!string.IsNullOrEmpty(json))
+            {
+                CharState cs = new CharState();
+                char c;
+                for (int i = 0; i < json.Length; i++)
+                {
+                    c = json[i];
+                    if (!SetCharState(c, ref cs))//璁剧疆鍏抽敭绗﹀彿鐘舵�併��
+                    {
+                        if (!cs.jsonStart && !cs.arrayStart)//json缁撴潫锛屽張涓嶆槸鏁扮粍锛屽垯閫�鍑恒��
+                        {
+                            break;
+                        }
+                    }
+                    else if (cs.childrenStart)//姝e父瀛楃锛屽�肩姸鎬佷笅銆�
+                    {
+                        int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//閫掑綊瀛愬�硷紝杩斿洖涓�涓暱搴︺�傘�傘��
+                        cs.childrenStart = false;
+                        cs.valueStart = 0;
+                        //cs.state = 0;
+                        i = i + length - 1;
+                    }
+                    if (breakOnErr && cs.isError)
+                    {
+                        errIndex = i;
+                        return i;
+                    }
+                    if (!cs.jsonStart && !cs.arrayStart)//璁板綍褰撳墠缁撴潫浣嶇疆銆�
+                    {
+                        len = i + 1;//闀垮害姣旂储寮�+1
+                        break;
+                    }
+                }
+            }
+            return len;
+        }
+
+        /// <summary>
+        /// 瀛楃鐘舵�� qy 2024-7-15
+        /// </summary>
+        private class CharState
+        {
+            internal bool jsonStart = false;//浠� "{"寮�濮嬩簡...
+            internal bool setDicValue = false;// 鍙互璁剧疆瀛楀吀鍊间簡銆�
+            internal bool escapeChar = false;//浠�"\"杞箟绗﹀彿寮�濮嬩簡
+            /// <summary>
+            /// 鏁扮粍寮�濮嬨�愪粎绗竴寮�澶存墠绠椼�戯紝鍊煎祵濂楃殑浠ャ�恈hildrenStart銆戞潵鏍囪瘑銆�
+            /// </summary>
+            internal bool arrayStart = false;//浠�"[" 绗﹀彿寮�濮嬩簡
+            internal bool childrenStart = false;//瀛愮骇宓屽寮�濮嬩簡銆�
+            /// <summary>
+            /// 銆�0 鍒濆鐘舵�侊紝鎴� 閬囧埌鈥�,鈥濋�楀彿銆戯紱銆�1 閬囧埌鈥滐細鈥濆啋鍙枫��
+            /// </summary>
+            internal int state = 0;
+
+            /// <summary>
+            /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+            /// </summary>
+            internal int keyStart = 0;
+            /// <summary>
+            /// 銆�-1 鍙栧�肩粨鏉熴�戙��0 鏈紑濮嬨�戙��1 鏃犲紩鍙峰紑濮嬨�戙��2 鍗曞紩鍙峰紑濮嬨�戙��3 鍙屽紩鍙峰紑濮嬨��
+            /// </summary>
+            internal int valueStart = 0;
+            internal bool isError = false;//鏄惁璇硶閿欒銆�
+
+            internal void CheckIsError(char c)//鍙綋鎴愪竴绾у鐞嗭紙鍥犱负GetLength浼氶�掑綊鍒版瘡涓�涓瓙椤瑰鐞嗭級
+            {
+                if (keyStart > 1 || valueStart > 1)
+                {
+                    return;
+                }
+                //绀轰緥 ["aa",{"bbbb":123,"fff","ddd"}] 
+                switch (c)
+                {
+                    case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+                        isError = jsonStart && state == 0;//閲嶅寮�濮嬮敊璇� 鍚屾椂涓嶆槸鍊煎鐞嗐��
+                        break;
+                    case '}':
+                        isError = !jsonStart || (keyStart != 0 && state == 0);//閲嶅缁撴潫閿欒 鎴栬�� 鎻愬墠缁撴潫{"aa"}銆傛甯哥殑鏈墈}
+                        break;
+                    case '[':
+                        isError = arrayStart && state == 0;//閲嶅寮�濮嬮敊璇�
+                        break;
+                    case ']':
+                        isError = !arrayStart || jsonStart;//閲嶅寮�濮嬮敊璇� 鎴栬�� Json 鏈粨鏉�
+                        break;
+                    case '"':
+                    case '\'':
+                        isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+                        if (!isError)
+                        {
+                            //閲嶅寮�濮� [""",{"" "}]
+                            isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1);
+                        }
+                        if (!isError && arrayStart && !jsonStart && c == '\'')//['aa',{}]
+                        {
+                            isError = true;
+                        }
+                        break;
+                    case ':':
+                        isError = !jsonStart || state == 1;//閲嶅鍑虹幇銆�
+                        break;
+                    case ',':
+                        isError = !(jsonStart || arrayStart); //json 鎴栨暟缁勫紑濮嬨��
+                        if (!isError)
+                        {
+                            if (jsonStart)
+                            {
+                                isError = state == 0 || (state == 1 && valueStart > 1);//閲嶅鍑虹幇銆�
+                            }
+                            else if (arrayStart)//["aa,] [,]  [{},{}]
+                            {
+                                isError = keyStart == 0 && !setDicValue;
+                            }
+                        }
+                        break;
+                    case ' ':
+                    case '\r':
+                    case '\n'://[ "a",\r\n{} ]
+                    case '\0':
+                    case '\t':
+                        break;
+                    default: //鍊煎紑澶淬�傘��
+                        isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);//
+                        break;
+                }
+                //if (isError)
+                //{
+
+                //}
+            }
+        }
+        /// <summary>
+        /// 璁剧疆瀛楃鐘舵��(杩斿洖true鍒欎负鍏抽敭璇嶏紝杩斿洖false鍒欏綋涓烘櫘閫氬瓧绗﹀鐞嗭級 qy 2024-7-15
+        /// </summary>
+        private static bool SetCharState(char c, ref CharState cs)
+        {
+            cs.CheckIsError(c);
+            switch (c)
+            {
+                case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}]
+                    #region 澶ф嫭鍙�
+                    if (cs.keyStart <= 0 && cs.valueStart <= 0)
+                    {
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        if (cs.jsonStart && cs.state == 1)
+                        {
+                            cs.childrenStart = true;
+                        }
+                        else
+                        {
+                            cs.state = 0;
+                        }
+                        cs.jsonStart = true;//寮�濮嬨��
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case '}':
+                    #region 澶ф嫭鍙风粨鏉�
+                    if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart)
+                    {
+                        cs.jsonStart = false;//姝e父缁撴潫銆�
+                        cs.state = 0;
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        cs.setDicValue = true;
+                        return true;
+                    }
+                    // cs.isError = !cs.jsonStart && cs.state == 0;
+                    #endregion
+                    break;
+                case '[':
+                    #region 涓嫭鍙峰紑濮�
+                    if (!cs.jsonStart)
+                    {
+                        cs.arrayStart = true;
+                        return true;
+                    }
+                    else if (cs.jsonStart && cs.state == 1)
+                    {
+                        cs.childrenStart = true;
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case ']':
+                    #region 涓嫭鍙风粨鏉�
+                    if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//杩欐牱缁撴潫銆�
+                    {
+                        cs.keyStart = 0;
+                        cs.valueStart = 0;
+                        cs.arrayStart = false;
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case '"':
+                case '\'':
+                    #region 寮曞彿
+                    if (cs.jsonStart || cs.arrayStart)
+                    {
+                        if (cs.state == 0)//key闃舵,鏈夊彲鑳芥槸鏁扮粍["aa",{}]
+                        {
+                            if (cs.keyStart <= 0)
+                            {
+                                cs.keyStart = (c == '"' ? 3 : 2);
+                                return true;
+                            }
+                            else if ((cs.keyStart == 2 && c == '\'') || (cs.keyStart == 3 && c == '"'))
+                            {
+                                if (!cs.escapeChar)
+                                {
+                                    cs.keyStart = -1;
+                                    return true;
+                                }
+                                else
+                                {
+                                    cs.escapeChar = false;
+                                }
+                            }
+                        }
+                        else if (cs.state == 1 && cs.jsonStart)//鍊奸樁娈靛繀椤绘槸Json寮�濮嬩簡銆�
+                        {
+                            if (cs.valueStart <= 0)
+                            {
+                                cs.valueStart = (c == '"' ? 3 : 2);
+                                return true;
+                            }
+                            else if ((cs.valueStart == 2 && c == '\'') || (cs.valueStart == 3 && c == '"'))
+                            {
+                                if (!cs.escapeChar)
+                                {
+                                    cs.valueStart = -1;
+                                    return true;
+                                }
+                                else
+                                {
+                                    cs.escapeChar = false;
+                                }
+                            }
+
+                        }
+                    }
+                    #endregion
+                    break;
+                case ':':
+                    #region 鍐掑彿
+                    if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0)
+                    {
+                        if (cs.keyStart == 1)
+                        {
+                            cs.keyStart = -1;
+                        }
+                        cs.state = 1;
+                        return true;
+                    }
+                    // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1);
+                    #endregion
+                    break;
+                case ',':
+                    #region 閫楀彿 //["aa",{aa:12,}]
+
+                    if (cs.jsonStart)
+                    {
+                        if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1)
+                        {
+                            cs.state = 0;
+                            cs.keyStart = 0;
+                            cs.valueStart = 0;
+                            //if (cs.valueStart == 1)
+                            //{
+                            //    cs.valueStart = 0;
+                            //}
+                            cs.setDicValue = true;
+                            return true;
+                        }
+                    }
+                    else if (cs.arrayStart && cs.keyStart <= 2)
+                    {
+                        cs.keyStart = 0;
+                        //if (cs.keyStart == 1)
+                        //{
+                        //    cs.keyStart = -1;
+                        //}
+                        return true;
+                    }
+                    #endregion
+                    break;
+                case ' ':
+                case '\r':
+                case '\n'://[ "a",\r\n{} ]
+                case '\0':
+                case '\t':
+                    if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart && 
+                    {
+                        return true;//璺宠繃绌烘牸銆�
+                    }
+                    break;
+                default: //鍊煎紑澶淬�傘��
+                    if (c == '\\') //杞箟绗﹀彿
+                    {
+                        if (cs.escapeChar)
+                        {
+                            cs.escapeChar = false;
+                        }
+                        else
+                        {
+                            cs.escapeChar = true;
+                            return true;
+                        }
+                    }
+                    else
+                    {
+                        cs.escapeChar = false;
+                    }
+                    if (cs.jsonStart || cs.arrayStart) // Json 鎴栨暟缁勫紑濮嬩簡銆�
+                    {
+                        if (cs.keyStart <= 0 && cs.state == 0)
+                        {
+                            cs.keyStart = 1;//鏃犲紩鍙风殑
+                        }
+                        else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//鍙湁Json寮�濮嬫墠鏈夊�笺��
+                        {
+                            cs.valueStart = 1;//鏃犲紩鍙风殑
+                        }
+                    }
+                    break;
+            }
+            return false;
+        }
+
+        #endregion
+
+        public static LinqExpressionType GetLinqCondition(this string stringType)
+        {
+            LinqExpressionType linqExpression;
+            switch (stringType)
+            {
+                case HtmlElementType.Contains:
+                    linqExpression = LinqExpressionType.In;
+                    break;
+                case HtmlElementType.thanorequal:
+                    linqExpression = LinqExpressionType.ThanOrEqual;
+                    break;
+                case HtmlElementType.lessorequal:
+                    linqExpression = LinqExpressionType.LessThanOrEqual;
+                    break;
+                case HtmlElementType.GT:
+                    linqExpression = LinqExpressionType.GreaterThan;
+                    break;
+                case HtmlElementType.lt:
+                    linqExpression = LinqExpressionType.LessThan;
+                    break;
+                case HtmlElementType.like:
+                    linqExpression = LinqExpressionType.Contains;
+                    break;
+                default:
+                    linqExpression = LinqExpressionType.Equal;
+                    break;
+            }
+            return linqExpression;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs
new file mode 100644
index 0000000..21bbef2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HostedService/SeedDataHostedService.cs
@@ -0,0 +1,72 @@
+锘縰sing Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core
+{
+    public sealed class SeedDataHostedService : IHostedService
+    {
+        private readonly DBContext _dbContext;
+        private readonly ILogger<SeedDataHostedService> _logger;
+        private readonly string _webRootPath;
+        private readonly IServiceProvider _serviceProvider;
+
+        public SeedDataHostedService(
+            IServiceProvider serviceProvider,
+            IWebHostEnvironment webHostEnvironment,
+            ILogger<SeedDataHostedService> logger)
+        {
+            _serviceProvider = serviceProvider;
+            _logger = logger;
+            _webRootPath = webHostEnvironment.WebRootPath;
+
+            using var scope = _serviceProvider.CreateScope();
+
+            var dbContext = scope.ServiceProvider.GetService<DBContext>();
+            //dbContext.Db.Aop.DataExecuting = SqlSugarAop.DataExecuting;
+            _dbContext = dbContext;
+        }
+
+        public async Task StartAsync(CancellationToken cancellationToken)
+        {
+            _logger.LogInformation("Start Initialization Db Seed Service!");
+            await DoWork();
+        }
+
+        private async Task DoWork()
+        {
+            try
+            {
+                //if (AppSettings.app("AppSettings", "SeedDBEnabled").ObjToBool() || AppSettings.app("AppSettings", "SeedDBDataEnabled").ObjToBool())
+                {
+                    // 浣跨敤 myScopedService 鎵ц浠诲姟
+
+                    //await DBSeed.SeedAsync(_dbContext, _webRootPath);
+
+                    //澶氱鎴� 鍚屾
+                    //await DBSeed.TenantSeedAsync(_dbContext);
+                }
+            }
+            catch (Exception ex)
+            {
+                _logger.LogError(ex, "Error occured seeding the Database.");
+                throw;
+            }
+        }
+
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            _logger.LogInformation("Stop Initialization Db Seed Service!");
+            return Task.CompletedTask;
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs
new file mode 100644
index 0000000..710a5b0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/AspNetUser.cs
@@ -0,0 +1,201 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.IdentityModel.Tokens.Jwt;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEA_Core.HttpContextUser
+{
+    public class AspNetUser : IUser
+    {
+        private readonly IHttpContextAccessor _accessor;
+        //private readonly ILogger<AspNetUser> _logger;
+
+        public AspNetUser(IHttpContextAccessor accessor/*, ILogger<AspNetUser> logger*/)
+        {
+            _accessor = accessor;
+            /*_logger = logger;*/
+        }
+
+        public string UserName => UserInfo.UserName;
+
+        //private string GetName()
+        //{
+        //    if (IsAuthenticated() && _accessor.HttpContext.User.Identity.Name.IsNotEmptyOrNull())
+        //    {
+        //        return _accessor.HttpContext.User.Identity.Name;
+        //    }
+        //    else
+        //    {
+        //        if (!string.IsNullOrEmpty(GetToken()))
+        //        {
+        //            var getNameType = /*Permissions.IsUseIds4 ? */"name" /*: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"*/;
+        //            return GetUserInfoFromToken(getNameType).FirstOrDefault().ObjToString();
+        //        }
+        //    }
+
+        //    return "";
+        //}
+
+        public int UserId => GetClaimValueByType("jti").FirstOrDefault().ObjToInt();
+        public long TenantId => UserInfo.TenantId;
+
+        public int RoleId => UserInfo.RoleId;
+
+        public string Token => "throw new NotImplementedException()";
+
+        public int SystemType => UserInfo.SystemType;
+
+        public int MenuType => (_accessor.HttpContext?.Request.Headers.ContainsKey("uniapp") ?? false) ? 1 : 0;
+
+        public bool IsAuthenticated()
+        {
+            return _accessor.HttpContext.User.Identity.IsAuthenticated;
+        }
+
+
+        public string GetToken()
+        {
+            return _accessor.HttpContext?.Request?.Headers["Authorization"].ObjToString().Replace("Bearer ", "");
+        }
+
+        private UserInfo _userInfo { get; set; }
+        private UserInfo UserInfo
+        {
+            get
+            {
+                if (_userInfo != null)
+                    return _userInfo;
+
+                SqlSugarClient sqlSugarClient = new SqlSugarClient(new ConnectionConfig
+                {
+                    ConfigId = MainDb.CurrentDbConnId,
+                    DbType = MainDb.DbType,
+                    //ConnectionString = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                    ConnectionString = AppSettings.app(MainDb.ConnectionString),
+                    IsAutoCloseConnection = true
+                });
+
+                dynamic userInfo = sqlSugarClient.Queryable(MainDb.UserTableName, "x").Where(MainDb.UserId, "=", UserId).Select(GetUserInfoSelectModels()).First();
+                if (userInfo != null)
+                {
+                    _userInfo = new UserInfo()
+                    {
+                        RoleId = userInfo.Role_Id,
+                        TenantId = userInfo.TenantId,
+                        SystemType = userInfo.SystemType,
+                        UserName = userInfo.UserName,
+                    };
+                    return _userInfo;
+                }
+
+                return new UserInfo();
+            }
+        }
+
+        public bool IsSuperAdmin => IsRoleIdSuperAdmin(RoleId);
+
+        public List<Permissions> Permissions => throw new NotImplementedException();
+
+        public UserInfo GetCurrentUserInfo()
+        {
+            return UserInfo;
+        }
+
+        public List<SelectModel> GetUserInfoSelectModels()
+        {
+            List<SelectModel> selectModels = new List<SelectModel>()
+            {
+                new() {
+                    FieldName = MainDb.TenantId
+                },
+                new() {
+                    FieldName = MainDb.RoleId,
+                },
+                new() {
+                    FieldName = MainDb.SystemType
+                },
+                new() {
+                    FieldName = MainDb.UserName
+                }
+            };
+            return selectModels;
+        }
+
+        public List<string> GetUserInfoFromToken(string ClaimType)
+        {
+            var jwtHandler = new JwtSecurityTokenHandler();
+            var token = "";
+
+            token = GetToken();
+            // token鏍¢獙
+            if (token.IsNotEmptyOrNull() && jwtHandler.CanReadToken(token))
+            {
+                JwtSecurityToken jwtToken = jwtHandler.ReadJwtToken(token);
+
+                return (from item in jwtToken.Claims
+                        where item.Type == ClaimType
+                        select item.Value).ToList();
+            }
+
+            return new List<string>() { };
+        }
+
+        //public MessageModel<string> MessageModel { get; set; }
+
+        public IEnumerable<Claim> GetClaimsIdentity()
+        {
+            if (_accessor.HttpContext != null)
+            {
+
+                var claims = _accessor.HttpContext.User.Claims.ToList();
+                var headers = _accessor.HttpContext.Request.Headers;
+                foreach (var header in headers)
+                {
+                    claims.Add(new Claim(header.Key, header.Value));
+                }
+                return claims;
+            }
+            return ArraySegment<Claim>.Empty;
+        }
+
+        public List<string> GetClaimValueByType(string ClaimType)
+        {
+            return (from item in GetClaimsIdentity()
+                    where item.Type == ClaimType
+                    select item.Value).ToList();
+        }
+
+        public bool IsRoleIdSuperAdmin(int roleId)
+        {
+            return roleId == 1;
+        }
+    }
+
+    public class UserInfo
+    {
+        public long TenantId { get; set; }
+
+        public int RoleId { get; set; }
+
+        public int SystemType { get; set; }
+
+        public string UserName { get; set; }
+
+        public int UserId { get; set; }
+
+        public string UserTrueName { get; set; }
+
+        public string HeadImageUrl { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs
new file mode 100644
index 0000000..439c3d6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/HttpContextUser/IUser.cs
@@ -0,0 +1,58 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Claims;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.HttpContextUser
+{
+    public interface IUser
+    {
+        /// <summary>
+        /// 鍚嶇О
+        /// </summary>
+        string UserName { get; }
+
+        /// <summary>
+        /// UserId
+        /// </summary>
+        int UserId { get; }
+
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        long TenantId { get; }
+
+        int RoleId { get;}
+
+        string Token { get; }
+
+        int MenuType { get; }
+
+        int SystemType { get; }
+
+        /// <summary>
+        /// 鏄惁璁よ瘉
+        /// </summary>
+        /// <returns></returns>
+        bool IsAuthenticated();
+
+
+        IEnumerable<Claim> GetClaimsIdentity();
+        List<string> GetClaimValueByType(string ClaimType);
+
+        string GetToken();
+        List<string> GetUserInfoFromToken(string ClaimType);
+
+        bool IsSuperAdmin {  get; }
+
+        bool IsRoleIdSuperAdmin(int roleId);
+
+        List<Permissions> Permissions { get; }
+
+        UserInfo GetCurrentUserInfo();
+
+        //MessageModel<string> MessageModel { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs
new file mode 100644
index 0000000..98e47b1
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/IDependency.cs
@@ -0,0 +1,12 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core
+{
+    public interface IDependency
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs
new file mode 100644
index 0000000..2366ffe
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/LogLock.cs
@@ -0,0 +1,93 @@
+锘縰sing log4net;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.LogHelper
+{
+    public class LogLock
+    {
+        private static readonly ILog log = LogManager.GetLogger(typeof(LogLock));
+        static ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim();
+        static int WritedCount = 0;
+        static int FailedCount = 0;
+        static string _contentRoot = string.Empty;
+
+        public LogLock(string contentPath)
+        {
+            _contentRoot = contentPath;
+        }
+
+        public static void OutLogAOP(string prefix, string[] dataParas, bool IsHeader = true)
+        {
+            OutSql2LogToFile(prefix, dataParas, IsHeader);
+        }
+
+        public static void OutSql2LogToFile(string prefix, string[] dataParas, bool IsHeader = true, bool isWrt = false)
+        {
+            try
+            {
+                //璁剧疆璇诲啓閿佷负鍐欏叆妯″紡鐙崰璧勬簮锛屽叾浠栧啓鍏ヨ姹傞渶瑕佺瓑寰呮湰娆″啓鍏ョ粨鏉熶箣鍚庢墠鑳界户缁啓鍏�
+                //娉ㄦ剰锛氶暱鏃堕棿鎸佹湁璇荤嚎绋嬮攣鎴栧啓绾跨▼閿佷細浣垮叾浠栫嚎绋嬪彂鐢熼ゥ楗� (starve)銆� 涓轰簡寰楀埌鏈�濂界殑鎬ц兘锛岄渶瑕佽�冭檻閲嶆柊鏋勯�犲簲鐢ㄧ▼搴忎互灏嗗啓璁块棶鐨勬寔缁椂闂村噺灏戝埌鏈�灏忋��
+                //      浠庢�ц兘鏂归潰鑰冭檻锛岃姹傝繘鍏ュ啓鍏ユā寮忓簲璇ョ揣璺熸枃浠舵搷浣滀箣鍓嶏紝鍦ㄦ澶勮繘鍏ュ啓鍏ユā寮忎粎鏄负浜嗛檷浣庝唬鐮佸鏉傚害
+                //      鍥犺繘鍏ヤ笌閫�鍑哄啓鍏ユā寮忓簲鍦ㄥ悓涓�涓猼ry finally璇彞鍧楀唴锛屾墍浠ュ湪璇锋眰杩涘叆鍐欏叆妯″紡涔嬪墠涓嶈兘瑙﹀彂寮傚父锛屽惁鍒欓噴鏀炬鏁板ぇ浜庤姹傛鏁板皢浼氳Е鍙戝紓甯�
+                LogWriteLock.EnterWriteLock();
+
+                var folderPath = Path.Combine(_contentRoot, "Log");
+                if (!Directory.Exists(folderPath))
+                {
+                    Directory.CreateDirectory(folderPath);
+                }
+                //string logFilePath = Path.Combine(path, $@"{filename}.log");
+                var logFilePath = FileHelper.GetAvailableFileWithPrefixOrderSize(folderPath, prefix);
+
+                var now = DateTime.Now;
+                string logContent = String.Join("\r\n", dataParas);
+                if (IsHeader)
+                {
+                    logContent = (
+                       "--------------------------------\r\n" +
+                       DateTime.Now + "|\r\n" +
+                       String.Join("\r\n", dataParas) + "\r\n"
+                       );
+                }
+                else
+                {
+                    logContent = (
+                       dataParas[1] + ",\r\n"
+                       );
+                }
+
+                //if (logContent.IsNotEmptyOrNull() && logContent.Length > 500)
+                //{
+                //    logContent = logContent.Substring(0, 500) + "\r\n";
+                //}
+                if (isWrt)
+                {
+                    System.IO.File.WriteAllText(logFilePath, logContent);
+                }
+                else
+                {
+                    System.IO.File.AppendAllText(logFilePath, logContent);
+                }
+                WritedCount++;
+            }
+            catch (Exception e)
+            {
+                //Console.Write(e.Message);
+                FailedCount++;
+            }
+            finally
+            {
+                //閫�鍑哄啓鍏ユā寮忥紝閲婃斁璧勬簮鍗犵敤
+                //娉ㄦ剰锛氫竴娆¤姹傚搴斾竴娆¢噴鏀�
+                //      鑻ラ噴鏀炬鏁板ぇ浜庤姹傛鏁板皢浼氳Е鍙戝紓甯竅鍐欏叆閿佸畾鏈粡淇濇寔鍗宠閲婃斁]
+                //      鑻ヨ姹傚鐞嗗畬鎴愬悗鏈噴鏀惧皢浼氳Е鍙戝紓甯竅姝ゆā寮忎笉涓嬪厑璁镐互閫掑綊鏂瑰紡鑾峰彇鍐欏叆閿佸畾]
+                LogWriteLock.ExitWriteLock();
+            }
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs
new file mode 100644
index 0000000..77039f9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/Logger.cs
@@ -0,0 +1,165 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using SqlSugar;
+using SqlSugar.Extensions;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_Core.Seed;
+
+namespace WIDESEAWCS_Core.LogHelper
+{
+    public static class Logger
+    {
+        public static ConcurrentQueue<dynamic> loggerQueueData = new ConcurrentQueue<dynamic>();
+        static Logger()
+        {
+            Task.Run(() =>
+            {
+                StartWriteLog();
+            });
+
+        }
+
+        static void StartWriteLog()
+        {
+            DataTable queueTable = CreateEmptyTable();
+            while (true)
+            {
+                try
+                {
+                    if (loggerQueueData.Count() > 0 && queueTable.Rows.Count < 500)
+                    {
+                        DequeueToTable(queueTable); continue;
+                    }
+                    //姣�5绉掑啓涓�娆℃暟鎹�
+                    Thread.Sleep(5000);
+
+                    if (queueTable.Rows.Count == 0) { continue; }
+
+                    SqlSugarScope sugarClient = new SqlSugarScope(new ConnectionConfig()
+                    {
+                        ConnectionString = DBContext.GetMainConnectionDb().Connection,
+                        IsAutoCloseConnection = true,
+                        DbType = MainDb.DbType,
+                    });
+
+                    int rows = sugarClient.Fastest<DataTable>().AS("Sys_Log").BulkCopy(queueTable);
+
+                    queueTable.Clear();
+                }
+                catch (Exception ex)
+                {
+                    Console.WriteLine(ex.ToString());
+                }
+            }
+        }
+
+        private static void DequeueToTable(DataTable queueTable)
+        {
+            loggerQueueData.TryDequeue(out dynamic log);
+            if (log != null)
+            {
+                DataRow row = queueTable.NewRow();
+                if (log.BeginDate == null || log.BeginDate?.Year < 2010)
+                {
+                    log.BeginDate = DateTime.Now;
+                }
+                if (log.EndDate == null)
+                {
+                    log.EndDate = DateTime.Now;
+                }
+                //  row["Id"] = log.Id;
+                row["RequestParam"] = log.RequestParam?.Replace("\r\n", "");
+                row["ResponseParam"] = log.ResponseParam?.Replace("\r\n", "");
+                //row["Success"] = log.Success ?? -1;
+                row["BeginDate"] = log.BeginDate;
+                row["EndDate"] = log.EndDate;
+                row["ElapsedTime"] = ((DateTime)log.EndDate - (DateTime)log.BeginDate).TotalMilliseconds;
+                row["UserIP"] = log.UserIP;
+                row["Url"] = log.Url;
+                row["UserId"] = log.UserId ?? -1;
+                row["UserName"] = log.UserName;
+                queueTable.Rows.Add(row);
+            }
+        }
+
+        private static DataTable CreateEmptyTable()
+        {
+            DataTable queueTable = new DataTable();
+            queueTable.Columns.Add("BeginDate", Type.GetType("System.DateTime"));
+            queueTable.Columns.Add("ElapsedTime", Type.GetType("System.Int32"));
+            queueTable.Columns.Add("EndDate", Type.GetType("System.DateTime"));
+            queueTable.Columns.Add("RequestParam", typeof(string));
+            queueTable.Columns.Add("ResponseParam", typeof(string));
+            //queueTable.Columns.Add("Success", Type.GetType("System.Int32"));
+            queueTable.Columns.Add("Url", typeof(string));
+            queueTable.Columns.Add("UserIP", typeof(string));
+            queueTable.Columns.Add("UserName", typeof(string));
+            queueTable.Columns.Add("UserId", Type.GetType("System.Int32"));
+            //queueTable.Columns.Add("LogType", typeof(string));
+            //queueTable.Columns.Add("ExceptionInfo", typeof(string));
+            //queueTable.Columns.Add("ServiceIP", typeof(string));
+            //queueTable.Columns.Add("BrowserType", typeof(string));
+            //queueTable.Columns.Add("Role_Id", Type.GetType("System.Int32"));
+            return queueTable;
+        }
+
+        public static void Add(string requestParameter, string responseParameter)
+        {
+            dynamic log = null;
+            try
+            {
+                HttpContext context = App.HttpContext;
+                if (context == null)
+                {
+                    return;
+                }
+                if (context.Request.Method == "OPTIONS") return;
+                RequestLogModel logModel = (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel) ?? new RequestLogModel { RequestDate = DateTime.Now };
+
+                IUser user = App.User;
+                log = new
+                {
+                    BeginDate = logModel.RequestDate,
+                    EndDate = DateTime.Now,
+                    RequestParam = requestParameter,
+                    ResponseParam = responseParameter,
+                    Url = context.Request.Scheme + "://" + context.Request.Host + context.Request.PathBase + context.Request.Path,
+                    UserIP = GetClientIP(context)?.Replace("::ffff:", ""),
+                    UserId = user.UserId,
+                    UserName = user.UserName
+                };
+            }
+            catch (Exception exception)
+            {
+                log = log ?? new
+                {
+                    BeginDate = DateTime.Now,
+                    EndDate = DateTime.Now,
+                    RequestParam = requestParameter,
+                    ResponseParam = responseParameter,
+                };
+            }
+            //娣诲姞绯荤粺鏃ュ織
+            loggerQueueData.Enqueue(log);
+        }
+
+        public static string GetClientIP(HttpContext context)
+        {
+            var ip = context.Request.Headers["X-Forwarded-For"].ObjToString();
+            if (string.IsNullOrEmpty(ip))
+            {
+                ip = context.Connection.RemoteIpAddress.ObjToString();
+            }
+
+            return ip;
+        }
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Core/LogHelper/RequestLogModel.cs
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/LogHelper/RequestLogModel.cs
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs
new file mode 100644
index 0000000..3da6f4f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs
@@ -0,0 +1,133 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.Helper;
+using WIDESEAWCS_Core.LogHelper;
+
+namespace WIDESEAWCS_Core.Middlewares
+{
+    /// <summary>
+    /// 璁板綍璇锋眰鍜屽搷搴旀暟鎹�
+    /// </summary>
+    public class ApiLogMiddleware
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private readonly RequestDelegate _next;
+        private readonly ILogger<ApiLogMiddleware> _logger;
+
+        public ApiLogMiddleware(RequestDelegate next, ILogger<ApiLogMiddleware> logger)
+        {
+            _next = next;
+            _logger = logger;
+        }
+
+        public async Task InvokeAsync(HttpContext context)
+        {
+            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
+            {
+                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
+                context.Response.ContentType = "application/json";
+
+                var json = new WebResponseContent();
+
+                json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅
+                json.Code = 500;//500寮傚父 
+
+                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
+                await streamWriter.WriteAsync(json.Serialize());
+                return;
+            }
+
+            // 杩囨护锛屽彧鏈夋帴鍙�
+            if (context.Request.Path.Value?.Contains("api") ?? false)
+            {
+                context.Request.EnableBuffering();
+                Stream originalBody = context.Response.Body;
+                string requestParam = string.Empty;
+                string responseParam = string.Empty;
+                try
+                {
+                    string? apiIgnore = AppSettings.GetValue("ApiLogIgnore")?.ToString();
+                    string[] ignoreUrls = !string.IsNullOrEmpty(apiIgnore) ? apiIgnore.Split(",") : new string[] { "get" };
+
+                    (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now;
+                    try
+                    {
+                        // 瀛樺偍璇锋眰鏁版嵁
+                        requestParam = RequestDataLog(context);
+                        context.Request.Body.Position = 0;
+                    }
+                    catch { }
+                    using MemoryStream ms = new();
+                    context.Response.Body = ms;
+
+                    await _next(context);
+
+                    try
+                    {
+                        // 瀛樺偍鍝嶅簲鏁版嵁
+                        responseParam = ResponseDataLog(context.Response);
+                    }
+                    catch { }
+
+                    ms.Position = 0;
+                    await ms.CopyToAsync(originalBody);
+
+                    if (!ignoreUrls.Any(x => context.Request.Path.Value?.ToLower().Contains(x.ToLower()) ?? false))
+                    {
+                        Logger.Add(requestParam, responseParam);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    // 璁板綍寮傚父
+
+                }
+                finally
+                {
+                    context.Response.Body = originalBody;
+                }
+            }
+            else
+            {
+                await _next(context);
+            }
+        }
+        private string RequestDataLog(HttpContext context)
+        {
+            var request = context.Request;
+            var sr = new StreamReader(request.Body);
+
+            object obj = new
+            {
+                QueryString = request.QueryString.ToString(),
+                BodyData = sr.ReadToEndAsync().Result
+            };
+
+            string data = JsonConvert.SerializeObject(obj);
+
+            request.Body.Position = 0;
+
+            return data;
+        }
+
+        private string ResponseDataLog(HttpResponse response)
+        {
+            response.Body.Position = 0;
+            using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
+            string body = stream.ReadToEnd();
+            response.Body.Position = 0;
+            return body;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs
new file mode 100644
index 0000000..33d8e0d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ExceptionHandlerMiddleware.cs
@@ -0,0 +1,59 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.DirectoryServices.Protocols;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public class ExceptionHandlerMiddleware
+    {
+        private readonly RequestDelegate _next;
+
+        public ExceptionHandlerMiddleware(RequestDelegate next)
+        {
+            _next = next;
+        }
+
+        public async Task Invoke(HttpContext context)
+        {
+            try
+            {
+                await _next(context);
+            }
+            catch (Exception ex)
+            {
+                await HandleExceptionAsync(context, ex);
+            }
+        }
+
+        private async Task HandleExceptionAsync(HttpContext context, Exception e)
+        {
+            if (e == null) return;
+
+            await WriteExceptionAsync(context, e).ConfigureAwait(false);
+        }
+
+        private static async Task WriteExceptionAsync(HttpContext context, Exception e)
+        {
+            var message = e.Message;
+            switch (e)
+            {
+                case UnauthorizedAccessException:
+                    context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
+                    break;
+                default:
+                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
+                    break;
+            }
+            context.Response.ContentType = "application/json";
+            await context.Response
+                .WriteAsync(JsonConvert.SerializeObject(WebResponseContent.Instance.Error(message)))
+                .ConfigureAwait(false);
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs
new file mode 100644
index 0000000..79a266c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/IpLimitMiddleware.cs
@@ -0,0 +1,41 @@
+锘縰sing log4net;
+using Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// ip 闄愭祦
+    /// </summary>
+    public static class IpLimitMiddleware
+    {
+        private static readonly ILog Log = LogManager.GetLogger(typeof(IpLimitMiddleware));
+        /// <summary>
+        /// ip闄愭祦
+        /// </summary>
+        /// <param name="app"></param>
+        /// <exception cref="ArgumentNullException"></exception>
+        public static void UseIpLimitMiddle(this IApplicationBuilder app)
+        {
+            if (app == null) throw new ArgumentNullException(nameof(app));
+
+            //try
+            //{
+            //    if (AppSettings.app("Middleware", "IpRateLimit", "Enabled").ObjToBool())
+            //    {
+            //        app.UseIpRateLimiting();
+            //    }
+            //}
+            //catch (Exception e)
+            //{
+            //    Log.Error($"Error occured limiting ip rate.\n{e.Message}");
+            //    throw;
+            //}
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs
new file mode 100644
index 0000000..ef95892
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/JwtTokenAuthMiddleware.cs
@@ -0,0 +1,94 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Authorization;
+using WIDESEA_Core.HttpContextUser;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// 涓棿浠�
+    /// 鍘熷仛涓鸿嚜瀹氫箟鎺堟潈涓棿浠�
+    /// 鍏堝仛妫�鏌� header token鐨勪娇鐢�
+    /// </summary>
+    public class JwtTokenAuthMiddleware
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        private readonly RequestDelegate _next;
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="next"></param>
+        public JwtTokenAuthMiddleware(RequestDelegate next)
+        {
+            _next = next;
+        }
+
+
+        private void PreProceed(HttpContext next)
+        {
+            //Console.WriteLine($"{DateTime.Now} middleware invoke preproceed");
+            //...
+        }
+        private void PostProceed(HttpContext next)
+        {
+            //Console.WriteLine($"{DateTime.Now} middleware invoke postproceed");
+            //....
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="httpContext"></param>
+        /// <returns></returns>
+        public Task Invoke(HttpContext httpContext)
+        {
+            PreProceed(httpContext);
+
+
+            //妫�娴嬫槸鍚﹀寘鍚�'Authorization'璇锋眰澶�
+            if (!httpContext.Request.Headers.ContainsKey("Authorization"))
+            {
+                PostProceed(httpContext);
+
+                return _next(httpContext);
+            }
+            //var tokenHeader = httpContext.Request.Headers["Authorization"].ToString();
+            var tokenHeader = httpContext.Request.Headers["Authorization"].ToString().Replace("Bearer ", "");
+
+            try
+            {
+                if (tokenHeader.Length >= 128)
+                {
+                    //Console.WriteLine($"{DateTime.Now} token :{tokenHeader}");
+                    UserInfo tm = JwtHelper.SerializeJwt(tokenHeader);
+
+                    //鎺堟潈
+                    //var claimList = new List<Claim>();
+                    //var claim = new Claim(ClaimTypes.Role, tm.Role);
+                    //claimList.Add(claim);
+                    //var identity = new ClaimsIdentity(claimList);
+                    //var principal = new ClaimsPrincipal(identity);
+                    //httpContext.User = principal;
+                }
+
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine($"{DateTime.Now} middleware wrong:{e.Message}");
+            }
+
+
+            PostProceed(httpContext);
+
+
+            return _next(httpContext);
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs
new file mode 100644
index 0000000..10ac7c7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/MiddlewareHelpers.cs
@@ -0,0 +1,43 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEAWCS_Core.Middlewares;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public static class MiddlewareHelpers
+    {
+        /// <summary>
+        /// 璇锋眰鍝嶅簲涓棿浠�
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseApiLogMiddleware(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<ApiLogMiddleware>();
+        }
+
+        /// <summary>
+        /// 鑷畾涔夋巿鏉冧腑闂翠欢
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseJwtTokenAuth(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<JwtTokenAuthMiddleware>();
+        }
+
+        /// <summary>
+        /// 寮傚父澶勭悊涓棿浠�
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseExceptionHandlerMiddle(this IApplicationBuilder app)
+        {
+            return app.UseMiddleware<ExceptionHandlerMiddleware>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs
new file mode 100644
index 0000000..feba460
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerAuthMiddleware.cs
@@ -0,0 +1,80 @@
+锘縰sing Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Http;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Middlewares
+{
+    public class SwaggerAuthMiddleware
+    {
+
+        private readonly RequestDelegate next;
+
+        public SwaggerAuthMiddleware(RequestDelegate next)
+        {
+            this.next = next;
+        }
+
+        public async Task InvokeAsync(HttpContext context)
+        {
+            // 涔熷彲浠ユ牴鎹槸鍚︽槸鏈湴鍋氬垽鏂� IsLocalRequest
+            if (context.Request.Path.Value.ToLower().Contains("index.html"))
+            {
+                // 鍒ゆ柇鏉冮檺鏄惁姝g‘
+                if (IsAuthorized(context))
+                {
+                    await next.Invoke(context);
+                    return;
+                }
+
+                // 鏃犳潈闄愶紝璺宠浆swagger鐧诲綍椤�
+                context.Response.Redirect("/swg-login.html");
+            }
+            else
+            {
+                await next.Invoke(context);
+            }
+        }
+
+        public bool IsAuthorized(HttpContext context)
+        {
+            // 浣跨敤session妯″紡
+            // 鍙互浣跨敤鍏朵粬鐨�
+            return context.Session.GetString("swagger-code") == "success";
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄笉鏄湰鍦拌闂�
+        /// 鏈湴涓嶇敤swagger鎷︽埅
+        /// </summary>
+        /// <param name="context"></param>
+        /// <returns></returns>
+        public bool IsLocalRequest(HttpContext context)
+        {
+            if (context.Connection.RemoteIpAddress == null && context.Connection.LocalIpAddress == null)
+            {
+                return true;
+            }
+            if (context.Connection.RemoteIpAddress.Equals(context.Connection.LocalIpAddress))
+            {
+                return true;
+            }
+            if (IPAddress.IsLoopback(context.Connection.RemoteIpAddress))
+            {
+                return true;
+            }
+            return false;
+        }
+    }
+    public static class SwaggerAuthorizeExtensions
+    {
+        public static IApplicationBuilder UseSwaggerAuthorized(this IApplicationBuilder builder)
+        {
+            return builder.UseMiddleware<SwaggerAuthMiddleware>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs
new file mode 100644
index 0000000..08baad0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/SwaggerMiddleware.cs
@@ -0,0 +1,59 @@
+锘縰sing log4net;
+using Microsoft.AspNetCore.Builder;
+using Swashbuckle.AspNetCore.SwaggerUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Helper;
+using static WIDESEA_Core.Extensions.CustomApiVersion;
+
+namespace WIDESEA_Core.Middlewares
+{
+    /// <summary>
+    /// Swagger涓棿浠�
+    /// </summary>
+    public static class SwaggerMiddleware
+    {
+        private static readonly ILog Log = LogManager.GetLogger(typeof(SwaggerMiddleware));
+        public static void UseSwaggerMiddle(this IApplicationBuilder app, Func<Stream> streamHtml)
+        {
+            if (app == null) throw new ArgumentNullException(nameof(app));
+
+            app.UseSwagger();
+            app.UseSwaggerUI(c =>
+            {
+                //鏍规嵁鐗堟湰鍚嶇О鍊掑簭 閬嶅巻灞曠ず
+                var apiName = AppSettings.app(new string[] { "ApiName" });
+                typeof(ApiVersions).GetEnumNames().OrderByDescending(e => e).ToList().ForEach(version =>
+                {
+                    c.SwaggerEndpoint($"/swagger/{version}/swagger.json", $"{apiName} {version}");
+                });
+
+                //c.SwaggerEndpoint("/swagger/v1/swagger.json", "WIDESEA.Core鍚庡彴Api");
+
+                //c.SwaggerEndpoint($"https://petstore.swagger.io/v2/swagger.json", $"{apiName} pet");
+
+                // 灏唖wagger棣栭〉锛岃缃垚鎴戜滑鑷畾涔夌殑椤甸潰锛岃寰楄繖涓瓧绗︿覆鐨勫啓娉曪細{椤圭洰鍚�.index.html}
+                if (streamHtml.Invoke() == null)
+                {
+                    var msg = "index.html鐨勫睘鎬э紝蹇呴』璁剧疆涓哄祵鍏ョ殑璧勬簮";
+                    //Log.Error(msg);
+                    throw new Exception(msg);
+                }
+                c.IndexStream = streamHtml;
+                c.DocExpansion(DocExpansion.None); //->淇敼鐣岄潰鎵撳紑鏃惰嚜鍔ㄦ姌鍙�
+
+                //if (Permissions.IsUseIds4)
+                //{
+                //    c.OAuthClientId("blogadminjs");
+                //}
+
+
+                // 璺緞閰嶇疆锛岃缃负绌猴紝琛ㄧず鐩存帴鍦ㄦ牴鍩熷悕锛坙ocalhost:8001锛夎闂鏂囦欢,娉ㄦ剰localhost:8001/swagger鏄闂笉鍒扮殑锛屽幓launchSettings.json鎶妉aunchUrl鍘绘帀锛屽鏋滀綘鎯虫崲涓�涓矾寰勶紝鐩存帴鍐欏悕瀛楀嵆鍙紝姣斿鐩存帴鍐檆.RoutePrefix = "doc";
+                c.RoutePrefix = "";
+            });
+        }
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs
new file mode 100644
index 0000000..a3fda65
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBContext.cs
@@ -0,0 +1,217 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Seed
+{
+    public class DBContext
+    {
+        private static MutiDBOperate connectObject => GetMainConnectionDb();
+        private static string _connectionString = connectObject.Connection;
+        private static DbType _dbType = (DbType)connectObject.DbType;
+        public static string ConnId = connectObject.ConnId;
+        private SqlSugarClient _db;
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓� 
+        /// </summary>
+        public static MutiDBOperate GetMainConnectionDb()
+        {
+            MutiDBOperate mainDb = new MutiDBOperate()
+            {
+                //Connection = AppSettings.app(MainDb.ConnectionString).DecryptDES(AppSecret.DB),
+                Connection = AppSettings.app(MainDb.ConnectionString),
+                ConnId = MainDb.CurrentDbConnId,
+                DbType = DataBaseType.SqlServer
+            };
+
+            return mainDb;
+        }
+        /// <summary>
+        /// 杩炴帴瀛楃涓� 
+        /// </summary>
+        public static string ConnectionString
+        {
+            get { return _connectionString; }
+            set { _connectionString = value; }
+        }
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨� 
+        /// </summary>
+        public static DbType DbType
+        {
+            get { return _dbType; }
+            set { _dbType = value; }
+        }
+        /// <summary>
+        /// 鏁版嵁杩炴帴瀵硅薄 
+        /// </summary>
+        public SqlSugarClient Db
+        {
+            get { return _db; }
+            private set { _db = value; }
+        }
+
+        //public SqlSugarScope DbClient
+        //{
+        //    get { return _dbClient; }
+        //    private set { _dbClient = value; }
+        //}
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏋勯�犲嚱鏁�
+        /// </summary>
+        public DBContext(ISqlSugarClient sqlSugarClient)
+        {
+            if (string.IsNullOrEmpty(_connectionString))
+                throw new ArgumentNullException("鏁版嵁搴撹繛鎺ュ瓧绗︿覆涓虹┖");
+
+            _db = sqlSugarClient as SqlSugarClient;
+            //_db.Aop.DataExecuting = SqlSugarAop.DataExecuting;
+        }
+
+        #region 瀹炰緥鏂规硶
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇鏁版嵁搴撳鐞嗗璞�
+        /// </summary>
+        /// <returns>杩斿洖鍊�</returns>
+        public SimpleClient<T> GetEntityDB<T>() where T : class, new()
+        {
+            return new SimpleClient<T>(_db);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇鏁版嵁搴撳鐞嗗璞�
+        /// </summary>
+        /// <param name="db">db</param>
+        /// <returns>杩斿洖鍊�</returns>
+        //public SimpleClient<T> GetEntityDB<T>(SqlSugarClient db) where T : class, new()
+        //{
+        //    return new SimpleClient<T>(db);
+        //}
+
+
+
+        #endregion
+
+
+        #region 鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// </summary>
+        /// <param name="blnBackupTable">鏄惁澶囦唤琛�</param>
+        /// <param name="lstEntitys">鎸囧畾鐨勫疄浣�</param>
+        public void CreateTableByEntity<T>(bool blnBackupTable, params T[] lstEntitys) where T : class, new()
+        {
+            Type[] lstTypes = null;
+            if (lstEntitys != null)
+            {
+                lstTypes = new Type[lstEntitys.Length];
+                for (int i = 0; i < lstEntitys.Length; i++)
+                {
+                    T t = lstEntitys[i];
+                    lstTypes[i] = typeof(T);
+                }
+            }
+            CreateTableByEntity(blnBackupTable, lstTypes);
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁瀹炰綋绫荤敓鎴愭暟鎹簱琛�
+        /// </summary>
+        /// <param name="blnBackupTable">鏄惁澶囦唤琛�</param>
+        /// <param name="lstEntitys">鎸囧畾鐨勫疄浣�</param>
+        public void CreateTableByEntity(bool blnBackupTable, params Type[] lstEntitys)
+        {
+            if (blnBackupTable)
+            {
+                _db.CodeFirst.BackupTable().InitTables(lstEntitys); //change entity backupTable            
+            }
+            else
+            {
+                _db.CodeFirst.InitTables(lstEntitys);
+            }
+        }
+        #endregion
+
+
+        #region 闈欐�佹柟娉�
+
+        ///// <summary>
+        ///// 鍔熻兘鎻忚堪:鑾峰緱涓�涓狣bContext
+        ///// </summary>
+        ///// <returns></returns>
+        //public static MyContext GetDbContext()
+        //{
+        //    return new MyContext();
+        //}
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:璁剧疆鍒濆鍖栧弬鏁�
+        /// </summary>
+        /// <param name="strConnectionString">杩炴帴瀛楃涓�</param>
+        /// <param name="enmDbType">鏁版嵁搴撶被鍨�</param>
+        public static void Init(string strConnectionString, DbType enmDbType = SqlSugar.DbType.SqlServer)
+        {
+            _connectionString = strConnectionString;
+            _dbType = enmDbType;
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鍒涘缓涓�涓摼鎺ラ厤缃�
+        /// </summary>
+        /// <param name="blnIsAutoCloseConnection">鏄惁鑷姩鍏抽棴杩炴帴</param>
+        /// <param name="blnIsShardSameThread">鏄惁澶哥被浜嬪姟</param>
+        /// <returns>ConnectionConfig</returns>
+        public static ConnectionConfig GetConnectionConfig(bool blnIsAutoCloseConnection = true, bool blnIsShardSameThread = false)
+        {
+            ConnectionConfig config = new ConnectionConfig()
+            {
+                ConnectionString = _connectionString,
+                DbType = _dbType,
+                IsAutoCloseConnection = blnIsAutoCloseConnection,
+                ConfigureExternalServices = new ConfigureExternalServices()
+                {
+                    //DataInfoCacheService = new HttpRuntimeCache()
+                },
+                //IsShardSameThread = blnIsShardSameThread
+            };
+            return config;
+        }
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨凞B
+        /// </summary>
+        /// <param name="config">config</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SqlSugarClient GetCustomDB(ConnectionConfig config)
+        {
+            return new SqlSugarClient(config);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄
+        /// </summary>
+        /// <param name="sugarClient">sugarClient</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SimpleClient<T> GetCustomEntityDB<T>(SqlSugarClient sugarClient) where T : class, new()
+        {
+            return new SimpleClient<T>(sugarClient);
+        }
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鑾峰彇涓�涓嚜瀹氫箟鐨勬暟鎹簱澶勭悊瀵硅薄
+        /// </summary>
+        /// <param name="config">config</param>
+        /// <returns>杩斿洖鍊�</returns>
+        public static SimpleClient<T> GetCustomEntityDB<T>(ConnectionConfig config) where T : class, new()
+        {
+            SqlSugarClient sugarClient = GetCustomDB(config);
+            return GetCustomEntityDB<T>(sugarClient);
+        }
+        #endregion
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs
new file mode 100644
index 0000000..1d1903e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/DBSeed.cs
@@ -0,0 +1,320 @@
+锘縰sing Castle.Components.DictionaryAdapter.Xml;
+using Microsoft.AspNetCore.Mvc.Rendering;
+using Newtonsoft.Json;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Dynamic;
+using System.Linq;
+using System.Net.Sockets;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Core.Seed
+{
+    public class DBSeed
+    {
+        private static string SeedDataFolder = "WIDESEAWCS_DB.DBSeed.Json/{0}.tsv";
+
+        /// <summary>
+        /// 寮傛娣诲姞绉嶅瓙鏁版嵁
+        /// </summary>
+        /// <param name="myContext"></param>
+        /// <param name="WebRootPath"></param>
+        /// <returns></returns>
+        public static async Task SeedAsync(DBContext dbContext, string WebRootPath)
+        {
+            try
+            {
+                if (string.IsNullOrEmpty(WebRootPath))
+                {
+                    throw new Exception("鑾峰彇wwwroot璺緞鏃讹紝寮傚父锛�");
+                }
+
+                SeedDataFolder = Path.Combine(WebRootPath, SeedDataFolder);
+
+                Console.WriteLine("************ WIDESEA DataBase Set *****************");
+
+                //Console.WriteLine($"Master DB ConId: {DBContext.ConnId}");
+                Console.WriteLine($"Master DB Type: {DBContext.DbType}");
+                //Console.WriteLine($"Master DB ConnectString: {DBContext.ConnectionString}");
+
+                Console.WriteLine();
+
+                // 鍒涘缓鏁版嵁搴�
+                Console.WriteLine($"Create Database(The Db Id:{DBContext.ConnId})...");
+
+                if (DBContext.DbType != SqlSugar.DbType.Oracle)
+                {
+                    dbContext.Db.DbMaintenance.CreateDatabase();
+                    ConsoleHelper.WriteSuccessLine($"Database Created Successfully!");
+                }
+                else
+                {
+                    //Oracle 鏁版嵁搴撲笉鏀寔璇ユ搷浣�
+                    ConsoleHelper.WriteSuccessLine($"Oracle 鏁版嵁搴撲笉鏀寔璇ユ搷浣滐紝鍙墜鍔ㄥ垱寤篛racle鏁版嵁搴�!");
+                }
+
+                // 鍒涘缓鏁版嵁搴撹〃锛岄亶鍘嗘寚瀹氬懡鍚嶇┖闂翠笅鐨刢lass锛�
+                // 娉ㄦ剰涓嶈鎶婂叾浠栧懡鍚嶇┖闂翠笅鐨勪篃娣诲姞杩涙潵銆�
+                Console.WriteLine("Create Tables...");
+
+                var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
+                var referencedAssemblies = System.IO.Directory.GetFiles(path, MainDb.AssemblyName).Select(Assembly.LoadFrom).ToArray();
+
+                var modelTypes = referencedAssemblies
+                    .SelectMany(a => a.DefinedTypes)
+                    .Select(type => type.AsType())
+                    .Where(x => x.IsClass && x.Namespace is MainDb.EntityNameSpace && x.GetCustomAttribute<SugarTable>() != null)
+                    .ToList();
+
+                modelTypes.ForEach(t =>
+                {
+                    //var diffString = dbContext.Db.CodeFirst.GetDifferenceTables(t).ToDiffString();
+                    // 杩欓噷鍙敮鎸佹坊鍔犺〃锛屼笉鏀寔鍒犻櫎
+                    // 濡傛灉鎯宠鍒犻櫎锛屾暟鎹簱鐩存帴鍙抽敭鍒犻櫎锛屾垨鑰呰仈绯籗qlSugar浣滆�咃紱
+                    IDbMaintenance dbMaintenance = dbContext.Db.DbMaintenance;
+                    if (!dbMaintenance.IsAnyTable(t.Name, false))
+                    {
+                        ConsoleHelper.WriteSuccessLine($"Table [{t.Name}] Created Successfully");
+                        dbContext.Db.CodeFirst.InitTables(t);
+
+                        string seedData = FileHelper.ReadFile(string.Format(SeedDataFolder, t.Name), Encoding.UTF8);
+
+                        #region AddSeedData
+                        if (seedData != "涓嶅瓨鍦ㄧ浉搴旂殑鐩綍")
+                        {
+                            List<Dictionary<string, object>> dicFile = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(seedData);
+
+                            if (dicFile.Count > 0)
+                            {
+                                List<Dictionary<string, object>> dic = new List<Dictionary<string, object>>();
+
+                                List<string> columnNames = dbContext.Db.DbMaintenance.GetColumnInfosByTableName(t.Name, false).Select(x => x.DbColumnName).ToList();
+                                var a = t.GetProperties().FirstOrDefault(x => !columnNames.Contains(x.Name));
+
+                                List<PropertyInfo> propertyInfos = t.GetProperties().Where(x => columnNames.Contains(x.Name)).ToList();
+                                for (int j = 0; j < dicFile.Count; j++)
+                                {
+                                    Dictionary<string, object> keyValuePairs = new Dictionary<string, object>();
+                                    for (int i = 0; i < propertyInfos.Count; i++)
+                                    {
+                                        PropertyInfo propertyInfo = propertyInfos[i];
+                                        SugarColumn sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                                        if (sugarColumn != null)
+                                        {
+                                            if (!sugarColumn.IsIgnore)
+                                            {
+                                                keyValuePairs.Add(propertyInfo.Name, dicFile[j][propertyInfo.Name]);
+                                            }
+                                        }
+                                    }
+                                    dic.Add(keyValuePairs);
+                                }
+
+                                if (dic.Count > 0)
+                                {
+                                    for (int i = 0; i < dic.Count; i++)
+                                    {
+                                        if (dic[i].ContainsKey("CreateDate"))
+                                            dic[i]["CreateDate"] = DateTime.Now;
+                                        else
+                                            dic[i].Add("CreateDate", DateTime.Now);
+                                    }
+                                    string str = $"SET IDENTITY_INSERT {t.Name} ON;";
+
+                                    str += dbContext.Db.Insertable(dic).AS(t.Name).ToSqlString();
+
+                                    str += ($"SET IDENTITY_INSERT {t.Name} OFF;");
+
+                                    dbContext.Db.Ado.ExecuteCommand(str);
+
+                                    ConsoleHelper.WriteSuccessLine($"Table [{t.Name}] SeedData Added Successfully");
+                                }
+                            }
+                        }
+                        #endregion
+                    }
+                    else
+                    {
+                        List<string> columnNames = dbContext.Db.DbMaintenance.GetColumnInfosByTableName(t.Name, false).Select(x => x.DbColumnName).ToList();
+                        if (t.GetProperties().FirstOrDefault(x => !columnNames.Contains(x.Name)) != null)
+                        {
+                            bool isChange = true;
+                            List<PropertyInfo> propertyInfos = t.GetProperties().Where(x => !columnNames.Contains(x.Name)).ToList();
+                            for (int i = 0; i < propertyInfos.Count; i++)
+                            {
+                                PropertyInfo propertyInfo = propertyInfos[i];
+                                SugarColumn sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                                if (sugarColumn != null)
+                                {
+                                    if (!sugarColumn.IsIgnore)
+                                    {
+                                        if (!sugarColumn.IsNullable)
+                                        {
+                                            isChange = false;
+                                            break;
+                                        }
+                                    }
+                                }
+                            }
+                            if (isChange)
+                                dbContext.Db.CodeFirst.InitTables(t);
+                        }
+                    }
+                });
+                ConsoleHelper.WriteSuccessLine($"Tables Created Successfully!");
+                Console.WriteLine();
+
+
+            }
+            catch (Exception ex)
+            {
+                // 1銆佽嫢鏄疢ysql,鏌ョ湅甯歌闂:https://github.com/anjoy8/Blog.Core/issues/148#issue-776281770
+                //2銆佽嫢鏄疧racle,鏌ョ湅甯歌闂:https://github.com/anjoy8/Blog.Core/issues/148#issuecomment-752340231
+                throw new Exception("閿欒锛�" + ex.Message);
+            }
+        }
+
+        /// <summary>
+        /// 鍒濆鍖� 澶氱鎴�
+        /// </summary>
+        /// <param name="dbContext"></param>
+        /// <returns></returns>
+        public static async Task TenantSeedAsync(DBContext dbContext)
+        {
+
+            if (BaseDBConfig.MutiConnectionString.Where(x => x.ConnId != MainDb.CurrentDbConnId).Any())
+            {
+                Console.WriteLine($@"Init Multi Tenant Db");
+                foreach (MutiDBOperate tenant in BaseDBConfig.MutiConnectionString.Where(x => x.ConnId != MainDb.CurrentDbConnId))
+                {
+
+                    Console.WriteLine($@"Init Multi Tenant Db : {tenant.ConnId}");
+                    ConnectionConfig connectionConfig = new ConnectionConfig()
+                    {
+                        ConfigId = tenant.ConnId,
+                        ConnectionString = tenant.Connection,
+                        IsAutoCloseConnection = true,
+                        MoreSettings = new ConnMoreSettings()
+                        {
+                            IsAutoRemoveDataCache = true
+                        },
+                        DbType = (DbType)tenant.DbType,
+                    };
+                    await InitTenantSeedAsync(dbContext.Db.AsTenant(), connectionConfig);
+                }
+
+                Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db Finish");
+            }
+
+            //tenants = await myContext.Db.Queryable<SysTenant>().Where(s => s.TenantType == TenantTypeEnum.Tables).ToListAsync();
+            //if (tenants.Any())
+            //{
+            //    await InitTenantSeedAsync(myContext, tenants);
+            //}
+        }
+
+        #region 澶氱鎴� 澶氬簱 鍒濆鍖�
+
+        /// <summary>
+        /// 鍒濆鍖栧搴�
+        /// </summary>
+        /// <param name="itenant"></param>
+        /// <param name="config"></param>
+        /// <returns></returns>
+        public static async Task InitTenantSeedAsync(ITenant itenant, ConnectionConfig config)
+        {
+            Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db");
+            //itenant.RemoveConnection(config.ConfigId);
+            itenant.AddConnection(config);
+
+            var db = itenant.GetConnectionScope(config.ConfigId);
+
+            db.DbMaintenance.CreateDatabase();
+            ConsoleHelper.WriteSuccessLine($"Init Multi Tenant Db : {config.ConfigId} Database created successfully!");
+
+            Console.WriteLine($@"Init Multi Tenant Db : {config.ConfigId}  Create Tables");
+
+            // 鑾峰彇鎵�鏈夊疄浣撹〃-鍒濆鍖栫鎴蜂笟鍔¤〃
+            var entityTypes = TenantUtil.GetTenantEntityTypes(TenantTypeEnum.Db);
+            if (!entityTypes.Any()) return;
+            foreach (var entityType in entityTypes)
+            {
+                //var splitTable = entityType.GetCustomAttribute<SplitTableAttribute>();
+                //if (splitTable == null)
+                db.CodeFirst.InitTables(entityType);
+                //else
+                //    db.CodeFirst.SplitTables().InitTables(entityType);
+
+                Console.WriteLine(entityType.Name);
+            }
+            Console.WriteLine(DateTime.Now + $@"Init Multi Tenant Db Finish");
+            //澶氱鎴峰垵濮嬪寲绉嶅瓙鏁版嵁
+            //await TenantSeedDataAsync(db, TenantTypeEnum.Db);
+        }
+
+        #endregion
+
+        //private static async Task TenantSeedDataAsync(ISqlSugarClient db, TenantTypeEnum tenantType)
+        //{
+        //    // 鑾峰彇鎵�鏈夌瀛愰厤缃�-鍒濆鍖栨暟鎹�
+        //    var seedDataTypes = AssemblysExtensions.GetAllAssemblies().SelectMany(s => s.DefinedTypes)
+        //        .Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass)
+        //        .Where(u =>
+        //        {
+        //            var esd = u.GetInterfaces().FirstOrDefault(i => i.HasImplementedRawGeneric(typeof(IEntitySeedData<>)));
+        //            if (esd is null)
+        //            {
+        //                return false;
+        //            }
+
+        //            var eType = esd.GenericTypeArguments[0];
+        //            return eType.IsTenantEntity(tenantType);
+        //        });
+        //    if (!seedDataTypes.Any()) return;
+        //    foreach (var seedType in seedDataTypes)
+        //    {
+        //        dynamic instance = Activator.CreateInstance(seedType);
+        //        //鍒濆鍖栨暟鎹�
+        //        {
+        //            var seedData = instance.InitSeedData();
+        //            if (seedData != null && Enumerable.Any(seedData))
+        //            {
+        //                var entityType = seedType.GetInterfaces().First().GetGenericArguments().First();
+        //                var entity = db.EntityMaintenance.GetEntityInfo(entityType);
+
+        //                if (!await db.Queryable(entity.DbTableName, "").AnyAsync())
+        //                {
+        //                    await db.Insertable(Enumerable.ToList(seedData)).ExecuteCommandAsync();
+        //                    Console.WriteLine($"Table:{entity.DbTableName} init success!");
+        //                }
+        //            }
+        //        }
+
+        //        //绉嶅瓙鏁版嵁
+        //        {
+        //            var seedData = instance.SeedData();
+        //            if (seedData != null && Enumerable.Any(seedData))
+        //            {
+        //                var entityType = seedType.GetInterfaces().First().GetGenericArguments().First();
+        //                var entity = db.EntityMaintenance.GetEntityInfo(entityType);
+
+        //                await db.Storageable(Enumerable.ToList(seedData)).ExecuteCommandAsync();
+        //                Console.WriteLine($"Table:{entity.DbTableName} seedData success!");
+        //            }
+        //        }
+
+        //        //鑷畾涔夊鐞�
+        //        {
+        //            await instance.CustomizeSeedData(db);
+        //        }
+        //    }
+        //}
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs
new file mode 100644
index 0000000..4711bda
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Seed/FrameSeed.cs
@@ -0,0 +1,582 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Seed
+{
+    public class FrameSeed
+    {
+
+        /// <summary>
+        /// 鐢熸垚Controller灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <param name="isMuti"></param>
+        /// <returns></returns>
+        public static bool CreateControllers(SqlSugarScope sqlSugarClient, string ConnId = null, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Controller_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Api.Controllers", "Blog.Core.Api.Controllers", tableNames, "", isMuti);
+            return true;
+        }
+
+        /// <summary>
+        /// 鐢熸垚Model灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <param name="isMuti"></param>
+        /// <returns></returns>
+        public static bool CreateModels(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Model_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Model", "Blog.Core.Model.Models", tableNames, "", isMuti);
+            return true;
+        }
+
+        /// <summary>
+        /// 鐢熸垚IRepository灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateIRepositorys(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_IRepository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IRepository", "Blog.Core.IRepository", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 IService 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateIServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_IServices_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.IServices", "Blog.Core.IServices", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 Repository 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateRepository(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Repository_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Repository", "Blog.Core.Repository", tableNames, "", isMuti);
+            return true;
+        }
+
+
+
+        /// <summary>
+        /// 鐢熸垚 Service 灞�
+        /// </summary>
+        /// <param name="sqlSugarClient">sqlsugar瀹炰緥</param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="isMuti"></param>
+        /// <param name="tableNames">鏁版嵁搴撹〃鍚嶆暟缁勶紝榛樿绌猴紝鐢熸垚鎵�鏈夎〃</param>
+        /// <returns></returns>
+        public static bool CreateServices(SqlSugarScope sqlSugarClient, string ConnId, bool isMuti = false, string[] tableNames = null)
+        {
+            Create_Services_ClassFileByDBTalbe(sqlSugarClient, ConnId, $@"C:\my-file\Blog.Core.Services", "Blog.Core.Services", tableNames, "", isMuti);
+            return true;
+        }
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Controller灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param>
+        private static void Create_Controller_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false,
+          bool blnSerializable = false)
+        {
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                 .SettingClassTemplate(p => p =
+@"using Blog.Core.IServices;
+using Blog.Core.Model;
+using Blog.Core.Model.Models;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+
+namespace " + strNameSpace + @"
+{
+	[Route(""api/[controller]/[action]"")]
+	[ApiController]
+    [Authorize(Permissions.Name)]
+     public class {ClassName}Controller : ControllerBase
+    {
+            /// <summary>
+            /// 鏈嶅姟鍣ㄦ帴鍙o紝鍥犱负鏄ā鏉跨敓鎴愶紝鎵�浠ラ瀛楁瘝鏄ぇ鍐欑殑锛岃嚜宸卞彲浠ラ噸鏋勪笅
+            /// </summary>
+            private readonly I{ClassName}Services _{ClassName}Services;
+    
+            public {ClassName}Controller(I{ClassName}Services {ClassName}Services)
+            {
+                _{ClassName}Services = {ClassName}Services;
+            }
+    
+            [HttpGet]
+            public async Task<MessageModel<PageModel<{ClassName}>>> Get(int page = 1, string key = """",int intPageSize = 50)
+            {
+                if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
+                {
+                    key = """";
+                }
+    
+                Expression<Func<{ClassName}, bool>> whereExpression = a => true;
+    
+                return new MessageModel<PageModel<{ClassName}>>()
+                {
+                    msg = ""鑾峰彇鎴愬姛"",
+                    success = true,
+                    response = await _{ClassName}Services.QueryPage(whereExpression, page, intPageSize)
+                };
+
+            }
+
+            [HttpGet(""{id}"")]
+            public async Task<MessageModel<{ClassName}>> Get(string id)
+            {
+                return new MessageModel<{ClassName}>()
+                {
+                    msg = ""鑾峰彇鎴愬姛"",
+                    success = true,
+                    response = await _{ClassName}Services.QueryById(id)
+                };
+            }
+
+            [HttpPost]
+            public async Task<MessageModel<string>> Post([FromBody] {ClassName} request)
+            {
+                var data = new MessageModel<string>();
+
+                var id = await _{ClassName}Services.Add(request);
+                data.success = id > 0;
+                if (data.success)
+                {
+                    data.response = id.ObjToString();
+                    data.msg = ""娣诲姞鎴愬姛"";
+                } 
+
+                return data;
+            }
+
+            [HttpPut]
+            public async Task<MessageModel<string>> Put([FromBody] {ClassName} request)
+            {
+                var data = new MessageModel<string>();
+                data.success = await _{ClassName}Services.Update(request);
+                if (data.success)
+                {
+                    data.msg = ""鏇存柊鎴愬姛"";
+                    data.response = request?.id.ObjToString();
+                }
+
+                return data;
+            }
+
+            [HttpDelete]
+            public async Task<MessageModel<string>> Delete(int id)
+            {
+                var data = new MessageModel<string>();
+                var model = await _{ClassName}Services.QueryById(id);
+                model.IsDeleted = true;
+                data.success = await _departmentServices.Update(model);
+                if (data.success)
+                {
+                    data.msg = ""鍒犻櫎鎴愬姛"";
+                    data.response = model?.Id.ObjToString();
+                }
+
+                return data;
+            }
+    }
+}")
+
+                  .ToClassStringList(strNameSpace);
+
+            Dictionary<string, string> newdic = new Dictionary<string, string>();
+            //寰幆澶勭悊 棣栧瓧姣嶅皬鍐� 骞舵彃鍏ユ柊鐨� Dictionary
+            foreach (KeyValuePair<string, string> item in ls)
+            {
+                string newkey = "_" + item.Key.First().ToString().ToLower() + item.Key.Substring(1);
+                string newvalue = item.Value.Replace("_" + item.Key, newkey);
+                newdic.Add(item.Key, newvalue);
+            }
+            CreateFilesByClassStringList(newdic, strPath, "{0}Controller");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇Model灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        /// <param name="blnSerializable">鏄惁搴忓垪鍖�</param>
+        private static void Create_Model_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false,
+          bool blnSerializable = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\Models\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"{using}
+
+namespace " + strNameSpace + @"
+{
+{ClassDescription}
+    [SugarTable( ""{ClassName}"", """ + ConnId + @""")]" + (blnSerializable ? "\n    [Serializable]" : "") + @"
+    public class {ClassName}" + (string.IsNullOrEmpty(strInterface) ? "" : (" : " + strInterface)) + @"
+    {
+           public {ClassName}()
+           {
+           }
+{PropertyName}
+    }
+}")
+                  //.SettingPropertyDescriptionTemplate(p => p = string.Empty)
+                  .SettingPropertyTemplate(p => p =
+@"{SugarColumn}
+           public {PropertyType} {PropertyName} { get; set; }")
+
+                   //.SettingConstructorTemplate(p => p = "              this._{PropertyName} ={DefaultValue};")
+
+                   .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "{0}");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IRepository灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_IRepository_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false
+            )
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                 .SettingClassTemplate(p => p =
+@"using Blog.Core.IRepository.Base;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+
+namespace " + strNameSpace + @"
+{
+	/// <summary>
+	/// I{ClassName}Repository
+	/// </summary>	
+    public interface I{ClassName}Repository : IBaseRepository<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+    }
+}")
+
+                  .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "I{0}Repository");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇IServices灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_IServices_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"using Blog.Core.IServices.BASE;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+
+namespace " + strNameSpace + @"
+{	
+	/// <summary>
+	/// I{ClassName}Services
+	/// </summary>	
+    public interface I{ClassName}Services :IBaseServices<{ClassName}>" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+	{
+    }
+}")
+
+                   .ToClassStringList(strNameSpace);
+            CreateFilesByClassStringList(ls, strPath, "I{0}Services");
+        }
+        #endregion
+
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Repository 灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_Repository_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"using Blog.Core.IRepository" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.IRepository.UnitOfWork;
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Repository.Base;
+
+namespace " + strNameSpace + @"
+{
+	/// <summary>
+	/// {ClassName}Repository
+	/// </summary>
+    public class {ClassName}Repository : BaseRepository<{ClassName}>, I{ClassName}Repository" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+        public {ClassName}Repository(IUnitOfWork unitOfWork) : base(unitOfWork)
+        {
+        }
+    }
+}")
+                  .ToClassStringList(strNameSpace);
+
+
+            CreateFilesByClassStringList(ls, strPath, "{0}Repository");
+        }
+        #endregion
+
+
+        #region 鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞�
+
+        /// <summary>
+        /// 鍔熻兘鎻忚堪:鏍规嵁鏁版嵁搴撹〃鐢熶骇 Services 灞�
+        /// 浣溿��銆�鑰�:Blog.Core
+        /// </summary>
+        /// <param name="sqlSugarClient"></param>
+        /// <param name="ConnId">鏁版嵁搴撻摼鎺D</param>
+        /// <param name="strPath">瀹炰綋绫诲瓨鏀捐矾寰�</param>
+        /// <param name="strNameSpace">鍛藉悕绌洪棿</param>
+        /// <param name="lstTableNames">鐢熶骇鎸囧畾鐨勮〃</param>
+        /// <param name="strInterface">瀹炵幇鎺ュ彛</param>
+        /// <param name="isMuti"></param>
+        private static void Create_Services_ClassFileByDBTalbe(
+          SqlSugarScope sqlSugarClient,
+          string ConnId,
+          string strPath,
+          string strNameSpace,
+          string[] lstTableNames,
+          string strInterface,
+          bool isMuti = false)
+        {
+            //澶氬簱鏂囦欢鍒嗙
+            if (isMuti)
+            {
+                strPath = strPath + @"\" + ConnId;
+                strNameSpace = strNameSpace + "." + ConnId;
+            }
+
+            var IDbFirst = sqlSugarClient.DbFirst;
+            if (lstTableNames != null && lstTableNames.Length > 0)
+            {
+                IDbFirst = IDbFirst.Where(lstTableNames);
+            }
+            var ls = IDbFirst.IsCreateDefaultValue().IsCreateAttribute()
+
+                  .SettingClassTemplate(p => p =
+@"
+using Blog.Core.IServices" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Model.Models" + (isMuti ? "." + ConnId + "" : "") + @";
+using Blog.Core.Services.BASE;
+using Blog.Core.IRepository.Base;
+
+namespace " + strNameSpace + @"
+{
+    public class {ClassName}Services : BaseServices<{ClassName}>, I{ClassName}Services" + (string.IsNullOrEmpty(strInterface) ? "" : (" , " + strInterface)) + @"
+    {
+        private readonly IBaseRepository<{ClassName}> _dal;
+        public {ClassName}Services(IBaseRepository<{ClassName}> dal)
+        {
+            this._dal = dal;
+            base.BaseDal = dal;
+        }
+    }
+}")
+                  .ToClassStringList(strNameSpace);
+
+            CreateFilesByClassStringList(ls, strPath, "{0}Services");
+        }
+        #endregion
+
+
+        #region 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢
+        /// <summary>
+        /// 鏍规嵁妯℃澘鍐呭鎵归噺鐢熸垚鏂囦欢
+        /// </summary>
+        /// <param name="ls">绫绘枃浠跺瓧绗︿覆list</param>
+        /// <param name="strPath">鐢熸垚璺緞</param>
+        /// <param name="fileNameTp">鏂囦欢鍚嶆牸寮忔ā鏉�</param>
+        private static void CreateFilesByClassStringList(Dictionary<string, string> ls, string strPath, string fileNameTp)
+        {
+
+            foreach (var item in ls)
+            {
+                var fileName = $"{string.Format(fileNameTp, item.Key)}.cs";
+                var fileFullPath = Path.Combine(strPath, fileName);
+                if (!Directory.Exists(strPath))
+                {
+                    Directory.CreateDirectory(strPath);
+                }
+                File.WriteAllText(fileFullPath, item.Value, Encoding.UTF8);
+            }
+        }
+        #endregion
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs
new file mode 100644
index 0000000..ca499c4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/ITenantEntity.cs
@@ -0,0 +1,21 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Tenants
+{
+    /// <summary>
+    /// 绉熸埛妯″瀷鎺ュ彛
+    /// </summary>
+    public interface ITenantEntity
+    {
+        /// <summary>
+        /// 绉熸埛Id
+        /// </summary>
+        [SugarColumn(DefaultValue = "0")]
+        public long TenantId { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs
new file mode 100644
index 0000000..a0927c3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/MultiTenantAttribute.cs
@@ -0,0 +1,56 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Core.Tenants
+{
+    /// <summary>
+    /// 鏍囪瘑 澶氱鎴� 鐨勪笟鍔¤〃 <br/>
+    /// 榛樿璁剧疆鏄搴�       <br/>
+    /// 鍏叡琛ㄦ棤闇�鍖哄垎 鐩存帴浣跨敤涓诲簱 鍚勮嚜涓氬姟鍦ㄥ悇鑷簱涓� <br/>
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class)]
+    public class MultiTenantAttribute : Attribute
+    {
+        public MultiTenantAttribute()
+        {
+        }
+
+        public MultiTenantAttribute(TenantTypeEnum tenantType)
+        {
+            TenantType = tenantType;
+        }
+
+
+        public TenantTypeEnum TenantType { get; set; } = TenantTypeEnum.Db;
+    }
+
+    /// <summary>
+    /// 绉熸埛闅旂鏂规
+    /// </summary>
+    public enum TenantTypeEnum
+    {
+        None = 0,
+
+        /// <summary>
+        /// Id闅旂
+        /// </summary>
+        [Description("Id闅旂")]
+        Id = 1,
+
+        /// <summary>
+        /// 搴撻殧绂�
+        /// </summary>
+        [Description("搴撻殧绂�")]
+        Db = 2,
+
+        /// <summary>
+        /// 琛ㄩ殧绂�
+        /// </summary>
+        [Description("琛ㄩ殧绂�")]
+        Tables = 3,
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs
new file mode 100644
index 0000000..a0a9755
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Tenants/TenantUtil.cs
@@ -0,0 +1,127 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB;
+
+namespace WIDESEA_Core.Tenants
+{
+    public static class TenantUtil
+    {
+        //public static SysTenant DefaultTenantConfig(this SysTenant tenant)
+        //{
+        //    tenant.DbType ??= DbType.Sqlite;
+
+        //    //濡傛灉娌℃湁閰嶇疆杩炴帴
+        //    if (tenant.Connection.IsNullOrEmpty())
+        //    {
+        //        //姝ゅ榛樿閰嶇疆 Sqlite 鍦板潃
+        //        //瀹為檯涓氬姟涓� 涔熶細鏈夎繍缁淬�佺郴缁熺鐞嗗憳绛夋潵缁存姢
+        //        switch (tenant.DbType.Value)
+        //        {
+        //            case DbType.Sqlite:
+        //                tenant.Connection = $"DataSource={Path.Combine(Environment.CurrentDirectory, tenant.ConfigId)}.db";
+        //                break;
+        //        }
+        //    }
+
+        //    return tenant;
+        //}
+
+        //public static ConnectionConfig GetConnectionConfig(this SysTenant tenant)
+        //{
+        //    if (tenant.DbType is null)
+        //    {
+        //        throw new ArgumentException("Tenant DbType Must");
+        //    }
+
+
+        //    return new ConnectionConfig()
+        //    {
+        //        ConfigId = tenant.ConfigId,
+        //        DbType = tenant.DbType.Value,
+        //        ConnectionString = tenant.Connection,
+        //        IsAutoCloseConnection = true,
+        //        MoreSettings = new ConnMoreSettings()
+        //        {
+        //            IsAutoRemoveDataCache = true
+        //        },
+        //    };
+        //}
+
+        public static List<Type> GetTenantEntityTypes(TenantTypeEnum? tenantType = null)
+        {
+            List<Type> types = RepositorySetting.Entitys.Where(u => !u.IsInterface && !u.IsAbstract && u.IsClass).ToList();
+
+            List<Type> returnTypes = types.Where(s => IsTenantEntity(s, tenantType)).ToList();
+            return returnTypes;
+        }
+
+        public static bool IsTenantEntity(this Type u, TenantTypeEnum? tenantType = null)
+        {
+            var mta = u.GetCustomAttribute<MultiTenantAttribute>();
+            if (mta is null)
+            {
+                return false;
+            }
+
+            if (tenantType != null)
+            {
+                if (mta.TenantType != tenantType)
+                {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        public static string GetTenantTableName(this Type type, ISqlSugarClient db, string id)
+        {
+            var entityInfo = db.EntityMaintenance.GetEntityInfo(type);
+            return $@"{entityInfo.DbTableName}_{id}";
+        }
+
+        //public static string GetTenantTableName(this Type type, ISqlSugarClient db, SysTenant tenant)
+        //{
+        //    return GetTenantTableName(type, db, tenant.Id.ToString());
+        //}
+
+        public static void SetTenantTable(this ISqlSugarClient db, string id)
+        {
+            var types = GetTenantEntityTypes(TenantTypeEnum.Tables);
+
+            foreach (var type in types)
+            {
+                db.MappingTables.Add(type.Name, type.GetTenantTableName(db, id));
+            }
+        }
+
+        public static List<SelectModel> GetTenantSelectModels()
+        {
+            List<SelectModel> selectModels = new List<SelectModel>()
+            {
+                new SelectModel
+                {
+                    FieldName = MainDb.TenantId
+                },
+                //new SelectModel
+                //{
+                //    FieldName = MainDb.TenantName
+                //},
+                new SelectModel
+                {
+                    FieldName = MainDb.ConnectionString,
+                },
+                new SelectModel
+                {
+                    FieldName = MainDb.TenantDbType
+                }
+            };
+            return selectModels;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs
new file mode 100644
index 0000000..04a4233
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/EntityProperties.cs
@@ -0,0 +1,320 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class EntityProperties
+    {
+        /// <summary>
+        /// 楠岃瘉鏁版嵁搴撳瓧娈电被鍨嬩笌鍊兼槸鍚︽纭紝
+        /// </summary>
+        /// <param name="dbType">鏁版嵁搴撳瓧娈电被鍨�(濡倂archar,nvarchar,decimal,涓嶈甯﹀悗闈㈤暱搴﹀:varchar(50))</param>
+        /// <param name="value">鍊�</param>
+        /// <param name="propertyInfo">瑕侀獙璇佺殑绫荤殑灞炴�э紝鑻ヤ笉涓簄ull锛屽垯浼氬垽鏂瓧绗︿覆鐨勯暱搴︽槸鍚︽纭�</param>
+        /// <returns>(bool, string, object)bool鎴愬惁鏍¢獙鎴愬姛,string鏍¢獙澶辫触淇℃伅,object,褰撳墠鏍¢獙鐨勫��</returns>
+        public static (bool, string, object) ValidationVal(this PropertyInfo propertyInfo, object value)
+        {
+            string dbType = "";
+            SugarColumn sugarColumn = null;
+            if (propertyInfo != null)
+            {
+                sugarColumn = propertyInfo.GetCustomAttribute<SugarColumn>();
+                dbType = propertyInfo != null ? propertyInfo.GetProperWithDbType() : SqlDbTypeName.NVarChar;
+            }
+            dbType = dbType.ToLower();
+            string val = value?.ToString();
+            //楠岃瘉闀垮害
+            string reslutMsg = string.Empty;
+            if (dbType == SqlDbTypeName.Int)
+            {
+                if (!value.IsInt())
+                    reslutMsg = "鍙兘涓烘湁鏁堟暣鏁�";
+            }  //2021.10.12澧炲姞灞炴�ф牎楠宭ong绫诲瀷鐨勬敮鎸�
+            else if (dbType == SqlDbTypeName.BigInt)
+            {
+                if (!long.TryParse(val, out _))
+                {
+                    reslutMsg = "鍙兘涓烘湁鏁堟暣鏁�";
+                }
+            }
+            else if (dbType == SqlDbTypeName.DateTime
+                || dbType == SqlDbTypeName.Date
+                || dbType == SqlDbTypeName.SmallDateTime
+                || dbType == SqlDbTypeName.SmallDate
+                )
+            {
+                if (!value.IsDate())
+                    reslutMsg = "蹇呴』涓烘棩鏈熸牸寮�";
+            }
+            else if (dbType == SqlDbTypeName.Float || dbType == SqlDbTypeName.Decimal || dbType == SqlDbTypeName.Double)
+            {
+                if (!val.IsNumber(null))
+                {
+                    reslutMsg = "涓嶆槸鏈夋晥鏁板瓧";
+                }
+            }
+            else if (dbType == SqlDbTypeName.UniqueIdentifier)
+            {
+                if (!val.IsGuid())
+                {
+                    reslutMsg = propertyInfo.Name + "Guid涓嶆纭�";
+                }
+            }
+            else if (propertyInfo != null
+                && (dbType == SqlDbTypeName.VarChar
+                || dbType == SqlDbTypeName.NVarChar
+                || dbType == SqlDbTypeName.NChar
+                || dbType == SqlDbTypeName.Char
+                || dbType == SqlDbTypeName.Text))
+            {
+                //榛樿nvarchar(max) 銆乼ext 闀垮害涓嶈兘瓒呰繃20000
+                if (val.Length > 200000)
+                {
+                    reslutMsg = $"瀛楃闀垮害鏈�澶氥��200000銆�";
+                }
+                else
+                {
+                    int length = sugarColumn.Length;
+                    if (length == 0) { return (true, null, null); }
+                    //鍒ゆ柇鍙屽瓧鑺備笌鍗曞瓧娈�
+                    else if (length < 8000 &&
+                        ((dbType.Substring(0, 1) != "n"
+                        && Encoding.UTF8.GetBytes(val.ToCharArray()).Length > length)
+                         || val.Length > length)
+                         )
+                    {
+                        reslutMsg = $"鏈�澶氬彧鑳姐�恵length}銆戜釜瀛楃銆�";
+                    }
+                }
+            }
+            if (!string.IsNullOrEmpty(reslutMsg) && propertyInfo != null)
+            {
+                reslutMsg = sugarColumn.ColumnDescription + reslutMsg;
+            }
+            return (reslutMsg == "" ? true : false, reslutMsg, value);
+        }
+
+        private static readonly Dictionary<Type, string> ProperWithDbType = new Dictionary<Type, string>() {
+            {  typeof(string),SqlDbTypeName.NVarChar },
+            { typeof(DateTime),SqlDbTypeName.DateTime},
+            {typeof(long),SqlDbTypeName.BigInt },
+            {typeof(int),SqlDbTypeName.Int},
+            { typeof(decimal),SqlDbTypeName.Decimal },
+            { typeof(float),SqlDbTypeName.Float },
+            { typeof(double),SqlDbTypeName.Double },
+            {  typeof(byte),SqlDbTypeName.Int },//绫诲瀷寰呭畬
+            { typeof(Guid),SqlDbTypeName.UniqueIdentifier}
+        };
+
+        public static string GetProperWithDbType(this PropertyInfo propertyInfo)
+        {
+            bool result = ProperWithDbType.TryGetValue(propertyInfo.PropertyType, out string value);
+            if (result)
+            {
+                return value;
+            }
+            return SqlDbTypeName.NVarChar;
+        }
+        public static List<(bool, string, object)> ValidationValueForDbType(this PropertyInfo propertyInfo, params object[] values)
+        {
+            List<(bool, string, object)> result = new List<(bool, string, object)>();
+            foreach (object value in values)
+            {
+                result.Add(propertyInfo.ValidationVal(value));
+            }
+            return result;
+        }
+
+        public static string ValidateDicInEntity(this Type typeinfo, List<Dictionary<string, object>> dicList, bool removerKey, string[] ignoreFields = null)
+        {
+            PropertyInfo[] propertyInfo = typeinfo.GetProperties();
+            string reslutMsg = string.Empty;
+            foreach (Dictionary<string, object> dic in dicList)
+            {
+                reslutMsg = typeinfo.ValidateDicInEntity(dic, removerKey, propertyInfo, ignoreFields);
+                if (!string.IsNullOrEmpty(reslutMsg))
+                    return reslutMsg;
+            }
+            return reslutMsg;
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇hash鐨勫垪鏄惁涓哄搴旂殑瀹炰綋锛屽苟涓斿�兼槸鍚︽湁鏁�
+        /// </summary>
+        /// <param name="typeinfo"></param>
+        /// <param name="dic"></param>
+        /// <param name="removeNotContains">绉婚櫎涓嶅瓨鍦ㄥ瓧娈�</param>
+        /// <param name="removerKey">绉婚櫎涓婚敭</param>
+        /// <returns></returns>
+        public static string ValidateDicInEntity(this Type typeinfo, Dictionary<string, object> dic, bool removerKey, PropertyInfo[] propertyInfo, string[] ignoreFields = null)
+        {
+            if (dic == null || dic.Count == 0) { return "鍙傛暟鏃犳晥"; }
+
+            // 涓嶅瓨鍦ㄧ殑瀛楁鐩存帴绉婚櫎
+            dic.Where(x => !propertyInfo.Any(p => p.Name == x.Key.FirstLetterToUpper())).Select(s => s.Key).ToList().ForEach(f =>
+            {
+                dic.Remove(f);
+            });
+
+            string keyName = typeinfo.GetKeyName();
+            //绉婚櫎涓婚敭
+            if (removerKey)
+                dic.Remove(keyName);
+            //else
+            //{
+            //    if (!dic.ContainsKey(keyName))
+            //        return "璇蜂紶鍏ヤ富閿弬鏁�";
+            //}
+
+            foreach (PropertyInfo property in propertyInfo)
+            {
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn == null)
+                    return "璇烽厤缃甋ugarColumn灞炴��";
+                //蹇界暐涓庝富閿殑瀛楁涓嶅仛楠岃瘉
+                if (property.Name == keyName.FirstLetterToUpper() || (ignoreFields != null && ignoreFields.Contains(property.Name)) || sugarColumn.IsOnlyIgnoreInsert || sugarColumn.IsOnlyIgnoreUpdate || sugarColumn.IsIgnore)
+                    continue;
+
+                //涓嶅湪缂栬緫涓殑鍒楋紝鏄惁涔熻蹇呭~
+                if (!dic.ContainsKey(property.Name.FirstLetterToLower()))
+                {
+                    if (!sugarColumn.IsNullable)
+                    {
+                        if (sugarColumn.DefaultValue != null)
+                            return sugarColumn.ColumnDescription + "涓哄繀椤绘彁浜ら」";
+                        continue;
+                    }
+                    continue;
+                }
+                string str = dic.GetValueOrDefault(property.Name.FirstLetterToLower(), "").ToString();
+                //灏嗘墍鏈夌┖鍊艰缃负null
+                if (dic[property.Name.FirstLetterToLower()] != null && str == string.Empty)
+                    dic[property.Name.FirstLetterToLower()] = null;
+            }
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 瀹夊叏鑾峰彇瀛楀吀鍊硷紝濡傛灉閿笉瀛樺湪鎴栧�间负null鍒欒繑鍥為粯璁ゅ��
+        /// </summary>
+        /// <typeparam name="TKey">瀛楀吀閿殑绫诲瀷</typeparam>
+        /// <typeparam name="TValue">瀛楀吀鍊肩殑绫诲瀷</typeparam>
+        /// <param name="dictionary">瀛楀吀瀹炰緥</param>
+        /// <param name="key">閿�</param>
+        /// <param name="defaultValue">榛樿鍊�</param>
+        /// <returns>瀛楀吀鍊兼垨榛樿鍊�</returns>
+        public static TValue GetValueOrDefault<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue defaultValue = default)
+        {
+            if (dictionary == null) throw new ArgumentNullException(nameof(dictionary));
+
+            return dictionary.TryGetValue(key, out TValue value) && value != null ? value : defaultValue;
+        }
+
+        public static string GetKeyName(this Type typeinfo)
+        {
+            return typeinfo.GetProperties().GetKeyName();
+        }
+
+        public static string GetKeyName(this PropertyInfo[] properties)
+        {
+            foreach (PropertyInfo property in properties)
+            {
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn.IsPrimaryKey)
+                    return property.Name;
+            }
+            return null;
+        }
+
+        public static PropertyInfo GetKeyProperty(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                SugarColumn sugarColumn = property.GetCustomAttribute<SugarColumn>();
+                if (sugarColumn?.IsPrimaryKey ?? false)
+                {
+                    return property;
+                }
+            }
+            return null;
+        }
+
+        public static Type GetDetailType(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    if (navigate.GetNavigateType() == NavigateType.OneToOne)
+                        return property.PropertyType;
+                    else
+                        return property.PropertyType.GenericTypeArguments[0];
+                }
+            }
+            return null;
+        }
+
+        public static string GetMainIdByDetail(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    return navigate.GetName();
+                }
+            }
+            return null;
+        }
+
+        public static void SetDetailId<T>(this Type typeinfo, T enetiy, object id, string name)
+        {
+            PropertyInfo property = typeinfo.GetProperty(name);
+            if (property != null)
+            {
+                property.SetValue(enetiy, id);
+            }
+        }
+
+        public static PropertyInfo? GetNavigatePro(this Type typeinfo)
+        {
+            PropertyInfo[] properties = typeinfo.GetProperties();
+            foreach (PropertyInfo property in properties)
+            {
+                Navigate? navigate = property.GetCustomAttribute<Navigate>();
+                if (navigate is not null)
+                {
+                    return property;
+                }
+            }
+            return null;
+        }
+
+        public static object GetPropertyValue<T>(this Type typeinfo, T data, string propertyName)
+        {
+            if (typeinfo != typeof(T))
+                return null;
+
+            PropertyInfo? property = typeinfo.GetProperty(propertyName);
+            if (property != null)
+            {
+                return property.GetValue(data);
+            }
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs
new file mode 100644
index 0000000..459408a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/LambdaExtensions.cs
@@ -0,0 +1,183 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class LambdaExtensions
+    {
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="propertyName">瀛楁鍚�</param>
+        /// <param name="propertyValue">琛ㄨ揪寮忕殑鍊�</param>
+        /// <param name="expressionType">鍒涘缓琛ㄨ揪寮忕殑绫诲瀷,濡�:p=>p.propertyName != propertyValue 
+        /// p=>p.propertyName.Contains(propertyValue)</param>
+        /// <returns></returns>
+        public static Expression<Func<T, bool>> CreateExpression<T>(this string propertyName, object propertyValue, LinqExpressionType expressionType)
+        {
+            return propertyName.CreateExpression<T>(propertyValue, null, expressionType);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="propertyName">瀛楁鍚�</param>
+        /// <param name="propertyValue">琛ㄨ揪寮忕殑鍊�</param>
+        /// <param name="expressionType">鍒涘缓琛ㄨ揪寮忕殑绫诲瀷,濡�:p=>p.propertyName != propertyValue 
+        /// p=>p.propertyName.Contains(propertyValue)</param>
+        /// <returns></returns>
+        private static Expression<Func<T, bool>> CreateExpression<T>(
+          this string propertyName,
+          object propertyValue,
+          ParameterExpression parameter,
+          LinqExpressionType expressionType)
+        {
+            Type proType = null;
+            PropertyInfo propertyInfo = typeof(T).GetProperty(propertyName);
+            if (propertyInfo != null)
+                proType = propertyInfo.PropertyType;
+            else
+            {
+                propertyInfo = typeof(T).GetProperty(propertyName.FirstLetterToLower());
+                if (propertyInfo != null)
+                    proType = propertyInfo.PropertyType;
+                else
+                {
+                    propertyInfo = typeof(T).GetProperty(propertyName.FirstLetterToUpper());
+                    if (propertyInfo != null)
+                        proType = propertyInfo.PropertyType;
+                    else
+                    {
+                        throw new Exception($"鏈壘鍒拌灞炴��,type:{typeof(T)}");
+                    }
+                }
+            }
+            //鍒涘缓鑺傜偣鍙橀噺濡俻=>鐨勮妭鐐筽
+            //  parameter ??= Expression.Parameter(typeof(T), "p");//鍒涘缓鍙傛暟p
+            parameter = parameter ?? Expression.Parameter(typeof(T), "p");
+
+            //鍒涘缓鑺傜偣鐨勫睘鎬=>p.name 灞炴�ame
+            MemberExpression memberProperty = Expression.PropertyOrField(parameter, propertyName);
+            if (expressionType == LinqExpressionType.In)
+            {
+                if (!(propertyValue is System.Collections.IList list) || list.Count == 0) throw new Exception("灞炴�у�肩被鍨嬩笉姝g‘");
+
+                bool isStringValue = true;
+                List<object> objList = new List<object>();
+
+                if (proType.ToString() != "System.String")
+                {
+                    isStringValue = false;
+                    foreach (var value in list)
+                    {
+                        objList.Add(value.ToString().ChangeType(proType));
+                    }
+                    list = objList;
+                }
+
+                if (isStringValue)
+                {
+                    //string 绫诲瀷鐨勫瓧娈碉紝濡傛灉鍊煎甫鏈�'鍗曞紩鍙�,EF浼氶粯璁ゅ彉鎴�''涓や釜鍗曞紩鍙�
+                    MethodInfo method = typeof(System.Collections.IList).GetMethod("Contains");
+                    //鍒涘缓闆嗗悎甯搁噺骞惰缃负甯搁噺鐨勫��
+                    ConstantExpression constantCollection = Expression.Constant(list);
+                    //鍒涘缓涓�涓〃绀鸿皟鐢ㄥ甫鍙傛暟鐨勬柟娉曠殑锛歯ew string[]{"1","a"}.Contains("a");
+                    MethodCallExpression methodCall = Expression.Call(constantCollection, method, memberProperty);
+                    return Expression.Lambda<Func<T, bool>>(methodCall, parameter);
+                }
+                //闈瀞tring瀛楁锛屾寜涓婇潰鏂瑰紡澶勭悊鎶ュ紓甯窷ull TypeMapping in Sql Tree
+                BinaryExpression body = null;
+                foreach (var value in list)
+                {
+                    ConstantExpression constantExpression = Expression.Constant(value);
+                    UnaryExpression unaryExpression = Expression.Convert(memberProperty, constantExpression.Type);
+
+                    body = body == null
+                        ? Expression.Equal(unaryExpression, constantExpression)
+                        : Expression.OrElse(body, Expression.Equal(unaryExpression, constantExpression));
+                }
+                return Expression.Lambda<Func<T, bool>>(body, parameter);
+            }
+
+            //  object value = propertyValue;
+            ConstantExpression constant = proType.ToString() == "System.String"
+                ? Expression.Constant(propertyValue) : Expression.Constant(propertyValue.ToString().ChangeType(proType));
+
+            // DateTime鍙�夋嫨浜嗘棩鏈熺殑鏃跺�欒嚜鍔ㄥ湪缁撴潫鏃ユ湡鍔犱竴澶╋紝淇DateTime绫诲瀷浣跨敤鏃ユ湡鍖洪棿鏌ヨ鏃犳硶鏌ヨ鍒扮粨鏉熸棩鏈熺殑闂
+            if ((proType == typeof(DateTime) || proType == typeof(DateTime?)) && expressionType == LinqExpressionType.LessThanOrEqual && propertyValue.ToString().Length == 10)
+            {
+                constant = Expression.Constant(Convert.ToDateTime(propertyValue.ToString()).AddDays(1));
+            }
+
+            UnaryExpression member = Expression.Convert(memberProperty, constant.Type);
+            Expression<Func<T, bool>> expression;
+            switch (expressionType)
+            {
+                //p=>p.propertyName == propertyValue
+                case LinqExpressionType.Equal:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.Equal(member, constant), parameter);
+                    break;
+                //p=>p.propertyName != propertyValue
+                case LinqExpressionType.NotEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.NotEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName > propertyValue
+                case LinqExpressionType.GreaterThan:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.GreaterThan(member, constant), parameter);
+                    break;
+                //   p => p.propertyName < propertyValue
+                case LinqExpressionType.LessThan:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.LessThan(member, constant), parameter);
+                    break;
+                // p => p.propertyName >= propertyValue
+                case LinqExpressionType.ThanOrEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);
+                    break;
+                // p => p.propertyName <= propertyValue
+                case LinqExpressionType.LessThanOrEqual:
+                    expression = Expression.Lambda<Func<T, bool>>(Expression.LessThanOrEqual(member, constant), parameter);
+                    break;
+                //   p => p.propertyName.Contains(propertyValue)
+                // p => !p.propertyName.Contains(propertyValue)
+                case LinqExpressionType.Contains:
+                case LinqExpressionType.NotContains:
+                    MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
+                    constant = Expression.Constant(propertyValue, typeof(string));
+                    if (expressionType == LinqExpressionType.Contains)
+                    {
+                        expression = Expression.Lambda<Func<T, bool>>(Expression.Call(member, method, constant), parameter);
+                    }
+                    else
+                    {
+                        expression = Expression.Lambda<Func<T, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);
+                    }
+                    break;
+                default:
+                    // p => p.false
+                    expression = False<T>();
+                    break;
+            }
+            return expression;
+        }
+
+        /// <summary>
+        /// 鍒涘缓lambda琛ㄨ揪寮忥細p=>false
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <returns></returns>
+        public static Expression<Func<T, bool>> False<T>()
+        {
+
+            return p => false;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs
new file mode 100644
index 0000000..bc8ad68
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/Utilities/VierificationCode.cs
@@ -0,0 +1,123 @@
+锘縰sing SkiaSharp;
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static log4net.Appender.ColoredConsoleAppender;
+
+namespace WIDESEA_Core.Utilities
+{
+    public static class VierificationCode
+    {
+        private static readonly string[] _chars = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
+
+        private static readonly SKColor[] colors = { SKColors.Black, SKColors.Green, SKColors.Brown };
+
+        private static readonly string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "瀹嬩綋" };
+        public static string RandomText()
+        {
+            string code = "";//浜х敓鐨勯殢鏈烘暟
+            int temp = -1;
+            Random rand = new Random();
+            for (int i = 1; i < 5; i++)
+            {
+                if (temp != -1)
+                {
+                    rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
+                }
+                int t = rand.Next(61);
+                if (temp != -1 && temp == t)
+                {
+                    return RandomText();
+                }
+                temp = t;
+                code += _chars[t];
+            }
+            return code;
+        }
+        public static string CreateBase64Imgage(string code)
+        {
+            var random = new Random();
+            var info = new SKImageInfo((int)code.Length * 18, 32);
+            using var bitmap = new SKBitmap(info);
+            using var canvas = new SKCanvas(bitmap);
+
+            canvas.Clear(SKColors.White);
+
+            using var pen = new SKPaint();
+            pen.FakeBoldText = true;
+            pen.Style = SKPaintStyle.Fill;
+            pen.TextSize = 20;// 0.6f * info.Width * pen.TextSize / pen.MeasureText(code);
+
+            //缁樺埗闅忔満瀛楃
+            for (int i = 0; i < code.Length; i++)
+            {
+                pen.Color = random.GetRandom(colors);//闅忔満棰滆壊绱㈠紩鍊�
+
+                pen.Typeface = SKTypeface.FromFamilyName(random.GetRandom(fonts), 700, 20, SKFontStyleSlant.Italic);//閰嶇疆瀛椾綋
+                var point = new SKPoint()
+                {
+                    X = i * 16,
+                    Y = 22// info.Height - ((i + 1) % 2 == 0 ? 2 : 4),
+
+                };
+                canvas.DrawText(code.Substring(i, 1), point, pen);//缁樺埗涓�涓獙璇佸瓧绗�
+
+            }
+
+            // 缁樺埗鍣偣
+            var points = Enumerable.Range(0, 100).Select(
+                _ => new SKPoint(random.Next(bitmap.Width), random.Next(bitmap.Height))
+            ).ToArray();
+            canvas.DrawPoints(
+                SKPointMode.Points,
+                points,
+                pen);
+
+            //缁樺埗璐濆灏旂嚎鏉�
+            for (int i = 0; i < 2; i++)
+            {
+                var p1 = new SKPoint(0, 0);
+                var p2 = new SKPoint(0, 0);
+                var p3 = new SKPoint(0, 0);
+                var p4 = new SKPoint(0, 0);
+
+                var touchPoints = new SKPoint[] { p1, p2, p3, p4 };
+
+                using var bPen = new SKPaint();
+                bPen.Color = random.GetRandom(colors);
+                bPen.Style = SKPaintStyle.Stroke;
+
+                using var path = new SKPath();
+                path.MoveTo(touchPoints[0]);
+                path.CubicTo(touchPoints[1], touchPoints[2], touchPoints[3]);
+                canvas.DrawPath(path, bPen);
+            }
+            return bitmap.ToBase64String(SKEncodedImageFormat.Png);
+        }
+
+        public static T GetRandom<T>(this Random random, T[] tArray)
+        {
+            if (random == null) random = new Random();
+            return tArray[random.Next(tArray.Length)];
+        }
+
+        /// <summary>
+        /// SKBitmap杞珺ase64String
+        /// </summary>
+        /// <param name="bitmap"></param>
+        /// <param name="format"></param>
+        /// <returns></returns>
+        public static string ToBase64String(this SKBitmap bitmap, SKEncodedImageFormat format)
+        {
+            using var memStream = new MemoryStream();
+            using var wstream = new SKManagedWStream(memStream);
+            bitmap.Encode(wstream, format, 32);
+            memStream.TryGetBuffer(out ArraySegment<byte> buffer);
+            return $"{Convert.ToBase64String(buffer.Array, 0, (int)memStream.Length)}";
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj
new file mode 100644
index 0000000..329bdc5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Core/WIDESEA_Core.csproj
@@ -0,0 +1,42 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+    <Version>1.0.1</Version>
+    <Authors>test</Authors>
+    <Description>dddddddddddddddddddddddddddddddddddd</Description>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="Autofac" Version="8.0.0" />
+    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="9.0.0" />
+    <PackageReference Include="Autofac.Extras.DynamicProxy" Version="7.1.0" />
+    <PackageReference Include="AutoMapper" Version="13.0.1" />
+    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.5.8" />
+    <PackageReference Include="HslCommunication" Version="12.5.2" />
+    <PackageReference Include="log4net" Version="2.0.17" />
+    <PackageReference Include="Magicodes.IE.EPPlus" Version="2.7.5.2" />
+    <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.2" />
+    <PackageReference Include="MailKit" Version="4.7.1.1" />
+    <PackageReference Include="Masuit.Tools.Core" Version="2024.5.6" />
+    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.29" />
+    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
+    <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.3.8" />
+    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+    <PackageReference Include="OfficeOpenXml.Core.ExcelPackage" Version="1.0.0" />
+    <PackageReference Include="SkiaSharp" Version="2.88.8" />
+    <PackageReference Include="SqlSugarCore" Version="5.1.4.152" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.7.0" />
+    <PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.5" />
+    <PackageReference Include="Swashbuckle.AspNetCore.Newtonsoft" Version="6.5.0" />
+    <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Attribute\" />
+    <Folder Include="ServiceExtensions\" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/GroupPlate.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/GroupPlate.cs
new file mode 100644
index 0000000..782b283
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/GroupPlate.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class GroupPlate
+    {
+        public string palletCode { get; set; }
+
+        public List<string> OrderNos { get; set; }
+
+        public List<GroupPlateInfo> groups { get; set; }
+    }
+    public class GroupPlateInfo
+    {
+        public string orderNo { get; set; }
+
+        public decimal quantity { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/PalletCodeInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/PalletCodeInfo.cs
new file mode 100644
index 0000000..38c7ac9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/PalletCodeInfo.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class PalletCodeInfo
+    {
+        public string orderNo { get; set; }
+        public string warehouseName { get; set; }
+        public string materialNo { get; set; }
+        public decimal quantity { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
new file mode 100644
index 0000000..1424507
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/RequestTaskDto.cs
@@ -0,0 +1,84 @@
+锘縩amespace WIDESEA_DTO;
+
+public class RequestTaskDto
+{
+    /// <summary>
+    /// 褰撳墠浣嶇疆
+    /// </summary>
+    public string Position { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏鍙�
+    /// </summary>
+    public string PalletCode { get; set; }
+
+    /// <summary>
+    /// 缁堢偣
+    /// </summary>
+    public string TargetAddress { get; set; }
+
+
+    public string OrderNo { get; set; }
+
+
+    public string MaterielCode { get; set; }
+
+    /// <summary>
+    /// 鍖哄煙
+    /// </summary>
+
+    public int AreaId { get; set; }
+
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+
+    public int TaskNum { get; set; }
+
+    /// <summary>
+    /// 浠诲姟绫诲瀷 
+    /// </summary>
+    public int TaskType { get; set; }
+
+
+    public int DoubleTray { get; set; }
+
+}
+public class RequestAcrossFloorTaskDto
+{
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+    public int TaskNum { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏鍙�
+    /// </summary>
+    public string PalletCode { get; set; }
+
+    /// <summary>
+    /// 涓嬩竴浣嶇疆
+    /// </summary>
+    public string NextAddress { get; set; }
+ }
+
+public class RequestOutTaskDto
+{
+    /// <summary>
+    /// 褰撳墠浣嶇疆
+    /// </summary>
+    public string Position { get; set; }
+
+    /// <summary>
+    /// 鎵樼洏鍙�
+    /// </summary>
+    public string PalletCode { get; set; }
+
+    /// <summary>
+    /// 缁堢偣
+    /// </summary>
+    public string TargetAddress { get; set; }
+
+
+    public int AreaId { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/StockDataDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/StockDataDTO.cs
new file mode 100644
index 0000000..1f239a7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/StockDataDTO.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Basic
+{
+    public class StockDataDTO
+    {
+        public string Name { get; set; }
+        public int Value { get; set; }
+        public string CompareType { get; set; }
+        public string Change { get; set; }
+        public bool IsIncrease { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs
new file mode 100644
index 0000000..2b109c5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Basic/UpdateStatusDto.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO
+{
+    public class UpdateStatusDto
+    {
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskState { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationCache.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationCache.cs
new file mode 100644
index 0000000..326a6d0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationCache.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Location
+{
+    public class LocationCache
+    {
+        public string LocationCode { get; set; }
+
+        public DateTime DateTime { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationChangeRecordDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationChangeRecordDto.cs
new file mode 100644
index 0000000..9797c58
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Location/LocationChangeRecordDto.cs
@@ -0,0 +1,35 @@
+锘縩amespace WIDESEA_DTO
+{
+    public class LocationChangeRecordDto
+    {
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅ID
+        /// </summary>
+        public int LocationId { get; set; }
+
+        /// <summary>
+        /// 鍙樻洿鍓嶇姸鎬�
+        /// </summary>
+        public int BeforeStatus { get; set; }
+
+        /// <summary>
+        /// 鍙樻洿鍚庣姸鎬�
+        /// </summary>
+        public int AfterStatus { get; set; }
+
+        /// <summary>
+        /// 鍙樻洿绫诲瀷
+        /// </summary>
+        public int ChangeType { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        public int TaskNum { get; set; } = 0;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs
new file mode 100644
index 0000000..4d27b2f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/GetStockSelectViewDto.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Stock
+{
+    public class GetStockSelectViewDto
+    {
+        public string materielCode { get; set; }
+
+        public int pageNo { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs
new file mode 100644
index 0000000..25510e2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/Stock/StockSelectViewDTO.cs
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.Stock
+{
+    public class StockSelectViewDTO
+    {
+        public int Id { get; set; }
+        public string MaterielCode { get; set; }
+
+        public string MaterielName { get; set; }
+
+        public decimal UseableQuantity { get; set; }
+
+        public string PalletCode { get; set; }
+
+        public string LocationCode { get; set; }
+
+        public decimal Quantity { get; set; }   
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/ActionDTO.cs
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/ActionDTO.cs
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs
new file mode 100644
index 0000000..44d8bde
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/MenuDTO.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_DTO.System
+{
+    public class MenuDTO : Sys_Menu
+    {
+        public List<ActionDTO> Actions { get; set; }
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_DTO/System/UserPermissions.cs
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/UserPermissions.cs
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs
new file mode 100644
index 0000000..ffa7f3b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/System/VueDictionaryDTO.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.System
+{
+    public class VueDictionaryDTO
+    {
+        public string DicNo { get; set; }
+
+        public string Config { get; set; }
+
+        public object Data {  get; set; }
+
+        public bool SaveCache { get; set; } = true;
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCS/Dt_DeviceInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCS/Dt_DeviceInfo.cs
new file mode 100644
index 0000000..74eb4f8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WCS/Dt_DeviceInfo.cs
@@ -0,0 +1,104 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_QuartzJob
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛氳澶囦俊鎭疄浣�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ *
+ *----------------------------------------------------------------*/
+
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEAWCS_QuartzJob.Models
+{
+    /// <summary>
+    /// 璁惧淇℃伅
+    /// </summary>
+    [SugarTable(nameof(Dt_DeviceInfo), "璁惧淇℃伅")]
+    public class Dt_DeviceInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [ImporterHeader(IsIgnore = true)]
+        [ExporterHeader(DisplayName = "涓婚敭")]
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 璁惧缂栧彿
+        /// </summary>
+        [ImporterHeader(Name = "璁惧缂栧彿")]
+        [ExporterHeader(DisplayName = "璁惧缂栧彿")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧缂栧彿")]
+        public string DeviceCode { get; set; }
+
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        [ImporterHeader(Name = "璁惧鍚嶇О")]
+        [ExporterHeader(DisplayName = "璁惧鍚嶇О")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璁惧鍚嶇О")]
+        public string DeviceName { get; set; }
+
+        /// <summary>
+        /// 璁惧绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "璁惧绫诲瀷")]
+        [ExporterHeader(DisplayName = "璁惧绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧绫诲瀷")]
+        public string DeviceType { get; set; }
+
+        /// <summary>
+        /// 璁惧鐘舵��
+        /// </summary>
+        [ImporterHeader(Name = "璁惧鐘舵��")]
+        [ExporterHeader(DisplayName = "璁惧鐘舵��")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧鐘舵��")]
+        public string DeviceStatus { get; set; }
+
+        /// <summary>
+        /// 璁惧IP
+        /// </summary>
+        [ImporterHeader(Name = "璁惧IP")]
+        [ExporterHeader(DisplayName = "璁惧IP")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧IP")]
+        public string DeviceIp { get; set; }
+
+        /// <summary>
+        /// 璁惧绔彛
+        /// </summary>
+        [ImporterHeader(Name = "璁惧绔彛")]
+        [ExporterHeader(DisplayName = "璁惧绔彛")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "璁惧绔彛")]
+        public int DevicePort { get; set; }
+
+        /// <summary>
+        /// PLC绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "PLC绫诲瀷")]
+        [ExporterHeader(DisplayName = "PLC绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "PLC绫诲瀷")]
+        public string DevicePlcType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [ImporterHeader(Name = "澶囨敞")]
+        [ExporterHeader(DisplayName = "澶囨敞")]
+        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string DeviceRemark { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj
new file mode 100644
index 0000000..3c9bb11
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WIDESEA_DTO.csproj
@@ -0,0 +1,13 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/GroupedStockInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/GroupedStockInfo.cs
new file mode 100644
index 0000000..2538e5a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/GroupedStockInfo.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_DTO.WMS
+{
+    public class GroupedStockInfo
+    {
+        public string AreaCode { get; set; }
+
+        public int TotalQuantity { get; set; }
+
+        public List<DtStockInfo> Items { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs
new file mode 100644
index 0000000..f10cb26
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_DTO/WMS/WMSTaskDTO.cs
@@ -0,0 +1,67 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_DTO.WMS
+{
+    public class WMSTaskDTO
+    {
+        /// <summary>
+        /// WMS浠诲姟涓婚敭
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鍙�
+        /// </summary>
+        public int TaskNum { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏鍙�
+        /// </summary>
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        public string RoadWay { get; set; }
+
+        /// <summary>
+        /// 浠诲姟绫诲瀷
+        /// </summary>
+        public int TaskType { get; set; }
+
+        /// <summary>
+        /// 浠诲姟鐘舵��
+        /// </summary>
+        public int TaskState { get; set; }
+
+        /// <summary>
+        /// 璧风偣
+        /// </summary>
+        public string SourceAddress { get; set; }
+
+        /// <summary>
+        /// 缁堢偣
+        /// </summary>
+        public string TargetAddress { get; set; }
+
+        /// <summary>
+        /// 浼樺厛绾�
+        /// </summary>
+        public int Grade { get; set; }
+
+        /// <summary>
+        /// 澶�  娉�: 鎵樼洏浜х嚎
+        ///</summary>
+        public string? AGVTaskNum { get; set; }
+
+
+        public string? Remark { get; set; }
+        public string? Floor { get; set; }
+        public int? DoubleTray { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_AreaInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_AreaInfoService.cs
new file mode 100644
index 0000000..a749e36
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_AreaInfoService.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessServices
+{
+    public interface IDt_AreaInfoService : IService<Dt_AreaInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_MaterielInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_MaterielInfoService.cs
new file mode 100644
index 0000000..4e11e6e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_MaterielInfoService.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessServices
+{
+    public interface IDt_MaterielInfoService : IService<Dt_MaterielInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_TaskExecuteDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_TaskExecuteDetailService.cs
new file mode 100644
index 0000000..c1ae710
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_TaskExecuteDetailService.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessServices
+{
+    public interface IDt_TaskExecuteDetailService : IService<Dt_TaskExecuteDetail>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_WareAreaInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_WareAreaInfoService.cs
new file mode 100644
index 0000000..1c81769
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/IDt_WareAreaInfoService.cs
@@ -0,0 +1,13 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+namespace WIDESEA_IBusinessServices
+{
+    public interface IDt_WareAreaInfoService : IService<Dt_WareAreaInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj
new file mode 100644
index 0000000..2bd4746
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessServices/WIDESEA_IBusinessServices.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_AreaInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_AreaInfoRepository.cs
new file mode 100644
index 0000000..c52cff3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_AreaInfoRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessesRepository
+{
+    public interface IDt_AreaInfoRepository : IRepository<Dt_AreaInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_MaterielInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_MaterielInfoRepository.cs
new file mode 100644
index 0000000..31011c8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_MaterielInfoRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessesRepository
+{
+    public interface IDt_MaterielInfoRepository : IRepository<Dt_MaterielInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_TaskExecuteDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_TaskExecuteDetailRepository.cs
new file mode 100644
index 0000000..47f8907
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_TaskExecuteDetailRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessesRepository
+{
+    public interface IDt_TaskExecuteDetailRepository : IRepository<Dt_TaskExecuteDetail>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_WareAreaInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_WareAreaInfoRepository.cs
new file mode 100644
index 0000000..0da5d6c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/IDt_WareAreaInfoRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IBusinessesRepository
+{
+    public interface IDt_WareAreaInfoRepository : IRepository<Dt_WareAreaInfo>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj
new file mode 100644
index 0000000..17d93c8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IBusinessesRepository/WIDESEA_IBusinessesRepository.csproj
@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+    <ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/WIDESEA_IOrderRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/WIDESEA_IOrderRepository.csproj
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderRepository/WIDESEA_IOrderRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/WIDESEA_IOrderServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/WIDESEA_IOrderServices.csproj
new file mode 100644
index 0000000..09325ce
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IOrderServices/WIDESEA_IOrderServices.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_OrderRepository\WIDESEA_OrderRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_ConfigRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_ConfigRepository.cs
new file mode 100644
index 0000000..9a643cd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_ConfigRepository.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_ConfigRepository : IRepository<Sys_Config>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_DictionaryRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_DictionaryRepository.cs
new file mode 100644
index 0000000..8a10124
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_DictionaryRepository.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_DictionaryRepository : IRepository<Sys_Dictionary>
+    {
+        IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = true);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_LogRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_LogRepository.cs
new file mode 100644
index 0000000..9c4f472
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_LogRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_IRepository
+{
+    public interface ISys_LogRepository : IRepository<Sys_Log>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_MenuRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_MenuRepository.cs
new file mode 100644
index 0000000..6e6af38
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_MenuRepository.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_MenuRepository : IRepository<Sys_Menu>
+    {
+        List<MenuDTO> GetAllMenu();
+
+        object GetSuperAdminMenu();
+
+        object GetMenuByRoleId(int roleId);
+
+        List<Permissions> GetPermissions(int roleId);
+
+        object GetMenu(List<int> menuIds);
+
+        object GetTreeItem(int menuId);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleAuthRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleAuthRepository.cs
new file mode 100644
index 0000000..5825b44
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleAuthRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_RoleAuthRepository : IRepository<Sys_RoleAuth>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleRepository.cs
new file mode 100644
index 0000000..1247e3d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_RoleRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_RoleRepository : IRepository<Sys_Role>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TenantRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TenantRepository.cs
new file mode 100644
index 0000000..401e256
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TenantRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_TenantRepository : IRepository<Sys_Tenant>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TestRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TestRepository.cs
new file mode 100644
index 0000000..246cede
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_TestRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_TestRepository : IRepository<Sys_Test>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_UserRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_UserRepository.cs
new file mode 100644
index 0000000..577c4fb
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/ISys_UserRepository.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IRepository
+{
+    public interface ISys_UserRepository : IRepository<Sys_User>
+    {
+        UserInfo GetUserInfo(string userName, string password);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IRepository/WIDESEA_IRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_ConfigService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_ConfigService.cs
new file mode 100644
index 0000000..db2d913
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_ConfigService.cs
@@ -0,0 +1,37 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_ConfigService : IService<Sys_Config>
+    {
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夌郴缁熼厤缃�
+        /// </summary>
+        /// <returns></returns>
+        List<Sys_Config> GetAll();
+
+        /// <summary>
+        /// 鏍规嵁绫诲埆鑾峰彇绯荤粺閰嶇疆
+        /// </summary>
+        /// <param name="category">绫诲埆</param>
+        /// <returns></returns>
+        List<Sys_Config> GetConfigsByCategory(string category);
+
+        /// <summary>
+        /// 鏍规嵁绫诲埆鍜孠ey鑾峰彇绯荤粺閰嶇疆
+        /// </summary>
+        /// <param name="category">绫诲埆</param>
+        /// <param name="configKey">閰嶇疆Key</param>
+        /// <returns></returns>
+        Sys_Config GetByConfigKey(string category, string configKey);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_DictionaryService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_DictionaryService.cs
new file mode 100644
index 0000000..0fb6035
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_DictionaryService.cs
@@ -0,0 +1,17 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_DictionaryService : IService<Sys_Dictionary>
+    {
+        //object GetVueDictionary(string[] dicNos);
+        List<VueDictionaryDTO> GetVueDictionary(string[] dicNos);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_LogService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_LogService.cs
new file mode 100644
index 0000000..a14a17d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_LogService.cs
@@ -0,0 +1,233 @@
+锘縰sing System.Text;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_ISystemServices
+{
+    #region 瀹炰綋绫�
+    public class DirInfo
+    {
+        /// <summary>
+        /// 褰撳墠璺緞
+        /// </summary>
+        public string dirPath { get; set; }
+
+        /// <summary>
+        /// 褰撳墠鍚嶇О
+        /// </summary>
+        public string dirName { get; set; }
+
+        /// <summary>
+        /// 瀛愭枃浠�
+        /// </summary>
+        public List<FileDataInfo> files { get; set; }
+
+        /// <summary>
+        /// 瀛愭枃浠跺す
+        /// </summary>
+        public List<DirInfo> dirs { get; set; }
+    }
+
+    public class FileDataInfo
+    {
+        public string filePath { get; set; }
+
+        public string fileName { get; set; }
+
+        public long fileSize { get; set; }
+    }
+
+    public class GetLogParm
+    {
+        /// <summary>
+        /// 鏂囦欢鍦板潃
+        /// </summary>
+        public string path;
+
+        /// <summary>
+        /// 璇诲彇杩涘害
+        /// </summary>
+        public float percent;
+
+        /// <summary>
+        /// 鏈�澶ц鍙栧ぇ灏�
+        /// </summary>
+        public double maxsize_KB = 20;
+
+        /// <summary>
+        /// 褰撳墠璧峰浣嶇疆
+        /// </summary>
+        public long topStartPos = 0;
+    }
+    #endregion
+    public interface ISys_LogService : IService<Sys_Log>
+    {
+        /// <summary>
+        /// 閫掑綊鑾峰彇鏂囦欢淇℃伅
+        /// </summary>
+        /// <param name="dirPath"></param>
+        /// <returns></returns>
+        private DirInfo GetDirInfo(string dirPath)
+        {
+            //褰撳墠鏂囦欢澶�
+            var dirInfo = new DirInfo();
+            dirInfo.dirName = Path.GetFileName(dirPath);
+
+            //瀛愭枃浠�
+            List<FileDataInfo> files = new List<FileDataInfo>();
+            foreach (var file in Directory.GetFiles(dirPath))
+            {
+                files.Add(new FileDataInfo()
+                {
+                    filePath = file,
+                    fileName = Path.GetFileName(file)
+                });
+            }
+
+            //瀛愭枃浠跺す
+            var dirs = Directory.GetDirectories(dirPath);
+            dirInfo.dirs = new List<DirInfo>();
+            foreach (var dir in dirs)
+            {
+                dirInfo.dirs.Add(GetDirInfo(dir));
+            }
+
+            //瀛愭枃浠跺す锛屼笌瀛愮洰褰曞悎骞�
+            foreach (var file in files)
+            {
+                dirInfo.dirs.Add(new DirInfo() { dirPath = file.filePath, dirName = file.fileName });
+            }
+            return dirInfo;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏃ュ織鏂囦欢鍒楄〃
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetLogList()
+        {
+            WebResponseContent content = new WebResponseContent();
+            string path = System.Environment.CurrentDirectory + "/log";
+            if (!System.IO.Directory.Exists(path))
+            {
+                return content.Error("鏆傛棤鏃ュ織鏂囦欢");
+            }
+
+            content.Data = GetDirInfo(path);
+            content.OK();
+            return content;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏂囦欢鍐呭
+        /// </summary>
+        /// <param name="parm"></param>
+        /// <returns></returns>
+        public WebResponseContent GetLogData(GetLogParm parm)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string res = "";
+            //鏄惁璇诲彇鍒版渶鍚�
+            bool isEnd = false;
+            long startIndex = 0;
+            //鏂囦欢澶у皬
+            long len = 0;
+            try
+            {
+                if (!System.IO.File.Exists(parm.path))
+                {
+                    throw new Exception($"鏂囦欢{parm.path}涓嶅瓨鍦紒");
+                }
+                using (FileStream fs = new FileStream(parm.path, FileMode.Open, FileAccess.Read, FileShare.Read))
+                {
+                    //鏈�澶ц鍙栧ぇ灏�
+                    int maxsize = (int)(1024 * parm.maxsize_KB);
+                    len = fs.Length;
+                    long startPos = (long)(len * (parm.percent / 100));//璧峰浣嶇疆
+                    long readLen = len - startPos;//璇诲彇闀垮害
+
+                    //鍚戝墠鍔犺浇
+                    if (parm.topStartPos != 0)
+                    {
+                        startPos = parm.topStartPos - maxsize;
+                        if (startPos < 0)
+                        {
+                            //宸茶鍒拌捣濮嬩綅
+                            startPos = 0;
+                            readLen = parm.topStartPos;
+                        }
+                        else
+                        {
+                            readLen = maxsize;
+                        }
+                    }
+                    else
+                    {
+                        //璇诲彇澶у皬鏄惁瓒呭嚭鏈�澶ч暱搴�
+                        if (readLen > maxsize)
+                        {
+                            readLen = maxsize;
+                        }
+                        else
+                        {
+                            isEnd = true;
+                        }
+                    }
+
+                    //鍔犺浇100%锛屾寜鏈�澶у唴瀹硅鍙�
+                    if (parm.percent == 100)
+                    {
+                        if (len < maxsize)
+                        {
+                            startPos = 0;
+                            readLen = len;
+                        }
+                        else
+                        {
+                            startPos = len - maxsize;
+                            readLen = maxsize;
+                        }
+                    }
+
+                    fs.Seek(startPos, SeekOrigin.Begin);
+                    var buffer = new byte[readLen];
+                    fs.Read(buffer, 0, (int)readLen);
+
+                    startIndex = startPos;
+                    if (startPos != 0 && (parm.percent != 0 || parm.topStartPos != 0))
+                    {
+                        //涓嶆槸浠庡ご鍔犺浇锛屽垹闄ゅ彲鑳戒笉瀹屾暣鐨勭涓�琛�
+                        int skipCount = 0;
+                        for (int i = 0; i < buffer.Length; i++)
+                        {
+                            if (buffer[i] == 10)
+                            {
+                                skipCount = i;
+                                break;
+                            }
+                        }
+                        if (skipCount != 0)
+                        {
+                            //鍘绘帀鎹㈣
+                            skipCount++;
+                            //涓嬫璇诲彇鍓嶅欢
+                            startIndex += skipCount;
+                        }
+                        res = Encoding.UTF8.GetString(buffer.Skip(skipCount).ToArray());
+                    }
+                    else
+                    {
+                        res = Encoding.UTF8.GetString(buffer);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                return content.Error(ex.Message);
+            }
+            return content.OK(data: new { content = res, isEnd, startIndex, len });
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_MenuService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_MenuService.cs
new file mode 100644
index 0000000..64d8daa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_MenuService.cs
@@ -0,0 +1,29 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_MenuService : IService<Sys_Menu>
+    {
+        object GetCurrentMenuActionList();
+
+        object GetCurrentMenuPhoneActionList();
+
+        List<MenuDTO> GetUserMenuList(int roleId);
+
+        List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId);
+
+        object GetMenu();
+
+        object GetTreeItem(int menuId);
+
+        WebResponseContent Save(Sys_Menu menu);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_RoleService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_RoleService.cs
new file mode 100644
index 0000000..1fdd979
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_RoleService.cs
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_DTO.System;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_RoleService : IService<Sys_Role>
+    {
+        List<RoleNodes> GetAllChildren(int roleId);
+        WebResponseContent GetCurrentTreePermission();
+
+        WebResponseContent GetUserTreePermission(int role_Id);
+
+        WebResponseContent SavePermission(List<UserPermissionDTO> userPermissions, int roleId);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TenantService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TenantService.cs
new file mode 100644
index 0000000..b3bbb8a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TenantService.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_TenantService : IService<Sys_Tenant>
+    {
+        WebResponseContent InitTenantInfo(string tenantName, int tenantType);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TestService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TestService.cs
new file mode 100644
index 0000000..e4f9568
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_TestService.cs
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_TestService : IService<Sys_Test>
+    {
+        WebResponseContent TranTest();
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_UserService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_UserService.cs
new file mode 100644
index 0000000..837f7f8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/ISys_UserService.cs
@@ -0,0 +1,24 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+
+namespace WIDESEA_IServices
+{
+    public interface ISys_UserService : IService<Sys_User>
+    {
+        WebResponseContent Login(LoginInfo loginInfo);
+
+        WebResponseContent GetCurrentUserInfo();
+
+        WebResponseContent ModifyPwd(string oldPwd, string newPwd);
+        WebResponseContent ModifyUserPwd(string password, string userName);
+        WebResponseContent UpdateInfo(int user_Id, string roleName, string userName, string userTrueName, string address, int gender, string remark);
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj
new file mode 100644
index 0000000..1867b89
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IServices/WIDESEA_IServices.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Repository\WIDESEA_Repository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_InventoryRecordRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_InventoryRecordRepository.cs
new file mode 100644
index 0000000..67bcf2c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_InventoryRecordRepository.cs
@@ -0,0 +1,31 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_ITaskInfoRepository
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+    public interface IDt_InventoryRecordRepository : IRepository<Dt_InventoryRecord>
+    {
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_StationManagerRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_StationManagerRepository.cs
new file mode 100644
index 0000000..314ee61
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/BasicInfo/IDt_StationManagerRepository.cs
@@ -0,0 +1,31 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_ITaskInfoRepository
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+    public interface IDt_StationManagerRepository : IRepository<Dt_StationManager>
+    {
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoDetailRepository.cs
new file mode 100644
index 0000000..6ab4efc
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoDetailRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageBasicRepository
+{
+    public interface IBoxingInfoDetailRepository : IRepository<DtBoxingInfoDetail>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoHtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoHtyRepository.cs
new file mode 100644
index 0000000..7a47a58
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoHtyRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageBasicRepository
+{
+    public interface IBoxingInfoHtyRepository : IRepository<DtBoxingInfo_Hty>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoRepository.cs
new file mode 100644
index 0000000..bdef9a1
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Boxing/IBoxingInfoRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageBasicRepository
+{
+    public interface IBoxingInfoRepository : IRepository<DtBoxingInfo>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/GlobalUsing.cs
new file mode 100644
index 0000000..db797a1
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/GlobalUsing.cs
@@ -0,0 +1,2 @@
+锘縢lobal using WIDESEA_Core.BaseRepository;
+global using WIDESEA_Model.Models;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationInfoRepository.cs
new file mode 100644
index 0000000..1270d09
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationInfoRepository.cs
@@ -0,0 +1,5 @@
+锘縩amespace WIDESEA_IStorageBasicRepository;
+
+public interface ILocationInfoRepository : IRepository<DtLocationInfo>
+{
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationStatusChangeRecordRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationStatusChangeRecordRepository.cs
new file mode 100644
index 0000000..d8a66cf
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Location/ILocationStatusChangeRecordRepository.cs
@@ -0,0 +1,20 @@
+锘縰sing WIDESEA_DTO;
+
+namespace WIDESEA_IStorageBasicRepository;
+
+public interface ILocationStatusChangeRecordRepository : IRepository<DtLocationStatusChangeRecord>
+{
+    /// <summary>
+    /// 娣诲姞璐т綅鍙樺姩璁板綍
+    /// </summary>
+    /// <param name="changeRecordDto">鏁版嵁妯″瀷</param>
+    /// <returns></returns>
+    bool AddStatusChangeRecord(LocationChangeRecordDto changeRecordDto);
+
+
+    bool AddStatusChangeRecord(List<LocationChangeRecordDto> changeRecordDto);
+
+    void AddLocationStatusChangeRecord(DtLocationInfo locationInfo, int lastStatus, int changeType, int? taskNum);
+
+    void AddLocationStatusChangeRecord(List<DtLocationInfo> locationInfos, int newStatus, int changeType, List<int>? taskNums);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoDetailRepository.cs
new file mode 100644
index 0000000..d5b0faa
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoDetailRepository.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_IStorageBasicRepository
+{
+    public interface IStockInfoDetailRepository : IRepository<DtStockInfoDetail>
+    {
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoHtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoHtyRepository.cs
new file mode 100644
index 0000000..2beb08b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoHtyRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageBasicRepository
+{
+    public interface IStockInfoHtyRepository : IRepository<DtStockInfo_Hty>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoRepository.cs
new file mode 100644
index 0000000..23c73b4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/Stock/IStockInfoRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageBasicRepository
+{
+    public interface IStockInfoRepository : IRepository<DtStockInfo>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicRepository/WIDESEA_IStorageBasicRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_InventoryRecordService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_InventoryRecordService.cs
new file mode 100644
index 0000000..07928cd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_InventoryRecordService.cs
@@ -0,0 +1,27 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_ITaskInfoService
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ *
+ *----------------------------------------------------------------*/
+
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoService
+{
+    public interface IDt_InventoryRecordService : IService<Dt_InventoryRecord>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_StationManagerService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_StationManagerService.cs
new file mode 100644
index 0000000..6e908a5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/BasicInfo/IDt_StationManagerService.cs
@@ -0,0 +1,27 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_ITaskInfoService
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ *
+ *----------------------------------------------------------------*/
+
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoService
+{
+    public interface IDt_StationManagerService : IService<Dt_StationManager>
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoDetailService.cs
new file mode 100644
index 0000000..e343681
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoDetailService.cs
@@ -0,0 +1,5 @@
+锘縩amespace WIDESEA_IStorageBasicService;
+
+public interface IBoxingInfoDetailService : IService<DtBoxingInfoDetail>
+{
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoHtyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoHtyService.cs
new file mode 100644
index 0000000..1830ba4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoHtyService.cs
@@ -0,0 +1,9 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_DTO.Basic;
+
+namespace WIDESEA_IStorageBasicService;
+
+public interface IBoxingInfoHtyService : IService<DtBoxingInfo_Hty>
+{
+   
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoService.cs
new file mode 100644
index 0000000..c31d8c5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Boxing/IBoxingInfoService.cs
@@ -0,0 +1,11 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_DTO.Basic;
+
+namespace WIDESEA_IStorageBasicService;
+
+public interface IBoxingInfoService : IService<DtBoxingInfo>
+{
+    Task<WebResponseContent> AddGroupPlateAsync(GroupPlate groupPlate);
+
+    Task<WebResponseContent> DeleteGroupPlateAsync(GroupPlate groupPlate);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/GlobalUsing.cs
new file mode 100644
index 0000000..6dfb8c0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/GlobalUsing.cs
@@ -0,0 +1,3 @@
+锘縢lobal using WIDESEA_Core;
+global using WIDESEA_Core.BaseServices;
+global using WIDESEA_Model.Models;
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs
new file mode 100644
index 0000000..8bfe71a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationInfoService.cs
@@ -0,0 +1,11 @@
+锘縰sing WIDESEA_DTO;
+
+namespace WIDESEA_IStorageBasicService;
+
+public interface ILocationInfoService : IService<DtLocationInfo>
+{
+    Task<WebResponseContent> initializeLocation(string locationCode);
+
+    WebResponseContent CreateLocation(int x, int y, int z, int locType, int areaId);
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationStatusChangeRecordService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationStatusChangeRecordService.cs
new file mode 100644
index 0000000..cf9fc08
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Location/ILocationStatusChangeRecordService.cs
@@ -0,0 +1,5 @@
+锘縩amespace WIDESEA_IStorageBasicService;
+
+public interface ILocationStatusChangeRecordService : IService<DtLocationStatusChangeRecord>
+{
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoDetailService.cs
new file mode 100644
index 0000000..cfba088
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoDetailService.cs
@@ -0,0 +1,5 @@
+锘縩amespace WIDESEA_IStorageBasicService;
+
+public interface IStockInfoDetailService : IService<DtStockInfoDetail>
+{
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoHtyvice.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoHtyvice.cs
new file mode 100644
index 0000000..8837b61
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoHtyvice.cs
@@ -0,0 +1,5 @@
+锘縩amespace WIDESEA_IStorageBasicService;
+
+public interface IStockInfoHtyService : IService<DtStockInfo_Hty>
+{
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs
new file mode 100644
index 0000000..e6b0584
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/Stock/IStockInfoService.cs
@@ -0,0 +1,14 @@
+锘縰sing WIDESEA_DTO.Basic;
+using WIDESEA_DTO.Stock;
+
+namespace WIDESEA_IStorageBasicService;
+
+public interface IStockInfoService : IService<DtStockInfo>
+{
+    /// <summary>
+    /// 搴撳瓨瑙嗗浘
+    /// </summary>
+    /// <param name="viewDto"></param>
+    /// <returns></returns>
+    List<StockSelectViewDTO> GetStockSelectViews(GetStockSelectViewDto viewDto);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj
new file mode 100644
index 0000000..e8322b3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageBasicService/WIDESEA_IStorageBasicServices.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_StorageBasicRepository\WIDESEA_StorageBasicRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/GlobalUsing.cs
new file mode 100644
index 0000000..74a991a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/GlobalUsing.cs
@@ -0,0 +1,2 @@
+锘縢lobal using WIDESEA_Core.BaseRepository;
+global using WIDESEA_Model.Models;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_TaskRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_TaskRepository.cs
new file mode 100644
index 0000000..e5ef596
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_TaskRepository.cs
@@ -0,0 +1,32 @@
+锘縩amespace WIDESEA_IStorageTaskRepository;
+
+public interface IDt_TaskRepository : IRepository<Dt_Task>
+{
+    Task<Dt_Task> GetById(int id);
+
+    Task<List<Dt_Task>> GetList();
+
+    Task<Dt_Task> Create(Dt_Task model);
+
+    Task<bool> Create(List<Dt_Task> models);
+
+    Task<bool> Update(Dt_Task model);
+
+    Task<bool> Update(List<Dt_Task> models);
+
+    Task<bool> Delete(int id);
+
+    Task<bool> Delete(List<int> ids);
+
+    Task<List<Dt_Task>> GetListByOutOrder(int outOrderId);
+
+    Task<List<Dt_Task>> GetListByOutOrderAndStatus(int outOrderId, int status);
+
+    Task<List<Dt_Task>> GetListByStatus(int status);
+
+    /// <summary>
+    /// 鑾峰彇浠诲姟缂栧彿
+    /// </summary>
+    /// <returns></returns>
+    Task<int> GetTaskNo();
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_Task_HtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_Task_HtyRepository.cs
new file mode 100644
index 0000000..ec500f9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/IDt_Task_HtyRepository.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageTaskRepository;
+
+public interface IDt_Task_HtyRepository : IRepository<Dt_Task_Hty>
+{
+    bool InsertTask(Dt_Task_Hty task);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/ITaskExecuteDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/ITaskExecuteDetailRepository.cs
new file mode 100644
index 0000000..e7c46df
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/Task/ITaskExecuteDetailRepository.cs
@@ -0,0 +1,13 @@
+锘縩amespace WIDESEA_IStorageTaskRepository;
+
+public interface ITaskExecuteDetailRepository : IRepository<Dt_TaskExecuteDetail>
+{
+    /// <summary>
+    /// 娣诲姞浠诲姟鏄庣粏
+    /// </summary>
+    /// <param name="dt_Task">浠诲姟鏁版嵁</param>
+    /// <param name="isManual">鏄惁浜哄伐鎿嶄綔</param>
+    /// <param name="message">鎵ц淇℃伅</param>
+    /// <returns></returns>
+    Task<bool> AddDetailAsync(Dt_Task dt_Task, bool isManual, string message);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj
new file mode 100644
index 0000000..a70161f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskRepository/WIDESEA_IStorageTaskRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_DTO\WIDESEA_DTO.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/GlobalUsing.cs
new file mode 100644
index 0000000..d9777d7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/GlobalUsing.cs
@@ -0,0 +1,3 @@
+锘縢lobal using WIDESEA_Core;
+global using WIDESEA_Core.BaseServices;
+global using WIDESEA_Model.Models;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
new file mode 100644
index 0000000..fad6cd6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_TaskService.cs
@@ -0,0 +1,97 @@
+锘縰sing WIDESEA_Common;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO;
+using WIDESEA_DTO.WMS;
+
+namespace WIDESEA_IStorageTaskServices;
+
+public interface IDt_TaskService : IService<Dt_Task>
+{
+    
+    /// <summary>
+    /// 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔�
+    /// </summary>
+    /// <param name="taskNum"></param>
+    /// <returns></returns>
+    Task<Dt_Task> GetByTaskNum(int taskNum);
+
+    /// <summary>
+    /// 鍫嗗灈鏈轰换鍔″畬鎴�
+    /// </summary>
+    /// <param name="saveModel">浠诲姟鏁版嵁鍚堥泦</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    abstract Task<WebResponseContent> CompleteOutboundTaskAsync(Dt_Task task, DtStockInfo stock);
+
+    /// <summary>
+    /// 浠诲姟瀹屾垚
+    /// </summary>
+    /// <param name="saveModel"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> CompleteAsync(int taskNum);
+
+    /// <summary>
+    /// 鍙栨秷浠诲姟
+    /// </summary>
+    /// <param name="taskNum"></param>
+    /// <returns></returns>
+    WebResponseContent TaskCancel(int taskNum);
+
+    /// <summary>
+    /// 鑾峰彇浠诲姟淇℃伅
+    /// </summary>
+    /// <returns></returns>
+    WebResponseContent GetTaskInfo();
+
+
+    /// <summary>
+    /// 璇锋眰浠诲姟宸烽亾
+    /// </summary>
+    /// <param name="position"></param>
+    /// <param name="areaCode"></param>
+    /// <param name="palletCode"></param>
+    /// <param name="type"></param>
+    /// <returns></returns>
+    Task<WebResponseContent> RequestInboundTaskAsync(RequestTaskDto taskDto);
+
+
+    /// <summary>
+    /// 鑾峰彇绌鸿揣浣�
+    /// </summary>
+    /// <param name="roadWay"></param>
+    /// <returns></returns>
+    Task<DtLocationInfo> GetEmptyLocation(string roadWay);
+
+
+    /// <summary>
+    /// 璇锋眰鎵樼洏浠诲姟
+    /// </summary>
+    /// <param name="position">鐩爣浣嶇疆</param>
+    /// <param name="tag">鎵樼洏绫诲瀷锛�1锛氬疄鐩橈紝2锛氱┖鐩橈級</param>
+    /// <param name="areaCode">鍖哄煙缂栫爜</param>
+    /// <param name="roadways">宸烽亾鍒楄〃</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    Task<WebResponseContent> RequestOutboundTaskAsync(RequestTaskDto taskDto);
+
+
+    (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) GetlcoationState(Dt_Task task, StatusChangeTypeEnum StatusChangeTypeEnum,DtLocationInfo location);
+
+
+    /// <summary>
+    /// 浠诲姟鐘舵�佷慨鏀�
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState);
+
+
+    Task<WebResponseContent> SendWCSTask(List<WMSTaskDTO> taskDTO);
+
+    (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(DtLocationInfo location, LocationEnum locationStatus, int taskNum, int StatusChangeType);
+
+    (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, int StatusChangeType);
+
+    (DtLocationStatusChangeRecord, DtLocationInfo) UpdateEndLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType);
+
+    (DtLocationStatusChangeRecord, DtLocationInfo) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType);
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_Task_HtyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_Task_HtyService.cs
new file mode 100644
index 0000000..6d622b8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/IDt_Task_HtyService.cs
@@ -0,0 +1,11 @@
+锘縩amespace WIDESEA_IStorageTaskServices;
+
+public interface IDt_Task_HtyService : IService<Dt_Task_Hty>
+{
+    /// <summary>
+    /// 娣诲姞鍘嗗彶浠诲姟
+    /// </summary>
+    /// <param name="task">鍘嗗彶浠诲姟Model</param>
+    /// <returns>鎴愬姛/澶辫触</returns>
+    bool InsertTask(Dt_Task_Hty task);
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/ITaskExecuteDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/ITaskExecuteDetailService.cs
new file mode 100644
index 0000000..aaaeeed
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/Task/ITaskExecuteDetailService.cs
@@ -0,0 +1,6 @@
+锘縩amespace WIDESEA_IStorageTaskServices;
+
+public interface ITaskExecuteDetailService : IService<Dt_TaskExecuteDetail>
+{
+    
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj
new file mode 100644
index 0000000..ceba40d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_IStorageTaskService/WIDESEA_IStorageTaskServices.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_StorageTaskRepository\WIDESEA_StorageTaskRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs
new file mode 100644
index 0000000..cf308d4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_AreaInfo.cs
@@ -0,0 +1,96 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鍖哄煙琛�
+    ///</summary>
+    [SugarTable("Dt_AreaInfo")]
+    public class Dt_AreaInfo : BaseEntity
+    {
+        
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙ID
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaID" ,IsPrimaryKey = true,IsIdentity = true) ]
+        public int AreaID  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙缂栫爜
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaCode" ) ]
+        public string AreaCode  { get; set;  } = null!;
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙鍚嶇О
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaName" ) ]
+        public string? AreaName  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙绫诲瀷
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaType" ) ]
+        public string? AreaType  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙鎻忚堪
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaDesc" ) ]
+        public string? AreaDesc  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙鐘舵��
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="AreaStatus" ) ]
+        public int? AreaStatus  { get; set;  } 
+     
+       
+     
+        /// <summary>
+        /// 澶�  娉�: 鍖哄煙鐐逛綅
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Spare1" ) ]
+        public string? Spare1  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�: 瀵瑰簲MOM鍖哄煙缂栫爜
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Spare2" ) ]
+        public string? Spare2  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�: 涓婁綅杞欢鍚嶇О
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Spare3" ) ]
+        public string? Spare3  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Spare4" ) ]
+        public string? Spare4  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Spare5" ) ]
+        public string? Spare5  { get; set;  }
+    }
+    
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs
new file mode 100644
index 0000000..80fe168
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_MaterielInfo.cs
@@ -0,0 +1,95 @@
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+/// <summary>
+/// 鐗╂枡鍩烘湰淇℃伅琛�
+///</summary>
+[SugarTable("Dt_MaterielInfo")]
+public class Dt_MaterielInfo : BaseEntity
+{
+    /// <summary>
+    /// 澶�  娉�:鐗╂枡ID
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MaterielID", IsPrimaryKey = true, IsIdentity = true)]
+    public int MaterielID { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐗╂枡缂栫爜
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MaterielCode", IsNullable = false)]
+    public string? MaterielCode { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐗╂枡鍚嶇О
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MaterielName", IsNullable = false)]
+    public string? MaterielName { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐗╂枡鎻忚堪
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MaterielDesc", IsNullable = true)]
+    public string? MaterielDesc { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:褰撳墠鐘舵�侊紙0锛岀鐢� 1锛屽惎鐢級
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Status", IsNullable = false)]
+    public int? Status { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鏈�灏忓寘瑁呮暟
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MinpackQty", IsNullable = true)]
+    public decimal? MinpackQty { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐢熶骇鍟�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Mfacturer", IsNullable = true)]
+    public string? Mfacturer { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鍑�閲�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Netweight", IsNullable = true)]
+    public decimal? Netweight { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:姣涢噸
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Grossweight", IsNullable = true)]
+    public decimal? Grossweight { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鏈夋晥鏈�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Validity", IsNullable = true)]
+    public int? Validity { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:瀹夊叏搴撳瓨
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Safety", IsNullable = true)]
+    public decimal? Safety { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:澶囨敞
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Remark", IsNullable = true)]
+    public string? Remark { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PrintSetting.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PrintSetting.cs
new file mode 100644
index 0000000..e14c896
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_PrintSetting.cs
@@ -0,0 +1,52 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鎵撳嵃閰嶇疆
+    ///</summary>
+    [SugarTable("Dt_PrintSetting")]
+    public class Dt_PrintSetting : BaseEntity
+    {
+        /// <summary>
+        /// 澶�  娉�:鍖哄煙ID
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true,IsIdentity = true) ]
+        public int Id  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鎵撳嵃缂栫爜
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName= "PrintCode") ]
+        public string PrintCode  { get; set;  }
+     
+        /// <summary>
+        /// 澶�  娉�:鎵撳嵃鏁伴噺
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="PrintNo" ) ]
+        public int PrintNo  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:澶囩敤
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName= "Spare1") ]
+        public string? Spare1  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:澶囩敤
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName= "Spare2") ]
+        public int Spare2  { get; set;  } 
+     
+        
+    }
+    
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_StationManager.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_StationManager.cs
new file mode 100644
index 0000000..f45971b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_StationManager.cs
@@ -0,0 +1,109 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_Model.Models.TaskInfo
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models.Basic
+{
+    [SugarTable(nameof(Dt_StationManager), "绔欏彴淇℃伅")]
+    public class Dt_StationManager : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "涓婚敭")]
+        [ExporterHeader(DisplayName = "涓婚敭")]
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int stationID { get; set; }
+
+        /// <summary>
+        /// 绔欏彴绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "绔欏彴绫诲瀷")]
+        [ExporterHeader(DisplayName = "绔欏彴绫诲瀷")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绔欏彴绫诲瀷")]
+        public int stationType { get; set; }
+
+        /// <summary>
+        /// 鎵�灞濸LC
+        /// </summary>
+        [ImporterHeader(Name = "鎵�灞濸LC")]
+        [ExporterHeader(DisplayName = "鎵�灞濸LC")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵�灞濸LC")]
+        public string stationDeviceCode { get; set; }
+
+        /// <summary>
+        /// 宸烽亾鍙�
+        /// </summary>
+        [ImporterHeader(Name = "宸烽亾鍙�")]
+        [ExporterHeader(DisplayName = "宸烽亾鍙�")]
+        [SugarColumn(IsNullable = false, Length = 10, ColumnDescription = "宸烽亾鍙�")]
+        public string Roadway { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [ImporterHeader(Name = "澶囨敞")]
+        [ExporterHeader(DisplayName = "澶囨敞")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "澶囨敞")]
+        public string stationRemark { get; set; }
+
+        /// <summary>
+        /// 绾夸綋缂栧彿(瀛愯澶囩紪鍙�)
+        /// </summary>
+        [ImporterHeader(Name = "绾夸綋缂栧彿(瀛愯澶囩紪鍙�)")]
+        [ExporterHeader(DisplayName = "绾夸綋缂栧彿(瀛愯澶囩紪鍙�)")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绾夸綋缂栧彿(瀛愯澶囩紪鍙�)")]
+        public string stationChildCode { get; set; }
+
+        /// <summary>
+        /// 璁惧鍖哄煙
+        /// </summary>
+        [ImporterHeader(Name = "璁惧鍖哄煙")]
+        [ExporterHeader(DisplayName = "璁惧鍖哄煙")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璁惧鍖哄煙")]
+        public string stationArea { get; set; }
+
+        /// <summary>
+        /// 鍧愭爣鍦板潃
+        /// </summary>
+        [ImporterHeader(Name = "鍧愭爣鍦板潃")]
+        [ExporterHeader(DisplayName = "鍧愭爣鍦板潃")]
+        [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍧愭爣鍦板潃")]
+        public string stationLocation { get; set; }
+
+        public string remark { get; set; }
+
+        /// <summary>
+        /// 璁惧鐘舵��
+        /// </summary>
+        [ImporterHeader(Name = "璁惧鐘舵��")]
+        [ExporterHeader(DisplayName = "璁惧鐘舵��")]
+        [SugarColumn(IsNullable = false, Length = 255, ColumnDescription = "璁惧鐘舵��")]
+        public string stationStatus { get; set; }
+
+        /// <summary>
+        /// 妤煎眰
+        /// </summary>
+        [ImporterHeader(Name = "妤煎眰")]
+        [ExporterHeader(DisplayName = "妤煎眰")]
+        [SugarColumn(IsNullable = false, Length = 255, ColumnDescription = "妤煎眰")]
+        public string stationFloor { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs
new file mode 100644
index 0000000..1c3c012
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task.cs
@@ -0,0 +1,130 @@
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+/// <summary>
+/// 浠诲姟琛�
+///</summary>
+[SugarTable("Dt_Task", "浠诲姟琛�")]
+public class Dt_Task : BaseEntity
+{
+    /// <summary>
+    /// 澶�  娉�:涓婚敭
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "TaskId", IsPrimaryKey = true, IsIdentity = true)]
+    public int TaskId { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:浠诲姟鍙�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "TaskNum")]
+    public int? TaskNum { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鎵樼洏缂栧彿
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "PalletCode", Length = 30)]
+    public string? PalletCode { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鍗曟嵁缂栧彿
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "OrderNo", Length = 30, IsNullable = true)]
+    public string? OrderNo { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:宸烽亾
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Roadway", Length = 30, IsNullable = true)]
+    public string? Roadway { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:浠诲姟绫诲瀷锛�100 鍑哄簱;鐩樼偣鍑哄簱 101; 102 鍒嗘嫞鍑哄簱;103 璐ㄦ鍑哄簱;200 鍏ュ簱;鐩樼偣鍏ュ簱 201;鍒嗘嫞鍏ュ簱 202;璐ㄦ鍏ュ簱 203;绉诲簱 300;搴撳唴绉诲簱 301;搴撳绉诲簱 302  锛�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "TaskType")]
+    public int TaskType { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:浠诲姟鐘舵�侊紙0鏂板缓鍏ュ簱浠诲姟锛�   100GV鍏ュ簱鎵ц涓紝  101 AGV鍏ュ簱瀹屾垚锛�  102杈撻�佺嚎鍏ュ簱鎵ц涓紝 103杈撻�佺嚎鍏ュ簱瀹屾垚锛�  104鍫嗗灈鏈哄叆搴撴墽琛屼腑锛� 105鍫嗗灈鏈哄叆搴撳畬鎴愶紝   106鍏ュ簱浠诲姟瀹屾垚锛�107鍏ュ簱浠诲姟鍙栨秷 锛�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "TaskState")]
+    public int TaskState { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐗╂枡缂栧彿
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "MaterialNo", Length = 30, IsNullable = true)]
+    public string? MaterialNo { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:璧峰鍦板潃
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "SourceAddress", Length = 30)]
+    public string? SourceAddress { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:鐩爣鍦板潃
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "TargetAddress", Length = 30)]
+    public string? TargetAddress { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:褰撳墠浣嶇疆
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "CurrentAddress", Length = 30)]
+    public string? CurrentAddress { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:涓嬩竴鍦板潃
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "NextAddress", Length = 30)]
+    public string? NextAddress { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:浼樺厛绾�
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Grade")]
+    public int? Grade { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:浠诲姟涓嬪彂鏃堕棿
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Dispatchertime")]
+    public DateTime? Dispatchertime { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:澶囨敞
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Remark", Length = 100, IsNullable = true)]
+    public string? Remark { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "ErrorMessage", Length = 100, IsNullable = true)]
+    public string? ErrorMessage { get; set; }
+
+    /// <summary>
+    /// 浠诲姟鎵ц鏄庣粏
+    /// </summary>
+    [SugarColumn(ColumnName = "浠诲姟鎵ц鏄庣粏")]
+    [Navigate(NavigateType.OneToMany, nameof(Dt_TaskExecuteDetail.TaskId))]
+    public List<Dt_TaskExecuteDetail> Dt_TaskExecuteDetailList { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_TaskExecuteDetail.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_TaskExecuteDetail.cs
new file mode 100644
index 0000000..c427688
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_TaskExecuteDetail.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 浠诲姟鎵ц鏄庣粏琛�
+    ///</summary>
+    [SugarTable("Dt_TaskExecuteDetail")]
+    public class Dt_TaskExecuteDetail : BaseEntity
+    {
+        /// <summary>
+        /// 澶�  娉�:
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="TaskDetailId" ,IsPrimaryKey = true,IsIdentity = true) ]
+        public int TaskDetailId  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="TaskId" ) ]
+        public int? TaskId  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:浠诲姟鍙�
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="TaskNum" ) ]
+        public int? TaskNum  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:浠诲姟鐘舵��
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="TaskState" ) ]
+        public int? TaskState  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:鏄惁浜哄伐鎿嶄綔
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="IsManual" ) ]
+        public bool? IsManual  { get; set;  } 
+     
+        /// <summary>
+        /// 澶�  娉�:澶囨敞
+        /// 榛樿鍊�:
+        ///</summary>
+        [SugarColumn(ColumnName="Remark" ) ]
+        public string? Remark  { get; set;  } 
+    }
+    
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task_Hty.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task_Hty.cs
new file mode 100644
index 0000000..005f178
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_Task_Hty.cs
@@ -0,0 +1,31 @@
+锘縰sing SqlSugar;
+
+namespace WIDESEA_Model.Models;
+
+/// <summary>
+/// 浠诲姟琛�
+///</summary>
+[SugarTable("Dt_Task_Hty", "浠诲姟鍘嗗彶琛�")]
+public class Dt_Task_Hty : Dt_Task
+{
+    /// <summary>
+    /// 澶�  娉�: 瀹屾垚鏃堕棿
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "FinishTime", ColumnDescription = "瀹屾垚鏃堕棿")]
+    public DateTime FinishTime { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�: 鎿嶄綔绫诲瀷
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "OperateType", ColumnDescription = "鎿嶄綔绫诲瀷")]
+    public int OperateType { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�: 婧愬崟ID
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "SourceId", ColumnDescription = "婧愬崟ID")]
+    public int SourceId { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_WareAreaInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_WareAreaInfo.cs
new file mode 100644
index 0000000..f0f4c00
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/Basic/Dt_WareAreaInfo.cs
@@ -0,0 +1,47 @@
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+/// <summary>
+/// 搴撳尯琛�
+///</summary>
+[SugarTable("Dt_WareAreaInfo")]
+public class Dt_WareAreaInfo : BaseEntity
+{
+    /// <summary>
+    /// 澶�  娉�: 涓婚敭
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Id", IsPrimaryKey = true, IsIdentity = true)]
+    public int Id { get; set; }
+
+
+    /// <summary>
+    /// 澶�  娉�:搴撳尯浠g爜
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "WareAreaCode")]
+    public string WareAreaCode { get; set; } 
+
+    /// <summary>
+    /// 澶�  娉�:搴撳尯鍚嶇О
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "WareAreaName")]
+    public string? WareAreaName { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:搴撳尯绫诲瀷
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "WareAreaId")]
+    public string? WareAreaId { get; set; }
+
+    /// <summary>
+    /// 澶�  娉�:Status
+    /// 榛樿鍊�:
+    ///</summary>
+    [SugarColumn(ColumnName = "Status")]
+    public int Status { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Class1.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Class1.cs
new file mode 100644
index 0000000..2e40d19
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Class1.cs
@@ -0,0 +1,33 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    public class DtStockInfo_Htsy : DtStockInfo, IBaseHistoryEntity
+    {
+        /// <summary>
+        /// 鍘熻〃涓婚敭
+        /// </summary>
+        [ImporterHeader(Name = "鍘熻〃涓婚敭")]
+        [ExporterHeader(DisplayName = "鍘熻〃涓婚敭")]
+        [SugarColumn(IsNullable = false, DefaultValue = "0", ColumnDescription = "鍘熻〃涓婚敭")]
+        public int SourceId { get; set; }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [ImporterHeader(Name = "鎿嶄綔绫诲瀷")]
+        [ExporterHeader(DisplayName = "鎿嶄綔绫诲瀷")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎿嶄綔绫诲瀷")]
+        public string OperateType { get; set; }
+
+        /// <summary>
+        /// 绉诲叆鍘嗗彶鏃堕棿
+        /// </summary>
+        [ImporterHeader(Name = "绉诲叆鍘嗗彶鏃堕棿")]
+        [ExporterHeader(DisplayName = "绉诲叆鍘嗗彶鏃堕棿")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉诲叆鍘嗗彶鏃堕棿")]
+        public DateTime InsertTime { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs
new file mode 100644
index 0000000..b6fc21c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo.cs
@@ -0,0 +1,55 @@
+锘縰sing Masuit.Tools.Core.Validator;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable(nameof(DtBoxingInfo), "缁勭洏淇℃伅")]
+    public class DtBoxingInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Required]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅缂栫爜")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏁村嚭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鏁村嚭")]
+        public bool IsFullExit { get; set; } = true;
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐘舵��")]
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "BoxingInfoDetails")]
+        [Navigate(NavigateType.OneToMany, nameof(DtBoxingInfoDetail.BoxingInfoId))]
+        public List<DtBoxingInfoDetail>? BoxingInfoDetails { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail.cs
new file mode 100644
index 0000000..8e388e4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail.cs
@@ -0,0 +1,111 @@
+锘縰sing SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtBoxingInfoDetail), "缁勭洏鏄庣粏")]
+public class DtBoxingInfoDetail : BaseEntity
+{
+    /// <summary>
+    /// 涓婚敭
+    /// </summary>
+    [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+    public int Id { get; set; }
+
+    /// <summary>
+    /// 缁勭洏淇℃伅涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "缁勭洏淇℃伅涓婚敭")]
+    public int BoxingInfoId { get; set; }
+
+    /// <summary>
+    /// 鐗╂枡缂栫爜 缁戝畾浠g爜
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+    public string MaterielCode { get; set; }
+
+    /// <summary>
+    /// 鐗╂枡鍚嶇О
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+    public string MaterielName { get; set; }
+
+    /// <summary>
+    /// 闇�姹傚垎绫�
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "闇�姹傚垎绫�")]
+    public string DemandClassification { get; set; }
+
+    /// <summary>
+    /// 浠撳簱
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "浠撳簱")]
+    public string Warehouse { get; set; }
+
+
+    /// <summary>
+    /// 浠撳簱ID
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "WareHouseId")]
+    public string WareHouseId { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁缂栧彿 / 閫氶亾
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+    public string OrderNo { get; set; }
+
+    /// <summary>
+    /// 鍗曚綅
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+    public string Unit { get; set; }
+
+    /// <summary>
+    /// 瑙勬牸
+    /// </summary
+    [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "瑙勬牸")]
+    public string Specs { get; set; }
+
+    /// <summary>
+    /// 鍗曢噸
+    /// </summary>
+    [SugarColumn(IsNullable = false, DecimalDigits = 4, ColumnDescription = "閲嶉噺")]
+    public decimal Weight { get; set; }
+
+    /// <summary>
+    /// 鏁伴噺
+    /// </summary>
+    [SugarColumn(IsNullable = true, DecimalDigits = 4, ColumnDescription = "鏁伴噺", DefaultValue = "0")]
+    public decimal Quantity { get; set; }
+
+    /// <summary>
+    /// 缁勭洏鐘舵��
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, ColumnDescription = "缁勭洏鐘舵��")]
+    public int Status { get; set; }
+
+    /// <summary>
+    /// 鍥惧彿
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍥惧彿")]
+    public string DrawingNumber { get; set; }
+
+    /// <summary>
+    /// 鏃ユ湡
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鏃ユ湡")]
+
+    public string Date { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+    public string Remark { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail_Hty.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail_Hty.cs
new file mode 100644
index 0000000..5544f61
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfoDetail_Hty.cs
@@ -0,0 +1,12 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtBoxingInfoDetail_Hty), "缁勭洏鏄庣粏鍘嗗彶")]
+public class DtBoxingInfoDetail_Hty : DtBoxingInfoDetail
+{
+    
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo_Hty.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo_Hty.cs
new file mode 100644
index 0000000..c0a30a7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtBoxingInfo_Hty.cs
@@ -0,0 +1,56 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Masuit.Tools.Core.Validator;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable(nameof(DtBoxingInfo_Hty), "缁勭洏鍘嗗彶淇℃伅")]
+    public class DtBoxingInfo_Hty :BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Required]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅缂栫爜")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏁村嚭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鏁村嚭")]
+        public bool IsFullExit { get; set; } = true;
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐘舵��")]
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "BoxingInfoDetails")]
+        [Navigate(NavigateType.OneToMany, nameof(DtBoxingInfoDetail_Hty.BoxingInfoId))]
+        public List<DtBoxingInfoDetail_Hty>? BoxingInfoDetails { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs
new file mode 100644
index 0000000..564158e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationInfo.cs
@@ -0,0 +1,92 @@
+锘縰sing SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtLocationInfo), "璐т綅淇℃伅")]
+public class DtLocationInfo : BaseEntity
+{
+    /// <summary>
+    /// 涓婚敭
+    /// </summary>
+    [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+    public int Id { get; set; }
+
+    /// <summary>
+    /// 鍖哄煙涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍖哄煙涓婚敭")]
+    public int AreaId { get; set; }
+
+    /// <summary>
+    /// 璐т綅缂栧彿
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+    public string LocationCode { get; set; }
+
+    /// <summary>
+    /// 璐т綅鍚嶇О
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璐т綅鍚嶇О")]
+    public string LocationName { get; set; }
+
+    /// <summary>
+    /// 宸烽亾缂栧彿
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "宸烽亾缂栧彿")]
+    public string RoadwayNo { get; set; }
+
+    /// <summary>
+    /// 妤煎眰
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "妤煎眰")]
+    public string Floor { get; set; }
+
+    /// <summary>
+    /// 璐т綅琛�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅琛�")]
+    public int Row { get; set; }
+
+    /// <summary>
+    /// 璐т綅鍒�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅鍒�")]
+    public int Column { get; set; }
+
+    /// <summary>
+    /// 璐т綅灞�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅灞�")]
+    public int Layer { get; set; }
+
+    /// <summary>
+    /// 璐т綅娣卞害
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅娣卞害")]
+    public int Depth { get; set; }
+
+    /// <summary>
+    /// 璐т綅绫诲瀷  锛�1-鏅�氳揣鏋跺簱浣�  2-妫�娴嬫煖搴撲綅锛�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅绫诲瀷")]
+    public int LocationType { get; set; }
+
+    /// <summary>
+    /// 璐т綅鐘舵��
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅鐘舵��")]
+    public int LocationStatus { get; set; }
+
+    /// <summary>
+    /// 绂佺敤鐘舵��
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "绂佺敤鐘舵��")]
+    public int EnalbeStatus { get; set; }
+
+    /// <summary>
+    /// 澶囨敞  (妫�娴嬫煖鍏佽/涓嶅厑璁稿叆)
+    /// </summary>
+    [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "澶囨敞")]
+    public string Remark { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationStatusChangeRecord.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationStatusChangeRecord.cs
new file mode 100644
index 0000000..814abf0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtLocationStatusChangeRecord.cs
@@ -0,0 +1,74 @@
+锘縰sing SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtLocationStatusChangeRecord), "璐т綅鐘舵�佸彉鍔ㄨ褰�")]
+public class DtLocationStatusChangeRecord : BaseEntity
+{
+    /// <summary>
+    /// 涓婚敭
+    /// </summary>
+    [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+    public int Id { get; set; }
+
+    /// <summary>
+    /// 璐т綅涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "璐т綅涓婚敭")]
+    public int LocationId { get; set; }
+
+    /// <summary>
+    /// 璐т綅缂栧彿
+    /// </summary>
+    [SugarColumn(IsNullable = true, Length = 20, ColumnDescription = "璐т綅缂栧彿")]
+    public string LocationCode { get; set; }
+
+    /// <summary>
+    /// 鍙樺姩鍓嶈揣浣嶇姸鎬�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍓嶈揣浣嶇姸鎬�")]
+    public int BeforeStatus { get; set; }
+
+    /// <summary>
+    /// 鍙樺姩鍚庤揣浣嶇姸鎬�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩鍚庤揣浣嶇姸鎬�")]
+    public int AfterStatus { get; set; }
+
+    /// <summary>
+    /// 鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍙樺姩绫诲瀷锛堝嚭搴撱�佸叆搴撱�佹墜鍔ㄨ皟鏁�...锛�")]
+    public int ChangeType { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁涓婚敭")]
+    public int? OrderId { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁缂栧彿
+    /// </summary>
+    [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+    public string OrderNo { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁鏄庣粏涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁鏄庣粏涓婚敭")]
+    public int? OrderDetailId { get; set; }
+
+    /// <summary>
+    /// 浠诲姟鍙�
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "浠诲姟鍙�")]
+    public int? TaskNum { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+    public string Remark { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
new file mode 100644
index 0000000..4d1a0c8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo.cs
@@ -0,0 +1,79 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Masuit.Tools.Core.Validator;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable(nameof(DtStockInfo), "搴撳瓨淇℃伅")]
+    public class DtStockInfo : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅缂栫爜")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏁村嚭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鏁村嚭")]
+        public bool IsFullExit { get; set; } = true;
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐘舵��")]
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public string OrderType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "StockInfoDetails")]
+        [Navigate(NavigateType.OneToMany, nameof(DtStockInfoDetail.StockId))]
+        public List<DtStockInfoDetail>? StockInfoDetails { get; set; }
+
+        /// <summary>
+        /// 璐т綅鏁版嵁
+        /// </summary>
+        [SugarColumn(ColumnName = "LocationInfo")]
+        [Navigate(NavigateType.OneToOne, nameof(LocationCode), nameof(DtLocationInfo.LocationCode))]
+        public DtLocationInfo? LocationInfo { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs
new file mode 100644
index 0000000..053fd52
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail.cs
@@ -0,0 +1,128 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtStockInfoDetail), "搴撳瓨淇℃伅鏄庣粏")]
+public class DtStockInfoDetail : BaseEntity
+{
+    /// <summary>
+    /// 涓婚敭
+    /// </summary>
+    [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+    public int Id { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨淇℃伅涓婚敭
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "搴撳瓨淇℃伅涓婚敭")]
+    public int StockId { get; set; }
+
+    /// <summary>
+    /// 鐗╂枡缂栫爜 缁戝畾浠g爜
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栧彿")]
+    public string MaterielCode { get; set; }
+
+    /// <summary>
+    /// 鐗╂枡鍚嶇О
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "鐗╂枡鍚嶇О")]
+    public string MaterielName { get; set; }
+
+    /// <summary>
+    /// 闇�姹傚垎绫�
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "闇�姹傚垎绫�")]
+    public string DemandClassification { get; set; }
+
+    /// <summary>
+    /// 浠撳簱
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "浠撳簱")]
+    public string Warehouse { get; set; }
+
+    /// <summary>
+    /// 浠撳簱ID
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "WareHouseId")]
+    public string WareHouseId { get; set; }
+
+    /// <summary>
+    /// 鍗曟嵁缂栧彿
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鍗曟嵁缂栧彿")]
+    public string OrderNo { get; set; }
+
+    /// <summary>
+    /// 鍗曚綅
+    /// </summary>
+    [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+    public string Unit { get; set; }
+
+    /// <summary>
+    /// 瑙勬牸
+    /// </summary
+    [SugarColumn(IsNullable = false, Length = 100, ColumnDescription = "瑙勬牸")]
+    public string Specs { get; set; }
+
+    /// <summary>
+    /// 搴撳瓨鏁伴噺
+    /// </summary>
+    [SugarColumn(IsNullable = false, DecimalDigits = 4, ColumnDescription = "閲嶉噺")]
+    public decimal Weight { get; set; }
+
+    /// <summary>
+    /// 鏁伴噺
+    /// </summary>
+    [SugarColumn(IsNullable = true, DecimalDigits = 4, ColumnDescription = "鏁伴噺", DefaultValue = "0")]
+    public decimal Quantity { get; set; }
+
+    /// <summary>
+    /// 鍑哄簱鏁伴噺
+    /// </summary>
+    [SugarColumn(IsNullable = true, DecimalDigits = 4, ColumnDescription = "鏁伴噺", DefaultValue = "0")]
+    public decimal OutboundQuantity { get; set; }
+
+    /// <summary>
+    /// 缁勭洏鐘舵�� 鐢佃姱鐘舵��
+    /// </summary>
+    [Required]
+    [SugarColumn(IsNullable = false, ColumnDescription = "缁勭洏鐘舵��")]
+    public int Status { get; set; }
+
+    /// <summary>
+    /// 鍥惧彿
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鍥惧彿")]
+    public string DrawingNumber { get; set; }
+
+    /// <summary>
+    /// 鏃ユ湡
+    /// </summary>
+    [SugarColumn(IsNullable = false, ColumnDescription = "鏃ユ湡")]
+
+    public string Date { get; set; }
+
+    /// <summary>
+    /// 璋冩嫧浠撳簱
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "璋冩嫧浠撳簱")]
+    public string AllocateWarehouse { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+    public string Remark { get; set; }
+    
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail_Hty.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail_Hty.cs
new file mode 100644
index 0000000..4c4dd37
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfoDetail_Hty.cs
@@ -0,0 +1,11 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+[SugarTable(nameof(DtStockInfoDetail_Hty), "搴撳瓨淇℃伅鏄庣粏")]
+public class DtStockInfoDetail_Hty : DtStockInfoDetail
+{
+    
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo_Hty.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo_Hty.cs
new file mode 100644
index 0000000..a51a63f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/DtStockInfo_Hty.cs
@@ -0,0 +1,68 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using Masuit.Tools.Core.Validator;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable(nameof(DtStockInfo_Hty), "搴撳瓨淇℃伅鍘嗗彶")]
+    public class DtStockInfo_Hty : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Required]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 璐т綅缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "璐т綅缂栫爜")]
+        public string LocationCode { get; set; }
+
+        /// <summary>
+        /// 鏄惁鏁村嚭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鏁村嚭")]
+        public bool IsFullExit { get; set; } = true;
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐘舵��")]
+        public int StockStatus { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁缂栧彿")]
+        public string OrderNo { get; set; }
+
+        /// <summary>
+        /// 鍗曟嵁绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍗曟嵁绫诲瀷")]
+        public string OrderType { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 搴撳瓨鏄庣粏
+        /// </summary>
+        [SugarColumn(ColumnName = "DtSTockInfoDetails")]
+        [Navigate(NavigateType.OneToMany, nameof(DtStockInfoDetail_Hty.StockId))]
+        public List<DtStockInfoDetail_Hty>? StockInfoDetails { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Dt_InventoryRecord.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Dt_InventoryRecord.cs
new file mode 100644
index 0000000..eed5f37
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/BasicModel/Dt_InventoryRecord.cs
@@ -0,0 +1,54 @@
+锘縰sing Masuit.Tools.Core.Validator;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable(nameof(Dt_InventoryRecord), "鐩樼偣璁板綍")]
+    public class Dt_InventoryRecord : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 鎵樼洏缂栫爜
+        /// </summary>
+        [Required]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵樼洏缂栧彿")]
+        public string PalletCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "鐗╂枡缂栫爜")]
+        public string MaterielCode { get; set; }
+
+        /// <summary>
+        /// 鐗╂枡鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 255, ColumnDescription = "鐗╂枡鍚嶇О")]
+        public string MaterielName { get; set; }
+
+        /// <summary>
+        /// 鏁伴噺
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏁伴噺")]
+        public decimal Quantity { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true,Length =255, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/LoginInfo.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/LoginInfo.cs
new file mode 100644
index 0000000..6215dc0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/LoginInfo.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.System
+{
+    public class LoginInfo
+    {
+        public string UserName { get; set; }
+
+        public string Password { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs
new file mode 100644
index 0000000..4cd4407
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleAuthor.cs
@@ -0,0 +1,14 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model
+{
+    public class RoleAuthor
+    {
+        public int menuId { get; set; }
+        public string actions { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs
new file mode 100644
index 0000000..25b6b51
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/RoleNodes.cs
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Model.Models.System
+{
+    public class RoleNodes
+    {
+        public int Id { get; set; }
+        public int ParentId { get; set; }
+        public string RoleName { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Config.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Config.cs
new file mode 100644
index 0000000..e4edf2d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Config.cs
@@ -0,0 +1,53 @@
+锘縰sing SqlSugar;
+using WIDESEA_Core.DB.Models;
+
+namespace WIDESEA_Model.Models;
+
+/// <summary>
+/// 绯荤粺閰嶇疆琛�
+/// </summary>
+[SugarTable("Sys_Config", "绯荤粺閰嶇疆琛�")]
+public class Sys_Config : BaseEntity
+{
+    /// <summary>
+    /// 涓婚敭
+    /// </summary>
+    [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+    public int Id { get; set; }
+
+    /// <summary>
+    /// 閰嶇疆閿�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "閰嶇疆閿�", Length = 255, IsNullable = false)]
+    public string ConfigKey { get; set; }
+
+    /// <summary>
+    /// 閰嶇疆鍊�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "閰嶇疆鍊�", IsNullable = false, ColumnDataType = "text")]
+    public string ConfigValue { get; set; }
+
+    /// <summary>
+    /// 鍒嗙被
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鍒嗙被", Length = 255, IsNullable = false)]
+    public string Category { get; set; }
+
+    /// <summary>
+    /// 澶囨敞
+    /// </summary>
+    [SugarColumn(ColumnDescription = "澶囨敞", Length = 255, IsNullable = true)]
+    public string Remark { get; set; }
+
+    /// <summary>
+    /// 鎺掑簭鐮�
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鎺掑簭鐮�", IsNullable = true)]
+    public int? SortCode { get; set; }
+
+    /// <summary>
+    /// 鐘舵��
+    /// </summary>
+    [SugarColumn(ColumnDescription = "鐘舵��", Length = 20, IsNullable = true)]
+    public string Status { get; set; }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Department.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Department.cs
new file mode 100644
index 0000000..1ac637a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Department.cs
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Department", "缁勭粐鏋舵瀯"), MultiTenant]
+    public class Sys_Department : BaseEntity
+    {
+        /// <summary>
+        /// 缁勭粐ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "缁勭粐ID")]
+        public int DepartmentId { get; set; }
+
+        /// <summary>
+        /// 缁勭粐鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "缁勭粐鍚嶇О")]
+        public string DepartmentName { get; set; }
+
+        /// <summary>
+        /// 缁勭粐缂栧彿
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "缁勭粐缂栧彿")]
+        public string DepartmentCode { get; set; }
+
+        /// <summary>
+        /// 涓婄骇缁勭粐
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "涓婄骇缁勭粐")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "閮ㄩ棬绫诲瀷")]
+        public string DepartmentType { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍙敤")]
+        public int Enable { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs
new file mode 100644
index 0000000..ea9724b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Dictionary.cs
@@ -0,0 +1,95 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Filter;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [MultiTenant]
+    [Exporter(ExporterHeaderFilter = typeof(ExporterHeaderFilter))]
+    [SugarTable("Sys_Dictionary", "瀛楀吀鏁版嵁")]
+    public class Sys_Dictionary : BaseEntity
+    {
+        /// <summary>
+        /// 瀛楀吀ID
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀ID")]
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瀛楀吀ID")]
+        public int DicId { get; set; }
+
+        /// <summary>
+        /// 閰嶇疆椤�
+        /// </summary>
+        [ExporterHeader(DisplayName = "閰嶇疆椤�")]
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "閰嶇疆椤�")]
+        public string Config { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撴湇鍔�
+        /// </summary>
+        [ExporterHeader(DisplayName = "鏁版嵁搴撴湇鍔�")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁搴撴湇鍔�")]
+        public string DBServer { get; set; }
+
+        /// <summary>
+        /// Sql璇彞
+        /// </summary>
+        [ExporterHeader(DisplayName = "Sql璇彞")]
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "Sql璇彞")]
+        public string DBSql { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀鍚嶇О
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀鍚嶇О")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀛楀吀鍚嶇О")]
+        public string DicName { get; set; }
+
+        /// <summary>
+        /// 瀛楀吀缂栧彿
+        /// </summary>
+        [ExporterHeader(DisplayName = "瀛楀吀缂栧彿")]
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "瀛楀吀缂栧彿")]
+        public string DicNo { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [ExporterHeader(DisplayName = "鏄惁鍚敤")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍚敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [ExporterHeader(DisplayName = "鎺掑簭鍙�")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇ID
+        /// </summary>
+        [ExporterHeader(DisplayName = "鐖剁骇ID")]
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐖剁骇ID")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [ExporterHeader(DisplayName = "澶囨敞")]
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 绯荤粺绫诲瀷
+        /// </summary>
+        [ExporterHeader(DisplayName = "绯荤粺绫诲瀷")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "绯荤粺绫诲瀷")]
+        public int SystemType { get; set; }
+
+        [ExporterHeader(IsIgnore = true)]
+        [Navigate(NavigateType.OneToMany, nameof(DicId),nameof(DicId)), SugarColumn(IsIgnore = true, IsNullable = true)]
+        public List<Sys_DictionaryList> DicList { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs
new file mode 100644
index 0000000..e29f6fc
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_DictionaryList.cs
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using SqlSugar;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_DictionaryList", "瀛楀吀鏄庣粏"), MultiTenant]
+    public class Sys_DictionaryList : BaseEntity
+    {
+        /// <summary>
+        /// 瀛楀吀鍒楄〃ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瀛楀吀鍒楄〃ID")]
+        public int DicListId { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怲ext
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁婧怲ext")]
+        public string DicName { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怴alue
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鏁版嵁婧怴alue")]
+        public string DicValue { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁婧怚D
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁版嵁婧怚D")]
+        public int DicId { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍙敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs
new file mode 100644
index 0000000..72fcab0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Log.cs
@@ -0,0 +1,85 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using SqlSugar;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEAWCS_Model.Models
+{
+    [MultiTenant,SugarTable]
+    public class Sys_Log
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 寮�濮嬫椂闂�
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "寮�濮嬫椂闂�")]
+        public DateTime? BeginDate { get; set; }
+
+        /// <summary>
+        /// 鏃堕暱
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏃堕暱")]
+        public int? ElapsedTime { get; set; }
+
+        /// <summary>
+        /// 缁撴潫鏃堕棿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "缁撴潫鏃堕棿")]
+        public DateTime EndDate { get; set; }
+
+        /// <summary>
+        /// 鏃ュ織绫诲瀷
+        /// </summary>
+        //[SugarColumn(IsNullable = true, ColumnDescription = "鏃ュ織绫诲瀷")]
+        //public DateTime LogType { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍙傛暟
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "璇锋眰鍙傛暟")]
+        public string RequestParam { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲鍙傛暟
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = int.MaxValue, ColumnDescription = "鍝嶅簲鍙傛暟")]
+        public string ResponseParam { get; set; }
+
+        /// <summary>
+        /// 鍝嶅簲鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鍝嶅簲鐘舵��")]
+        public int? Success { get; set; }
+
+        /// <summary>
+        /// 璇锋眰鍦板潃
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 8000, ColumnDescription = "璇锋眰鍦板潃")]
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛IP
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐢ㄦ埛IP")]
+        public string UserIP { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鐢ㄦ埛鍚嶇О")]
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐢ㄦ埛涓婚敭")]
+        public int? User_Id { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs
new file mode 100644
index 0000000..ff956ec
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Menu.cs
@@ -0,0 +1,85 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Menu", "鑿滃崟閰嶇疆"), MultiTenant]
+    public class Sys_Menu : BaseEntity
+    {
+        /// <summary>
+        /// 鑿滃崟ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "鑿滃崟ID")]
+        public int MenuId { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "鑿滃崟鍚嶇О")]
+        public string MenuName { get; set; }
+
+        /// <summary>
+        /// 鏉冮檺
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "鏉冮檺")]
+        public string Auth { get; set; }
+
+        /// <summary>
+        /// 鍥炬爣
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 200, ColumnDescription = "鍥炬爣")]
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// 鎻忚堪
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 2000, ColumnDescription = "鎻忚堪")]
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鏄惁鍚敤")]
+        public byte? Enable { get; set; }
+
+        /// <summary>
+        /// 琛ㄥ悕
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "琛ㄥ悕")]
+        public string TableName { get; set; }
+
+        /// <summary>
+        /// 鐖剁骇ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐖剁骇ID")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 璺緞
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 50, ColumnDescription = "璺緞")]
+        public string Url { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鍙�
+        /// </summary>
+        [SugarColumn(IsNullable = true,ColumnDescription ="鎺掑簭鍙�")]
+        public int? OrderNo { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鑿滃崟绫诲瀷")]
+        public int? MenuType { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(MenuId)), SugarColumn(IsIgnore = true, IsNullable = true)]
+        public List<Sys_Menu> Menus { get; set; }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs
new file mode 100644
index 0000000..cd54e64
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Role.cs
@@ -0,0 +1,54 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Role", "瑙掕壊琛�"), MultiTenant]
+    public class Sys_Role : BaseEntity
+    {
+        /// <summary>
+        /// 涓婚敭
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "涓婚敭")]
+        public int RoleId { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = true,IsIgnore = true, Length = 50, ColumnDescription = "閮ㄩ棬鍚嶇О")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬涓婚敭
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "閮ㄩ棬涓婚敭")]
+        public int? DeptId { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍚敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍚敤")]
+        public byte Enable { get; set; }
+
+        /// <summary>
+        /// 鐖禝D
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐖禝D")]
+        public int ParentId { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊鍚嶇О
+        /// </summary>
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "瑙掕壊鍚嶇О")]
+        public string RoleName { get; set; }
+
+        [Navigate(NavigateType.OneToMany, nameof(ParentId), nameof(RoleId)), SugarColumn(IsIgnore = true, IsNullable = true)]
+        public List<Sys_Role> Roles { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs
new file mode 100644
index 0000000..1d9c5ff
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_RoleAuth.cs
@@ -0,0 +1,48 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using SqlSugar;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 瑙掕壊韬唤楠岃瘉绠$悊琛�
+    /// </summary>
+    [SugarTable("Sys_RoleAuth", "瑙掕壊韬唤楠岃瘉绠$悊"), MultiTenant]
+    public class Sys_RoleAuth : BaseEntity
+    {
+        /// <summary>
+        /// 瑙掕壊韬唤楠岃瘉ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "瑙掕壊韬唤楠岃瘉ID")]
+        public int AuthId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛鏉冮檺
+        /// </summary>
+        [SugarColumn(IsNullable = true, Length = 500, ColumnDescription = "鐢ㄦ埛鏉冮檺")]
+        public string AuthValue { get; set; }
+
+        /// <summary>
+        /// 鑿滃崟ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鑿滃崟ID")]
+        public int MenuId { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "瑙掕壊ID")]
+        public int? RoleId { get; set; }
+
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鐢ㄦ埛ID")]
+        public int? UserId { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs
new file mode 100644
index 0000000..33836b0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Tenant.cs
@@ -0,0 +1,57 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Tenant", "绉熸埛")]
+    public class Sys_Tenant : BaseEntity
+    {
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "绉熸埛ID")]
+        public int TenantId { get; set; }
+
+        /// <summary>
+        /// 绉熸埛鍚嶇О
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "绉熸埛鍚嶇О")]
+        public string TenantName { get; set; }
+
+        /// <summary>
+        /// 绉熸埛绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉熸埛绫诲瀷")]
+        public int TenantType { get; set; }
+
+        /// <summary>
+        /// 鏁版嵁搴撶被鍨�
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏁版嵁搴撶被鍨�")]
+        public int DbType { get; set; }
+
+        /// <summary>
+        /// 杩炴帴瀛楃涓�
+        /// </summary>
+        [SugarColumn(Length = 1000, IsNullable = false, ColumnDescription = "杩炴帴瀛楃涓�")]
+        public string ConnectionString { get; set; }
+
+        /// <summary>
+        /// 鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鐘舵��")]
+        public int Status { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(Length = 2000, IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Test.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Test.cs
new file mode 100644
index 0000000..e2141c7
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_Test.cs
@@ -0,0 +1,31 @@
+锘縰sing Magicodes.ExporterAndImporter.Core;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    [SugarTable("Sys_Test", "娴嬭瘯"), MultiTenant]
+    public class Sys_Test : BaseEntity
+    {
+        [ImporterHeader(Name = "Id")]
+        [ExporterHeader(DisplayName = "Id")]
+        [SugarColumn(IsIdentity = true, IsPrimaryKey = true, ColumnDescription = "Id")]
+        public int Id { get; set; }
+
+        [ImporterHeader(Name = "娴嬭瘯Content")]
+        [ExporterHeader(DisplayName = "娴嬭瘯Content")]
+        [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "娴嬭瘯Content")]
+        public string TestContent { get; set; }
+
+        [ImporterHeader(Name = "娴嬭瘯Count")]
+        [ExporterHeader(DisplayName = "娴嬭瘯Count")]
+        [SugarColumn(IsNullable = false, ColumnDescription = "娴嬭瘯Count")]
+        public int TestCount { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs
new file mode 100644
index 0000000..2e15d5f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/Models/System/Sys_User.cs
@@ -0,0 +1,151 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
+using WIDESEA_Core.Tenants;
+
+namespace WIDESEA_Model.Models
+{
+    /// <summary>
+    /// 鐢ㄦ埛淇℃伅琛�
+    /// </summary>
+    //[SugarTable("SysUserInfo")]
+    [SugarTable("Sys_User", "鐢ㄦ埛琛�")] //('鏁版嵁搴撹〃鍚�'锛�'鏁版嵁搴撹〃澶囨敞')
+    public class Sys_User : BaseEntity
+    {
+        /// <summary>
+        /// 鐢ㄦ埛ID
+        /// </summary>
+        [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "鐢ㄦ埛ID")]
+        public int User_Id { get; set; }
+
+        /// <summary>
+        ///甯愬彿
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "甯愬彿")]
+        public string UserName { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "瑙掕壊ID")]
+        public int Role_Id { get; set; }
+
+        /// <summary>
+        /// 瑙掕壊鍚嶇О
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "瑙掕壊鍚嶇О")]
+        public string RoleName { get; set; }
+
+        /// <summary>
+        /// 鐢佃瘽
+        /// </summary>
+        [SugarColumn(Length = 11, IsNullable = true, ColumnDescription = "鐢佃瘽")]
+        public string PhoneNo { get; set; }
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "澶囨敞")]
+        public string Remark { get; set; }
+
+        /// <summary>
+        /// 瀵嗙爜
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = false, ColumnDescription = "瀵嗙爜")]
+        public string UserPwd { get; set; }
+
+        /// <summary>
+        /// 鐪熷疄濮撳悕
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = false, ColumnDescription = "鐪熷疄濮撳悕")]
+        public string UserTrueName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "閮ㄩ棬")]
+        public string DeptName { get; set; }
+
+        /// <summary>
+        /// 閮ㄩ棬ID
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "閮ㄩ棬ID")]
+        public int? Dept_Id { get; set; }
+
+        /// <summary>
+        /// 閭
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "閭")]
+        public string Email { get; set; }
+
+        /// <summary>
+        /// 鏄惁鍙敤
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鍙敤")]
+        public byte Enable { get; set; }
+
+        /// <summary>
+        /// 鎬у埆
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "鎬у埆")]
+        public int? Gender { get; set; }
+
+        /// <summary>
+        /// 澶村儚
+        /// </summary>
+        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "澶村儚")]
+        public string HeadImageUrl { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庡瘑鐮佷慨鏀规椂闂�
+        /// </summary>
+        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "鏈�鍚庡瘑鐮佷慨鏀规椂闂�")]
+        public DateTime? LastModifyPwdDate { get; set; }
+
+        /// <summary>
+        /// 鍦板潃
+        /// </summary>
+        [SugarColumn(Length = 200, IsNullable = true, ColumnDescription = "鍦板潃")]
+        public string Address { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鏃堕棿
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "瀹℃牳鏃堕棿")]
+        public DateTime? AuditDate { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳鐘舵��
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDescription = "瀹℃牳鐘舵��")]
+        public int? AuditStatus { get; set; }
+
+        /// <summary>
+        /// 瀹℃牳浜�
+        /// </summary>
+        [SugarColumn(Length = 100, IsNullable = true, ColumnDescription = "瀹℃牳浜�")]
+        public string Auditor { get; set; }
+
+        /// <summary>
+        /// 浠ょ墝
+        /// </summary>
+        [SugarColumn(Length = 500, IsNullable = true, ColumnDescription = "浠ょ墝")]
+        public string Token { get; set; }
+
+        /// <summary>
+        /// 绯荤粺绫诲瀷
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "绯荤粺绫诲瀷", DefaultValue = "0")]
+        public int SystemType { get; set; }
+
+        /// <summary>
+        /// 绉熸埛ID
+        /// </summary>
+        [SugarColumn(IsNullable = false, ColumnDescription = "绉熸埛ID")]
+        public long TenantId { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj
new file mode 100644
index 0000000..f1c81f5
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Model/WIDESEA_Model.csproj
@@ -0,0 +1,24 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Compile Remove="Models\Inbound\**" />
+    <EmbeddedResource Remove="Models\Inbound\**" />
+    <None Remove="Models\Inbound\**" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <PackageReference Include="System.Text.RegularExpressions" Version="4.3.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
+    <ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/WIDESEA_OrderRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/WIDESEA_OrderRepository.csproj
new file mode 100644
index 0000000..b563c7d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderRepository/WIDESEA_OrderRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IOrderRepository\WIDESEA_IOrderRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/WIDESEA_OrderServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/WIDESEA_OrderServices.csproj
new file mode 100644
index 0000000..675aac9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_OrderServices/WIDESEA_OrderServices.csproj
@@ -0,0 +1,19 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+    <ProjectReference Include="..\WIDESEA_Cache\WIDESEA_Cache.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOrderServices\WIDESEA_IOrderServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_StorageBasicRepository\WIDESEA_StorageBasicRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_StorageTaskServices\WIDESEA_StorageTaskServices.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_ConfigRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_ConfigRepository.cs
new file mode 100644
index 0000000..09813fd
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_ConfigRepository.cs
@@ -0,0 +1,21 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_IRepository;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_ConfigRepository : RepositoryBase<Sys_Config>, ISys_ConfigRepository
+    {
+        public Sys_ConfigRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_DictionaryRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_DictionaryRepository.cs
new file mode 100644
index 0000000..4ed2cf3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_DictionaryRepository.cs
@@ -0,0 +1,76 @@
+锘縰sing Microsoft.AspNetCore.DataProtection.KeyManagement;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_DictionaryRepository : RepositoryBase<Sys_Dictionary>, ISys_DictionaryRepository
+    {
+        public Sys_DictionaryRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="dicNos"></param>
+        /// <param name="executeSql">鏄惁鎵ц鑷畾涔塻ql</param>
+        /// <returns></returns>
+        public IEnumerable<Sys_Dictionary> GetDictionaries(IEnumerable<string> dicNos, bool executeSql = true)
+        {
+            List<Sys_Dictionary> Dictionaries = GetAllDictionary(dicNos);
+
+            //foreach (var item in Dictionaries.Where(x => dicNos.Contains(x.DicNo)))
+            //{
+            //    if (executeSql)
+            //    {
+            //        //  2020.05.01澧炲姞鏍规嵁鐢ㄦ埛淇℃伅鍔犺浇瀛楀吀鏁版嵁婧恠ql
+            //        string sql = item.DBSql;
+            //        if (!string.IsNullOrEmpty(sql))
+            //        {
+            //            item.DicList = Query(sql);
+            //        }
+            //    }
+            //}
+
+            return Dictionaries;
+        }
+
+        List<Sys_DictionaryList> Query(string sql)
+        {
+            try
+            {
+                return base.QueryDynamicDataBySql(sql, null).Select(s => new Sys_DictionaryList()
+                {
+                    DicName = s.Value,
+                    DicValue = s.Key.ToString()
+                }).ToList();
+            }
+            catch (Exception ex)
+            {
+                throw ex;
+            }
+        }
+
+        private List<Sys_Dictionary> GetAllDictionary(IEnumerable<string> dicNos)
+        {
+            //base.QueryData().ToList();
+            //List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Includes(x => x.DicList).Where(x => x.Enable == 1).ToList();
+            List<Sys_Dictionary> _dictionaries = Db.Queryable<Sys_Dictionary>().Includes(x => x.DicList).Where(x => x.Enable == 1 && dicNos.Contains(x.DicNo)).ToList();
+            return _dictionaries;
+        }
+    }
+
+    public class SourceKeyVaule
+    {
+        public object Key { get; set; }
+        public string Value { get; set; }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_LogRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_LogRepository.cs
new file mode 100644
index 0000000..9bd9823
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_LogRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEAWCS_IRepository;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Repository
+{
+    public class Sys_LogRepository : RepositoryBase<Sys_Log>, ISys_LogRepository
+    {
+        public Sys_LogRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_MenuRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_MenuRepository.cs
new file mode 100644
index 0000000..12447c4
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_MenuRepository.cs
@@ -0,0 +1,223 @@
+锘縰sing AutoMapper;
+using SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
+using WIDESEA_IRepository;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_MenuRepository : RepositoryBase<Sys_Menu>, ISys_MenuRepository
+    {
+        private readonly IMapper _mapper;
+        public Sys_MenuRepository(IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(unitOfWorkManage)
+        {
+            _mapper = mapper;
+        }
+
+        public List<MenuDTO> GetAllMenu()
+        {
+            //List<Sys_Menu> menus = base.QueryData(x => x.Enable == 1 || x.Enable == 2).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
+
+            //List<MenuDTO> _menus = _mapper.Map<List<MenuDTO>>(menus);
+
+            //_menus.ForEach(x =>
+            //{
+            //    x.MenuType ??= 0;
+            //    if (!string.IsNullOrEmpty(x.Auth) && x.Auth.Length > 10)
+            //    {
+            //        try
+            //        {
+            //            x.Actions = x.Auth.DeserializeObject<List<ActionDTO>>();
+            //        }
+            //        catch { }
+            //    }
+            //    x.Actions ??= new List<ActionDTO>();
+            //});
+            //string test = _menus.Serialize();
+            //return _menus;
+            List<Sys_Menu> menus = base.QueryData(x => (x.Enable == 1 || x.Enable == 2) && x.MenuType == App.User.MenuType).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
+            List<MenuDTO> _menus = _mapper.Map<List<MenuDTO>>(menus);
+            _menus.ForEach(x =>
+            {
+                if (!string.IsNullOrEmpty(x.Auth) && x.Auth.Length > 10)
+                {
+                    try
+                    {
+                        x.Actions = x.Auth.DeserializeObject<List<ActionDTO>>();
+                    }
+                    catch { }
+                }
+                x.Actions ??= new List<ActionDTO>();
+            });
+            string test = _menus.Serialize();
+            return _menus;
+        }
+
+        public object GetSuperAdminMenu()
+        {
+            return GetAllMenu().Select(x =>
+                  new
+                  {
+                      id = x.MenuId,
+                      name = x.MenuName,
+                      url = x.Url,
+                      parentId = x.ParentId,
+                      icon = x.Icon,
+                      x.Enable,
+                      x.TableName, // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+                      permission = x.Actions.Select(s => s.Value).ToArray()
+                  }).ToList();
+        }
+
+        public object GetMenuByRoleId(int roleId)
+        {
+            var menu = from a in GetPermissions(roleId)
+                       join b in GetAllMenu()
+                       on a.MenuId equals b.MenuId
+                       orderby b.OrderNo descending
+                       select new
+                       {
+                           id = a.MenuId,
+                           name = b.MenuName,
+                           url = b.Url,
+                           parentId = b.ParentId,
+                           icon = b.Icon,
+                           b.Enable,
+                           b.TableName,
+                           permission = a.UserAuthArr
+                       };
+            return menu.ToList();
+        }
+
+        /// <summary>
+        /// 鑾峰彇瑙掕壊鏉冮檺鏃堕�氳繃瀹夊叏瀛楀吀閿佸畾鐨勮鑹瞚d
+        /// </summary>
+        private static ConcurrentDictionary<string, object> objKeyValue = new ConcurrentDictionary<string, object>();
+
+        public List<Permissions> GetPermissions(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                //2020.12.27澧炲姞鑿滃崟鐣岄潰涓婁笉鏄剧ず锛屼絾鍙互鍒嗛厤鏉冮檺
+                var permissions = QueryData(x => x.Enable == 1 || x.Enable == 2)
+                    .Select(a => new Permissions
+                    {
+                        MenuId = a.MenuId,
+                        ParentId = a.ParentId,
+                        TableName = (a.TableName ?? "").ToLower(),
+                        UserAuth = a.Auth,
+                        MenuType = a.MenuType ?? 0
+                    }).ToList();
+                return MenuActionToArray(permissions);
+            }
+
+            //閿佸畾姣忎釜瑙掕壊锛岄�氳繃瀹夊叏瀛楀吀鍑忓皯閿佺矑搴︼紝鍚﹀垯澶氫釜鍚屾椂瑙掕壊鑾峰彇缂撳瓨浼氬鑷撮樆濉�
+            object objId = objKeyValue.GetOrAdd(roleId.ToString(), new object());
+            //閿佸畾姣忎釜瑙掕壊
+            lock (objId)
+            {
+                //娌℃湁redis/memory缂撳瓨瑙掕壊鐨勭増鏈彿鎴栦笌褰撳墠鏈嶅姟鍣ㄧ殑瑙掕壊鐗堟湰鍙蜂笉鍚屾椂锛屽埛鏂扮紦瀛�
+
+                List<Permissions> _permissions = QueryTabs<Sys_Menu, Sys_RoleAuth, Permissions>((a, b) => new object[] { JoinType.Inner, a.MenuId == b.MenuId }, (a, b) => new Permissions { MenuId = a.MenuId, ParentId = a.ParentId, TableName = (a.TableName ?? "").ToLower(), MenuAuth = a.Auth, UserAuth = b.AuthValue ?? "", MenuType = a.MenuType ?? 0 }, (a, b) => b.RoleId == roleId, a => true);
+
+                ActionToArray(_permissions);
+
+                return _permissions;
+            }
+        }
+
+        private List<Permissions> MenuActionToArray(List<Permissions> permissions)
+        {
+            permissions.ForEach(x =>
+            {
+                try
+                {
+                    x.UserAuthArr = string.IsNullOrEmpty(x.UserAuth)
+                    ? new string[0]
+                    : x.UserAuth.DeserializeObject<List<ActionDTO>>().Select(s => s.Value).ToArray();
+                }
+                catch { }
+                finally
+                {
+                    if (x.UserAuthArr == null)
+                    {
+                        x.UserAuthArr = new string[0];
+                    }
+                }
+            });
+            return permissions;
+        }
+
+        private List<Permissions> ActionToArray(List<Permissions> permissions)
+        {
+            permissions.ForEach(x =>
+            {
+                try
+                {
+                    var menuAuthArr = x.MenuAuth.DeserializeObject<List<ActionDTO>>();
+                    x.UserAuthArr = string.IsNullOrEmpty(x.UserAuth)
+                    ? new string[0]
+                    : x.UserAuth.Split(",").Where(c => menuAuthArr.Any(m => m.Value == c)).ToArray();
+
+                }
+                catch { }
+                finally
+                {
+                    if (x.UserAuthArr == null)
+                    {
+                        x.UserAuthArr = new string[0];
+                    }
+                }
+            });
+            return permissions;
+        }
+
+        public object GetMenu(List<int> menuIds)
+        {
+            return QueryData(x => menuIds.Contains(x.MenuId)).Select(a =>
+             new
+             {
+                 id = a.MenuId,
+                 parentId = a.ParentId,
+                 name = a.MenuName,
+                 a.MenuType,
+                 a.OrderNo
+             }).OrderByDescending(a => a.OrderNo)
+                .ThenByDescending(q => q.parentId).ToList();
+        }
+
+        public object GetTreeItem(int menuId)
+        {
+            var sysMenu = base.QueryData(x => x.MenuId == menuId)
+                .Select(
+                p => new
+                {
+                    p.MenuId,
+                    p.ParentId,
+                    p.MenuName,
+                    p.Url,
+                    p.Auth,
+                    p.OrderNo,
+                    p.Icon,
+                    p.Enable,
+                    // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨�
+                    MenuType = p.MenuType ?? 0,
+                    p.CreateDate,
+                    p.Creater,
+                    p.TableName,
+                    p.ModifyDate
+                }).FirstOrDefault();
+            return sysMenu;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleAuthRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleAuthRepository.cs
new file mode 100644
index 0000000..e61495b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleAuthRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    internal class Sys_RoleAuthRepository : RepositoryBase<Sys_RoleAuth>, ISys_RoleAuthRepository
+    {
+        public Sys_RoleAuthRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleRepository.cs
new file mode 100644
index 0000000..2b0da40
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_RoleRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_RoleRepository : RepositoryBase<Sys_Role>, ISys_RoleRepository
+    {
+        public Sys_RoleRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TenantRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TenantRepository.cs
new file mode 100644
index 0000000..b213f56
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TenantRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_TenantRepository : RepositoryBase<Sys_Tenant>, ISys_TenantRepository
+    {
+        public Sys_TenantRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TestRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TestRepository.cs
new file mode 100644
index 0000000..f331eeb
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_TestRepository.cs
@@ -0,0 +1,18 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_IRepository;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    internal class Sys_TestRepository : RepositoryBase<Sys_Test>, ISys_TestRepository
+    {
+        public Sys_TestRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_UserRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_UserRepository.cs
new file mode 100644
index 0000000..d601902
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/Sys_UserRepository.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_IRepository;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Repository
+{
+    public class Sys_UserRepository : RepositoryBase<Sys_User>, ISys_UserRepository
+    {
+        public Sys_UserRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+
+        }
+
+        public UserInfo GetUserInfo(string userName, string password)
+        {
+            return QueryFirst(x => x.UserName == userName && x.UserPwd == password, x => new UserInfo { HeadImageUrl = x.HeadImageUrl, RoleId = x.Role_Id, SystemType = x.SystemType, TenantId = x.TenantId, UserId = x.User_Id, UserName = x.UserName, UserTrueName = x.UserTrueName });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj
new file mode 100644
index 0000000..3311fdb
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Repository/WIDESEA_Repository.csproj
@@ -0,0 +1,17 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <PackageReference Include="AutoMapper" Version="13.0.1" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IRepository\WIDESEA_IRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs
new file mode 100644
index 0000000..689d19e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_ConfigService.cs
@@ -0,0 +1,43 @@
+锘縰sing WIDESEA_Core.Authorization;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_IServices;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+using WIDESEA_IRepository;
+using WIDESEA_Core.BaseRepository;
+using System.Net;
+
+namespace WIDESEA_Services
+{
+    public class Sys_ConfigService : ServiceBase<Sys_Config, ISys_ConfigRepository>, ISys_ConfigService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Sys_ConfigService(ISys_ConfigRepository repository, IUnitOfWorkManage unitOfWorkManage) : base(repository)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        /// <inheritdoc/>
+        public List<Sys_Config> GetAll()
+        {
+            return BaseDal.QueryData();
+        }
+
+        /// <inheritdoc/>
+        public List<Sys_Config> GetConfigsByCategory(string category)
+        {
+            return BaseDal.QueryData(x => x.Category == category).ToList();
+        }
+
+        /// <inheritdoc/>
+        public Sys_Config GetByConfigKey(string category, string configKey)
+        {
+            return BaseDal.QueryData(x => x.Category == category && x.ConfigKey == configKey).FirstOrDefault();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs
new file mode 100644
index 0000000..186f3da
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_DictionaryService.cs
@@ -0,0 +1,130 @@
+锘縰sing Autofac.Core;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Information;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
+using WIDESEA_IRepository;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Services
+{
+    public class Sys_DictionaryService : ServiceBase<Sys_Dictionary, ISys_DictionaryRepository>, ISys_DictionaryService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ICacheService _cacheService;
+        public Sys_DictionaryService(ISys_DictionaryRepository BaseDal, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _cacheService = cacheService;
+        }
+
+        //public object GetVueDictionary(string[] dicNos)
+        //{
+        //    if (dicNos == null || dicNos.Count() == 0) return new string[] { };
+
+        //    var dicConfig = BaseDal.GetDictionaries(dicNos, false).Select(s => new
+        //    {
+        //        dicNo = s.DicNo,
+        //        config = s.Config,
+        //        dbSql = s.DBSql,
+        //        list = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+        //    }).ToList();
+
+        //    object GetSourceData(string dicNo, string dbSql, object data)
+        //    {
+        //        if (string.IsNullOrEmpty(dbSql))
+        //        {
+        //            return data as object;
+        //        }
+        //        return BaseDal.QueryObjectDataBySql(dbSql, null);
+        //    }
+        //    return dicConfig.Select(item => new
+        //    {
+        //        item.dicNo,
+        //        item.config,
+        //        data = GetSourceData(item.dicNo, item.dbSql, item.list)
+        //    }).ToList();
+        //}
+
+        public List<VueDictionaryDTO> GetVueDictionary(string[] dicNos)
+        {
+            if (dicNos == null || dicNos.Count() == 0) return new List<VueDictionaryDTO>();
+            List<VueDictionaryDTO> vueDictionaryDTOs = new List<VueDictionaryDTO>();
+
+            List<string> cacheDicNos = new List<string>();
+            foreach (string n in dicNos)
+            {
+                string? str = _cacheService.Get(n);
+                if (!string.IsNullOrEmpty(str))
+                {
+                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                    if (vueDictionary != null)
+                    {
+                        vueDictionaryDTOs.Add(vueDictionary);
+                        cacheDicNos.Add(n);
+                    }
+                }
+            }
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
+            {
+                List<string> list = dicNos.Where(x => !cacheDicNos.Contains(x)).ToList();
+                List<Sys_Dictionary> dictionaries = BaseDal.GetDictionaries(list).ToList();
+
+                List<VueDictionaryDTO> selectDics = dictionaries.Select(s => new VueDictionaryDTO
+                {
+                    DicNo = s.DicNo,
+                    Config = s.Config,
+                    //dbSql = s.Sql,
+                    Data = s.DicList.OrderByDescending(o => o.OrderNo).Select(list => new { key = list.DicValue, value = list.DicName })
+                }).ToList();
+
+                foreach (var v in dictionaries)
+                {
+                    if (!string.IsNullOrEmpty(v.DBSql))
+                    {
+                        VueDictionaryDTO? temp = selectDics.FirstOrDefault(x => x.DicNo == v.DicNo);
+                        if (temp != null)
+                            selectDics.Remove(temp);
+                        selectDics.Add(new VueDictionaryDTO
+                        {
+                            Config = v.Config,
+                            DicNo = v.DicNo,
+                            Data = BaseDal.QueryDynamicDataBySql(v.DBSql),
+                            SaveCache = false,
+                        });
+                    }
+                }
+
+                foreach (var item in selectDics)
+                {
+                    if (!_cacheService.Exists(item.DicNo) && item.SaveCache)
+                    {
+                        _cacheService.Add(item.DicNo, item.Serialize());
+                    }
+                }
+                vueDictionaryDTOs.AddRange(selectDics);
+            }
+
+            return vueDictionaryDTOs;
+        }
+
+
+       
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs
new file mode 100644
index 0000000..9386a28
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_LogService.cs
@@ -0,0 +1,19 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseServices;
+using WIDESEAWCS_IRepository;
+using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_SystemServices
+{
+    public class Sys_LogService : ServiceBase<Sys_Log, ISys_LogRepository>, ISys_LogService
+    {
+        public Sys_LogService(ISys_LogRepository BaseDal) : base(BaseDal)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_MenuService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_MenuService.cs
new file mode 100644
index 0000000..c3f5aba
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_MenuService.cs
@@ -0,0 +1,212 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.System;
+using WIDESEA_IRepository;
+using WIDESEA_IServices;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Services
+{
+    public class Sys_MenuService : ServiceBase<Sys_Menu, ISys_MenuRepository>, ISys_MenuService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+        public Sys_MenuService(ISys_MenuRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        /// <summary>
+        /// 鑾峰彇褰撳墠鐢ㄦ埛鎵�鏈夎彍鍗曚笌鏉冮檺
+        /// </summary>
+        /// <returns></returns>
+        public object GetCurrentMenuActionList()
+        {
+            object obj = GetMenuActionList(App.User.RoleId);
+            if (obj is IEnumerable<object> list)
+            {
+                if (list.Any())
+                {
+                    return obj;
+                }
+                else
+                {
+                    return WebResponseContent.Instance.Error("鏈幏鍙栧埌鑿滃崟淇℃伅");
+                }
+            }
+            return obj;
+        }
+
+        public object GetCurrentMenuPhoneActionList()
+        {
+            object obj = GetMenuActionPhoneList(App.User.RoleId);
+            if (obj is IEnumerable<object> list)
+            {
+                if (list.Any())
+                {
+                    return obj;
+                }
+                else
+                {
+                    return WebResponseContent.Instance.Error("鏈幏鍙栧埌鑿滃崟淇℃伅");
+                }
+            }
+            return obj;
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊ID鑾峰彇鑿滃崟涓庢潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public object GetMenuActionList(int roleId)
+        {
+            //return BaseDal.GetMenuByRoleId(roleId);
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return BaseDal.GetSuperAdminMenu();
+            }
+            return BaseDal.GetMenuByRoleId(roleId);
+        }
+
+        /// <summary>
+        /// 鏍规嵁瑙掕壊ID鑾峰彇鑿滃崟涓庢潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public object GetMenuActionPhoneList(int roleId)
+        {
+            var allMenu = BaseDal.QueryData(x => (x.Enable == 1 || x.Enable == 2) && x.MenuType == 1 && x.ParentId > 0).OrderByDescending(a => a.OrderNo).ThenByDescending(q => q.ParentId).ToList();
+
+            var menu = allMenu.Select(x => new
+            {
+                text = x.MenuName,
+                url = x.Url,
+                icon = x.Icon,
+            });
+            return menu.ToList();
+        }
+
+        public List<MenuDTO> GetUserMenuList(int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return BaseDal.GetAllMenu();
+            }
+            List<int> menuIds = BaseDal.GetPermissions(roleId).Select(x => x.MenuId).ToList();
+            return BaseDal.GetAllMenu().Where(x => menuIds.Contains(x.MenuId)).ToList();
+        }
+
+        public List<ActionDTO> GetActions(int menuId, List<ActionDTO> menuActions, List<Permissions> permissions, int roleId)
+        {
+            if (App.User.IsRoleIdSuperAdmin(roleId))
+            {
+                return menuActions;
+            }
+
+            return menuActions.Where(p => permissions
+                 .Exists(w => menuId == w.MenuId
+                 && w.UserAuthArr.Contains(p.Value)))
+                  .ToList();
+        }
+
+        /// <summary>
+        /// 缂栬緫淇敼鑿滃崟鏃�,鑾峰彇鎵�鏈夎彍鍗�
+        /// </summary>
+        /// <returns></returns>
+        public object GetMenu()
+        {
+            if (App.User.IsRoleIdSuperAdmin(App.User.RoleId))
+            {
+                List<int> menuIds = BaseDal.QueryData().Select(x => x.MenuId).ToList();
+                return BaseDal.GetMenu(menuIds);
+            }
+            else
+            {
+                List<int> menuIds = BaseDal.GetPermissions(App.User.RoleId).Select(x => x.MenuId).ToList();
+                return BaseDal.GetMenu(menuIds);
+            }
+        }
+
+        /// <summary>
+        /// 缂栬緫鑿滃崟鏃讹紝鑾峰彇鑿滃崟淇℃伅
+        /// </summary>
+        /// <param name="menuId"></param>
+        /// <returns></returns>
+        public object GetTreeItem(int menuId)
+        {
+            return BaseDal.GetTreeItem(menuId);
+        }
+
+        /// <summary>
+        /// 鏂板缓鎴栫紪杈戣彍鍗�
+        /// </summary>
+        /// <param name="menu"></param>
+        /// <returns></returns>
+        public WebResponseContent Save(Sys_Menu menu)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if (menu == null) return webResponse.Error("娌℃湁鑾峰彇鍒版彁浜ょ殑鍙傛暟");
+            if (menu.MenuId > 0 && menu.MenuId == menu.ParentId) return webResponse.Error("鐖剁骇ID涓嶈兘鏄綋鍓嶈彍鍗曠殑ID");
+            try
+            {
+                //webResponse = menu.ValidationEntity(x => new { x.MenuName, x.TableName });
+                //if (!webResponse.Status) return webResponse;
+                if (menu.TableName != "/" && menu.TableName != ".")
+                {
+                    // 2022.03.26澧炵Щ鍔ㄧ鍔犺彍鍗曠被鍨嬪垽鏂�
+                    Sys_Menu sysMenu = BaseDal.QueryFirst(x => x.TableName == menu.TableName);
+                    if (sysMenu != null)
+                    {
+                        sysMenu.MenuType ??= 0;
+                        if (sysMenu.MenuType == menu.MenuType)
+                        {
+                            if ((menu.MenuId > 0 && sysMenu.MenuId != menu.MenuId)
+                            || menu.MenuId <= 0)
+                            {
+                                return webResponse.Error($"瑙嗗浘/琛ㄥ悕銆恵menu.TableName}銆戝凡琚叾浠栬彍鍗曚娇鐢�");
+                            }
+                        }
+                    }
+                }
+                bool _changed = false;
+                if (menu.MenuId <= 0)
+                {
+                    BaseDal.AddData(menu);
+                }
+                else
+                {
+                    //2020.05.07鏂板绂佹閫夋嫨涓婄骇瑙掕壊涓鸿嚜宸�
+                    if (menu.MenuId == menu.ParentId)
+                    {
+                        return webResponse.Error($"鐖剁骇id涓嶈兘涓鸿嚜宸�");
+                    }
+                    if (BaseDal.QueryFirst(x => x.ParentId == menu.MenuId && menu.ParentId == x.MenuId) != null)
+                    {
+                        return webResponse.Error($"涓嶈兘閫夋嫨姝ょ埗绾d锛岄�夋嫨鐨勭埗绾d涓庡綋鍓嶈彍鍗曞舰鎴愪緷璧栧叧绯�");
+                    }
+
+                    _changed = BaseDal.QueryData(c => c.MenuId == menu.MenuId).Select(s => s.Auth).FirstOrDefault() != menu.Auth;
+
+                    BaseDal.UpdateData(menu);
+                }
+                webResponse.OK("淇濆瓨鎴愬姛", menu);
+            }
+            catch (Exception ex)
+            {
+                webResponse.Error(ex.Message);
+            }
+            return webResponse;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs
new file mode 100644
index 0000000..60bad17
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_RoleService.cs
@@ -0,0 +1,217 @@
+锘縰sing AutoMapper;
+using Microsoft.AspNetCore.DataProtection.KeyManagement;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_DTO.System;
+using WIDESEA_IRepository;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+using WIDESEA_Repository;
+
+namespace WIDESEA_Services
+{
+    public class Sys_RoleService : ServiceBase<Sys_Role, ISys_RoleRepository>, ISys_RoleService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly ISys_MenuRepository _MenuRepository;
+        private readonly ISys_MenuService _MenuService;
+        private readonly ISys_RoleAuthRepository _RoleAuthRepository;
+        private readonly IMapper _mapper;
+        public Sys_RoleService(ISys_RoleRepository BaseDal, ISys_MenuRepository MenuRepository, ISys_MenuService MenuService, ISys_RoleAuthRepository roleAuthRepository, IUnitOfWorkManage unitOfWorkManage, IMapper mapper) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+            _MenuRepository = MenuRepository;
+            _MenuService = MenuService;
+            _RoleAuthRepository = roleAuthRepository;
+            _mapper = mapper;
+        }
+
+        public List<RoleNodes> GetAllChildren(int roleId)
+        {
+            if (roleId <= 0) return new List<RoleNodes>() { };
+            var roles = GetAllRoleId();
+            if (App.User.IsRoleIdSuperAdmin(roleId)) return roles;
+
+            var list = GetChildren(roles, roleId);
+            return list;
+        }
+
+        public List<RoleNodes> GetAllRoleId()
+        {
+            List<RoleNodes> roles = BaseDal.QueryData().Select(s => new RoleNodes() { Id = s.RoleId, ParentId = s.ParentId, RoleName = s.RoleName }).ToList();
+
+            return roles;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夊瓙鑺傜偣
+        /// </summary>
+        /// <param name="roleId"></param>
+        private List<RoleNodes> GetChildren(List<RoleNodes> roles, int roleId)
+        {
+            List<RoleNodes> rolesChildren = roles.Where(x => x.Id == roleId).Distinct().ToList();
+
+            for (int i = 0; i < rolesChildren.Count; i++)
+            {
+                RoleNodes node = rolesChildren[i];
+                var children = roles.Where(x => x.ParentId == node.Id && !rolesChildren.Any(c => c.Id == x.Id)).Distinct().ToList();
+                rolesChildren.AddRange(children);
+            }
+            return rolesChildren;
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃惰幏鍙栧綋鍓嶇敤鎴蜂笅鐨勬墍鏈夎鑹蹭笌褰撳墠鐢ㄦ埛鐨勮彍鍗曟潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentTreePermission()
+        {
+            WebResponseContent content = GetCurrentUserTreePermission();
+            int roleId = App.User.RoleId;
+            return WebResponseContent.Instance.OK(null, new
+            {
+                tree = content.Data,
+                roles = GetAllChildren(roleId)
+            });
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夎彍鍗曟潈闄�
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentUserTreePermission()
+        {
+            return GetUserTreePermission(App.User.RoleId);
+        }
+
+        /// <summary>
+        /// 缂栬緫鏉冮檺鏃讹紝鑾峰彇鎸囧畾瑙掕壊鐨勬墍鏈夎彍鍗曟潈闄�
+        /// </summary>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public WebResponseContent GetUserTreePermission(int roleId)
+        {
+            if (!App.User.IsRoleIdSuperAdmin(roleId) && App.User.RoleId != roleId)
+            {
+                if (!GetAllChildren(App.User.RoleId).Exists(x => x.Id == roleId))
+                {
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺鑾峰彇姝よ鑹茬殑鏉冮檺淇℃伅");
+                }
+            }
+            //鑾峰彇鐢ㄦ埛鏉冮檺
+            List<Permissions> permissions = _MenuRepository.GetPermissions(roleId);
+            //鏉冮檺鐢ㄦ埛鏉冮檺鏌ヨ鎵�鏈夌殑鑿滃崟淇℃伅
+            List<MenuDTO> menus = _MenuService.GetUserMenuList(roleId);
+            //鑾峰彇褰撳墠鐢ㄦ埛鏉冮檺濡�:(Add,Search)瀵瑰簲鐨勬樉绀烘枃鏈俊鎭:Add锛氭坊鍔狅紝Search:鏌ヨ
+            var data = menus.Select(x => new
+            {
+                Id = x.MenuId,
+                Pid = x.ParentId,
+                Text = x.MenuName,
+                IsApp = x.MenuType == 1,
+                Actions = _MenuService.GetActions(x.MenuId, x.Actions, permissions, roleId)
+            });
+            return WebResponseContent.Instance.OK(null, data);
+        }
+
+        /// <summary>
+        /// 淇濆瓨瑙掕壊鏉冮檺
+        /// </summary>
+        /// <param name="userPermissions"></param>
+        /// <param name="roleId"></param>
+        /// <returns></returns>
+        public WebResponseContent SavePermission(List<UserPermissionDTO> userPermissions, int roleId)
+        {
+            WebResponseContent content = new WebResponseContent();
+            string message = "";
+            try
+            {
+                UserInfo user = App.User.GetCurrentUserInfo();
+                if (!GetAllChildren(user.RoleId).Exists(x => x.Id == roleId))
+                    return WebResponseContent.Instance.Error("娌℃湁鏉冮檺淇敼姝よ鑹茬殑鏉冮檺淇℃伅");
+                //褰撳墠鐢ㄦ埛鐨勬潈闄�
+                List<Permissions> permissions = _MenuRepository.GetPermissions(App.User.RoleId);
+
+                List<int> originalMeunIds = new List<int>();
+                //琚垎閰嶈鑹茬殑鏉冮檺
+                List<Sys_RoleAuth> roleAuths = _RoleAuthRepository.QueryData(x => x.RoleId == roleId);
+                List<Sys_RoleAuth> updateAuths = new List<Sys_RoleAuth>();
+                foreach (UserPermissionDTO x in userPermissions)
+                {
+                    Permissions per = permissions.Where(p => p.MenuId == x.Id).FirstOrDefault();
+                    //涓嶈兘鍒嗛厤瓒呰繃褰撳墠鐢ㄦ埛鐨勬潈闄�
+                    if (per == null) continue;
+                    //per.UserAuthArr.Contains(a.Value)鏍¢獙鏉冮檺鑼冨洿
+                    string[] arr = x.Actions == null || x.Actions.Count == 0
+                      ? new string[0]
+                      : x.Actions.Where(a => per.UserAuthArr.Contains(a.Value))
+                      .Select(s => s.Value).ToArray();
+
+                    //濡傛灉褰撳墠鏉冮檺娌℃湁鍒嗛厤杩囷紝璁剧疆Auth_Id榛樿涓�0锛岃〃绀烘柊澧炵殑鏉冮檺
+                    var auth = roleAuths.Where(r => r.MenuId == x.Id).Select(s => new { s.AuthId, s.AuthValue, s.MenuId }).FirstOrDefault();
+                    string newAuthValue = string.Join(",", arr);
+                    //鏉冮檺娌℃湁鍙戠敓鍙樺寲鍒欎笉澶勭悊
+                    if (auth == null || auth.AuthValue != newAuthValue)
+                    {
+                        updateAuths.Add(new Sys_RoleAuth()
+                        {
+                            RoleId = roleId,
+                            MenuId = x.Id,
+                            AuthValue = string.Join(",", arr),
+                            AuthId = auth == null ? 0 : auth.AuthId,
+                            ModifyDate = DateTime.Now,
+                            Modifier = user.UserName,
+                            CreateDate = DateTime.Now,
+                            Creater = user.UserName
+                        });
+                    }
+                    else
+                    {
+                        originalMeunIds.Add(auth.MenuId);
+                    }
+
+                }
+                //鏇存柊鏉冮檺
+                _RoleAuthRepository.UpdateData(updateAuths);
+                //鏂板鐨勬潈闄�
+                _RoleAuthRepository.AddData(updateAuths);
+
+                //鑾峰彇鏉冮檺鍙栨秷鐨勬潈闄�
+                int[] authIds = roleAuths.Where(x => userPermissions.Select(u => u.Id)
+                 .ToList().Contains(x.MenuId) || originalMeunIds.Contains(x.MenuId))
+                .Select(s => s.AuthId)
+                .ToArray();
+                List<Sys_RoleAuth> delAuths = roleAuths.Where(x => x.AuthValue != "" && !authIds.Contains(x.AuthId)).ToList();
+                delAuths.ForEach(x =>
+                {
+                    x.AuthValue = "";
+                });
+                //灏嗗彇娑堢殑鏉冮檺璁剧疆涓�""
+                _RoleAuthRepository.UpdateData(delAuths);
+
+                int addCount = updateAuths.Where(x => x.AuthId <= 0).Count();
+                int updateCount = updateAuths.Where(x => x.AuthId > 0).Count();
+
+                string _version = DateTime.Now.ToString("yyyyMMddHHMMssfff");
+
+
+                content.OK($"淇濆瓨鎴愬姛锛氭柊澧炲姞閰嶈彍鍗曟潈闄恵addCount}鏉�,鏇存柊鑿滃崟{updateCount}鏉�,鍒犻櫎鏉冮檺{delAuths.Count()}鏉�");
+            }
+            catch (Exception ex)
+            {
+                message = "寮傚父淇℃伅锛�" + ex.Message + ex.StackTrace + ",";
+            }
+
+            return content;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TenantService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TenantService.cs
new file mode 100644
index 0000000..f6bf57a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TenantService.cs
@@ -0,0 +1,80 @@
+锘縰sing SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.AOP;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Seed;
+using WIDESEA_IRepository;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Services
+{
+    public class Sys_TenantService : ServiceBase<Sys_Tenant, ISys_TenantRepository>, ISys_TenantService
+    {
+        private IUnitOfWorkManage _unitOfWorkManage;
+        public Sys_TenantService(ISys_TenantRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        public WebResponseContent InitTenantInfo(string tenantName, int tenantType)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                Sys_Tenant tenant = new Sys_Tenant()
+                {
+                    ConnectionString = TenantConst.DBConStr,
+                    DbType = 1,
+                    Status = 1,
+                    TenantName = tenantName,
+                    TenantType = tenantType,
+                    CreateDate = DateTime.Now,
+                    Creater = "1111"
+                };
+
+                int tenantId = BaseDal.Db.Insertable(tenant).ExecuteReturnIdentity();
+
+                tenant = BaseDal.QueryFirst(x => x.TenantId == tenantId);
+
+                tenant.ConnectionString = string.Format(TenantConst.DBConStr, ".", "Tenant_WMSDB_" + tenantId, "sa", "P@ssw0rd").EncryptDES(AppSecret.DB);
+
+                BaseDal.UpdateData(tenant);
+
+                InitTenantDb(tenant);
+                content = WebResponseContent.Instance.OK();
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+            return content;
+        }
+
+        public void InitTenantDb(Sys_Tenant tenant)
+        {
+            string conStr = tenant.ConnectionString.DecryptDES(AppSecret.DB);
+
+            ConnectionConfig connectionConfig = new ConnectionConfig()
+            {
+                ConfigId = tenant.TenantId,
+                ConnectionString = conStr,
+                DbType = (DbType)tenant.DbType,
+                IsAutoCloseConnection = true,
+                AopEvents = new AopEvents()
+                {
+                    DataExecuting = SqlSugarAop.DataExecuting
+                }
+            };
+            DBSeed.InitTenantSeedAsync(Db.AsTenant(), connectionConfig);
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TestService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TestService.cs
new file mode 100644
index 0000000..408ea58
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_TestService.cs
@@ -0,0 +1,36 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_IRepository;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_Services
+{
+    public class Sys_TestService : ServiceBase<Sys_Test, ISys_TestRepository>, ISys_TestService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Sys_TestService(ISys_TestRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        public WebResponseContent TranTest()
+        {
+            Sys_Test sys_Test = BaseDal.QueryFirst(x => true);
+            sys_Test.TestContent = "TranTest";
+            _unitOfWorkManage.BeginTran();
+
+            BaseDal.UpdateData(sys_Test);
+
+            _unitOfWorkManage.CommitTran();
+
+            return WebResponseContent.Instance.OK();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_UserService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_UserService.cs
new file mode 100644
index 0000000..fc26dae
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/Sys_UserService.cs
@@ -0,0 +1,217 @@
+锘縰sing WIDESEA_Core.Authorization;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.HttpContextUser;
+using WIDESEA_IServices;
+using WIDESEA_Model;
+using WIDESEA_Model.Models;
+using WIDESEA_IRepository;
+using WIDESEA_Core.BaseRepository;
+using System.Net;
+using WIDESEA_Repository;
+using WIDESEA_Model.Models.System;
+
+namespace WIDESEA_Services
+{
+    public class Sys_UserService : ServiceBase<Sys_User, ISys_UserRepository>, ISys_UserService
+    {
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage) : base(repository)
+        {
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        public WebResponseContent Login(LoginInfo loginInfo)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                //BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);
+
+                string msg = string.Empty;
+
+                #region 涓存椂浣跨敤
+                try
+                {
+                    loginInfo.Password = loginInfo.Password.EncryptDES(AppSecret.User);
+                }
+                catch
+                {
+
+                }
+                #endregion
+
+                UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
+                if (user != null)
+                {
+                    string token = JwtHelper.IssueJwt(new TokenModelJwt()
+                    {
+                        UserId = user.UserId,
+                        RoleId = user.RoleId,
+                    });
+
+                    content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl });
+                }
+                else
+                {
+                    content = WebResponseContent.Instance.Error("璐﹀彿鎴栧瘑鐮侀敊璇�");
+                }
+            }
+            catch (Exception ex)
+            {
+                content = WebResponseContent.Instance.Error(ex.Message);
+            }
+
+            return content;
+        }
+
+        public override WebResponseContent UpdateData(SaveModel saveModel)
+        {
+            UpdateIgnoreColOnExecute = x =>
+            {
+                return new List<string>
+                {
+                    nameof(Sys_User.UserPwd),
+                    nameof(Sys_User.SystemType),
+                    nameof(Sys_User.TenantId)
+                };
+            };
+            return base.UpdateData(saveModel);
+        }
+
+        public override WebResponseContent AddData(SaveModel saveModel)
+        {
+            string pwd = "123456";
+            string uesrName = saveModel.MainData[nameof(Sys_User.UserName).FirstLetterToLower()].ToString();
+            saveModel.MainData[nameof(Sys_User.UserPwd).FirstLetterToLower()] = pwd.EncryptDES(AppSecret.User);
+
+            WebResponseContent content = base.AddData(saveModel);
+            if (content.Status)
+            {
+                return WebResponseContent.Instance.OK($"鐢ㄦ埛鏂板缓鎴愬姛.甯愬彿{uesrName}瀵嗙爜{pwd}");
+            }
+            else
+            {
+                return content;
+            }
+        }
+
+        /// <summary>
+        /// 涓汉涓績鑾峰彇褰撳墠鐢ㄦ埛淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        public WebResponseContent GetCurrentUserInfo()
+        {
+            var data = BaseDal.QueryFirst(x => x.User_Id == App.User.UserId, s => new
+            {
+                s.User_Id,
+                s.UserName,
+                s.UserTrueName,
+                s.Address,
+                s.PhoneNo,
+                s.Email,
+                s.Remark,
+                s.Gender,
+                s.RoleName,
+                s.HeadImageUrl,
+                s.CreateDate
+            });
+            return WebResponseContent.Instance.OK(null, data);
+        }
+
+        /// <summary>
+        /// 淇敼瀵嗙爜
+        /// </summary>
+        /// <param name="parameters"></param>
+        /// <returns></returns>
+        public WebResponseContent ModifyPwd(string oldPwd, string newPwd)
+        {
+            WebResponseContent content = WebResponseContent.Instance;
+            oldPwd = oldPwd?.Trim();
+            newPwd = newPwd?.Trim();
+            string message = "";
+            try
+            {
+                if (string.IsNullOrEmpty(oldPwd)) return WebResponseContent.Instance.Error("鏃у瘑鐮佷笉鑳戒负绌�");
+                if (string.IsNullOrEmpty(newPwd)) return WebResponseContent.Instance.Error("鏂板瘑鐮佷笉鑳戒负绌�");
+                if (newPwd.Length < 6) return WebResponseContent.Instance.Error("瀵嗙爜涓嶈兘灏戜簬6浣�");
+
+                int userId = App.User.UserId;
+                string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == userId, s => s.UserPwd);
+
+                string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
+                if (_oldPwd != userCurrentPwd) return WebResponseContent.Instance.Error("鏃у瘑鐮佷笉姝g‘");
+
+                string _newPwd = newPwd.EncryptDES(AppSecret.User);
+                if (userCurrentPwd == _newPwd) return WebResponseContent.Instance.Error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
+
+
+                BaseDal.UpdateData(new Sys_User
+                {
+                    User_Id = userId,
+                    UserPwd = _newPwd,
+                    LastModifyPwdDate = DateTime.Now
+                }, new List<string>
+                {
+                    nameof(Sys_User.LastModifyPwdDate),
+                    nameof(Sys_User.UserPwd)
+                });
+
+                content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛");
+            }
+            catch (Exception ex)
+            {
+                message = ex.Message;
+                content = WebResponseContent.Instance.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�");
+            }
+            return content;
+        }
+
+        public WebResponseContent ModifyUserPwd(string password,string userName)
+        {
+            WebResponseContent webResponse = new WebResponseContent();
+            if (string.IsNullOrEmpty(password) || string.IsNullOrEmpty(userName))
+            {
+                return webResponse.Error("鍙傛暟涓嶅畬鏁�");
+            }
+            if (password.Length < 6) return webResponse.Error("瀵嗙爜闀垮害涓嶈兘灏戜簬6浣�");
+
+            
+            Sys_User user = BaseDal.QueryFirst(x => x.UserName == userName);
+            if (user == null)
+            {
+                return webResponse.Error("鐢ㄦ埛涓嶅瓨鍦�");
+            }
+            user.UserPwd = password.EncryptDES(AppSecret.User);
+            BaseDal.UpdateData(user);
+            //濡傛灉鐢ㄦ埛鍦ㄧ嚎锛屽己鍒朵笅绾�
+            //UserContext.Current.LogOut(user.User_Id);
+            return webResponse.OK("瀵嗙爜淇敼鎴愬姛");
+        }
+        public WebResponseContent UpdateInfo(int user_Id, string roleName, string userName, string userTrueName, string address, int gender, string remark)
+        {
+            WebResponseContent content = new WebResponseContent();
+
+            var userInfo = BaseDal.QueryFirst(x => x.User_Id == user_Id);
+            if (userInfo != null)
+            {
+                userInfo.RoleName= roleName;
+                userInfo.UserName = userName;
+                userInfo.UserTrueName = userTrueName;
+                userInfo.Address = address;
+                userInfo.Gender = gender;
+                userInfo.Remark = remark;
+                userInfo.ModifyDate = DateTime.Now;
+                BaseDal.UpdateData(userInfo);
+                content = WebResponseContent.Instance.OK("涓汉淇℃伅淇敼鎴愬姛");
+            }
+            else
+            {
+                content = WebResponseContent.Instance.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�");
+            }
+            return content;
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj
new file mode 100644
index 0000000..4944b62
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Services/WIDESEA_Services.csproj
@@ -0,0 +1,24 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <WarningLevel>0</WarningLevel>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <WarningLevel>0</WarningLevel>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_InventoryRecordRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_InventoryRecordRepository.cs
new file mode 100644
index 0000000..a0dbc5f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_InventoryRecordRepository.cs
@@ -0,0 +1,28 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoRepository
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+    public class Dt_InventoryRecordRepository : RepositoryBase<Dt_InventoryRecord>, IDt_InventoryRecordRepository
+    {
+        public Dt_InventoryRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_StationManagerRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_StationManagerRepository.cs
new file mode 100644
index 0000000..f6a7d44
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/BasicInfo/Dt_StationManagerRepository.cs
@@ -0,0 +1,28 @@
+锘�#region << 鐗� 鏈� 娉� 閲� >>
+/*----------------------------------------------------------------
+ * 鍛藉悕绌洪棿锛歐IDESEAWCS_TaskInfoRepository
+ * 鍒涘缓鑰咃細鑳$搴�
+ * 鍒涘缓鏃堕棿锛�2024/8/2 16:13:36
+ * 鐗堟湰锛歏1.0.0
+ * 鎻忚堪锛�
+ *
+ * ----------------------------------------------------------------
+ * 淇敼浜猴細
+ * 淇敼鏃堕棿锛�
+ * 鐗堟湰锛歏1.0.1
+ * 淇敼璇存槑锛�
+ * 
+ *----------------------------------------------------------------*/
+#endregion << 鐗� 鏈� 娉� 閲� >>
+
+using WIDESEA_Model.Models.Basic;
+
+namespace WIDESEAWCS_BasicInfoRepository
+{
+    public class Dt_StationManagerRepository : RepositoryBase<Dt_StationManager>, IDt_StationManagerRepository
+    {
+        public Dt_StationManagerRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoDetailRepository.cs
new file mode 100644
index 0000000..4fb03d2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoDetailRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class BoxingInfoDetailRepository : RepositoryBase<DtBoxingInfoDetail>, IBoxingInfoDetailRepository
+    {
+        public BoxingInfoDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoHtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoHtyRepository.cs
new file mode 100644
index 0000000..fa4f5e3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoHtyRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class BoxingInfoHtyRepository : RepositoryBase<DtBoxingInfo_Hty>, IBoxingInfoHtyRepository
+    {
+        public BoxingInfoHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoRepository.cs
new file mode 100644
index 0000000..c9a9585
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Boxing/BoxingInfoRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class BoxingInfoRepository : RepositoryBase<DtBoxingInfo>, IBoxingInfoRepository
+    {
+        public BoxingInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/GlobalUsing.cs
new file mode 100644
index 0000000..592a47f
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/GlobalUsing.cs
@@ -0,0 +1,3 @@
+锘縢lobal using WIDESEA_Core.BaseRepository;
+global using WIDESEA_Model.Models;
+global using WIDESEA_IStorageBasicRepository;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationInfoRepository.cs
new file mode 100644
index 0000000..ebcb987
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationInfoRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class LocationInfoRepository : RepositoryBase<DtLocationInfo>, ILocationInfoRepository
+    {
+        public LocationInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationStatusChangeRecordRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationStatusChangeRecordRepository.cs
new file mode 100644
index 0000000..bbaaf83
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Location/LocationStatusChangeRecordRepository.cs
@@ -0,0 +1,112 @@
+锘縰sing WIDESEA_Core;
+using WIDESEA_DTO;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StorageBasicRepository
+{
+    public class LocationStatusChangeRecordRepository : RepositoryBase<DtLocationStatusChangeRecord>, ILocationStatusChangeRecordRepository
+    {
+        public LocationStatusChangeRecordRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+
+        /// <summary>
+        /// 娣诲姞璐т綅鍙樺姩璁板綍
+        /// </summary>
+        /// <param name="changeRecordDto">鏁版嵁妯″瀷</param>
+        /// <returns></returns>
+        public bool AddStatusChangeRecord(LocationChangeRecordDto changeRecordDto)
+        {
+            DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+            {
+                ChangeType = changeRecordDto.ChangeType,
+                LocationCode = changeRecordDto.LocationCode,
+                LocationId = changeRecordDto.LocationId,
+                Creater = "System",
+                TaskNum = changeRecordDto.TaskNum,
+                AfterStatus = changeRecordDto.AfterStatus,
+                BeforeStatus = changeRecordDto.BeforeStatus,
+            };
+            return AddData(dtLocationStatusChangeRecord) > 0;
+        }
+
+        /// <summary>
+        /// 娣诲姞璐т綅鍙樺姩璁板綍
+        /// </summary>
+        /// <param name="changeRecordDto">鏁版嵁妯″瀷</param>
+        /// <returns></returns>
+        public bool AddStatusChangeRecord(List<LocationChangeRecordDto> changeRecordDto)
+        {
+            List<DtLocationStatusChangeRecord> changs = new List<DtLocationStatusChangeRecord>();
+            foreach (var item in changeRecordDto)
+            {
+                DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+                {
+                    ChangeType = item.ChangeType,
+                    LocationCode = item.LocationCode,
+                    LocationId = item.LocationId,
+                    Creater = "System",
+                    TaskNum = item.TaskNum,
+                    AfterStatus = item.AfterStatus,
+                    BeforeStatus = item.BeforeStatus,
+                };
+                changs.Add(dtLocationStatusChangeRecord);
+            }
+            
+            return AddData(changs) > 0;
+        }
+
+        /// <summary>
+        /// 娣诲姞璐т綅鍙樺姩璁板綍
+        /// </summary>
+        /// <param name="locationInfo">鏇存柊瀹炰綋</param>
+        /// <param name="lastStatus">鍙樺姩鍓嶇姸鎬�</param>
+        /// <param name="changeType">鍙樺姩绫诲瀷</param>
+        /// <param name="taskNum">浠诲姟鍙�</param>
+        /// <exception cref="Exception"></exception>
+        public void AddLocationStatusChangeRecord(DtLocationInfo locationInfo, int lastStatus, int changeType, int? taskNum)
+        {
+            DtLocationStatusChangeRecord locationStatusChangeRecord = new DtLocationStatusChangeRecord()
+            {
+                AfterStatus = locationInfo.LocationStatus,
+                BeforeStatus = lastStatus,
+                ChangeType = changeType,
+                LocationCode = locationInfo.LocationCode,
+                LocationId = locationInfo.Id,
+                TaskNum = taskNum,
+                Creater = "System",
+                CreateDate = DateTime.Now,
+            };
+            base.AddData(locationStatusChangeRecord);
+
+        }
+
+        public void AddLocationStatusChangeRecord(List<DtLocationInfo> locationInfos, int newStatus, int changeType, List<int>? taskNums)
+        {
+            try
+            {
+                List<DtLocationStatusChangeRecord> records = new List<DtLocationStatusChangeRecord>();
+                for (int i = 0; i < locationInfos.Count; i++)
+                {
+                    DtLocationInfo locationInfo = locationInfos[i];
+                    int? taskNum = (taskNums != null && taskNums.Count > 0 && taskNums.Count == locationInfos.Count) ? taskNums[i] : null;
+                    DtLocationStatusChangeRecord locationStatusChangeRecord = new DtLocationStatusChangeRecord()
+                    {
+                        AfterStatus = newStatus,
+                        BeforeStatus = locationInfo.LocationStatus,
+                        ChangeType = changeType,
+                        LocationCode = locationInfo.LocationCode,
+                        LocationId = locationInfo.Id,
+                        TaskNum = taskNum,
+                    };
+                    records.Add(locationStatusChangeRecord);
+                }
+                AddData(records);
+            }
+            catch (Exception ex)
+            {
+                throw new Exception($"{ex.Message}");
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoDetailRepository.cs
new file mode 100644
index 0000000..e501175
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoDetailRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class StockInfoDetailRepository : RepositoryBase<DtStockInfoDetail>, IStockInfoDetailRepository
+    {
+        public StockInfoDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoHtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoHtyRepository.cs
new file mode 100644
index 0000000..e16d05a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoHtyRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class StockInfoHtyRepository : RepositoryBase<DtStockInfo_Hty>, IStockInfoHtyRepository
+    {
+        public StockInfoHtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoRepository.cs
new file mode 100644
index 0000000..59bac47
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/Stock/StockInfoRepository.cs
@@ -0,0 +1,9 @@
+锘縩amespace WIDESEA_StorageBasicRepository
+{
+    public class StockInfoRepository : RepositoryBase<DtStockInfo>, IStockInfoRepository
+    {
+        public StockInfoRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+        {
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj
new file mode 100644
index 0000000..cc6dc03
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicRepository/WIDESEA_StorageBasicRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IStorageBasicRepository\WIDESEA_IStorageBasicRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_InventoryRecordService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_InventoryRecordService.cs
new file mode 100644
index 0000000..f2298dc
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_InventoryRecordService.cs
@@ -0,0 +1,16 @@
+锘縰sing WIDESEA_IServices;
+using WIDESEA_Model.Models.Basic;
+using WIDESEAWCS_BasicInfoRepository;
+
+namespace WIDESEAWCS_BasicInfoService
+{
+    public partial class Dt_InventoryRecordService : ServiceBase<Dt_InventoryRecord, IDt_InventoryRecordRepository>, IDt_InventoryRecordService
+    {
+        private readonly ISys_ConfigService _sys_ConfigService;
+
+        public Dt_InventoryRecordService(IDt_InventoryRecordRepository BaseDal, ISys_ConfigService sys_ConfigService) : base(BaseDal)
+        {
+            _sys_ConfigService = sys_ConfigService;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs
new file mode 100644
index 0000000..3c14dd6
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/BasicInfo/Dt_StationManagerService.cs
@@ -0,0 +1,16 @@
+锘縰sing WIDESEA_IServices;
+using WIDESEA_Model.Models.Basic;
+using WIDESEAWCS_BasicInfoRepository;
+
+namespace WIDESEAWCS_BasicInfoService
+{
+    public partial class Dt_StationManagerService : ServiceBase<Dt_StationManager, IDt_StationManagerRepository>, IDt_StationManagerService
+    {
+        private readonly ISys_ConfigService _sys_ConfigService;
+
+        public Dt_StationManagerService(IDt_StationManagerRepository BaseDal, ISys_ConfigService sys_ConfigService) : base(BaseDal)
+        {
+            _sys_ConfigService = sys_ConfigService;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoDetailService.cs
new file mode 100644
index 0000000..a0e3f0e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoDetailService.cs
@@ -0,0 +1,8 @@
+锘縩amespace WIDESEA_StorageBasicService;
+
+public class BoxingInfoDetailService : ServiceBase<DtBoxingInfoDetail, IBoxingInfoDetailRepository>, IBoxingInfoDetailService
+{
+    public BoxingInfoDetailService(IBoxingInfoDetailRepository BaseDal) : base(BaseDal)
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoHtyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoHtyService.cs
new file mode 100644
index 0000000..347e543
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoHtyService.cs
@@ -0,0 +1,17 @@
+锘縰sing Mapster;
+using Masuit.Tools;
+using System.ComponentModel.DataAnnotations;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_DTO.Basic;
+
+namespace WIDESEA_StorageBasicService;
+
+public class BoxingInfoHtyService : ServiceBase<DtBoxingInfo_Hty, IBoxingInfoHtyRepository>, IBoxingInfoHtyService
+{
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+    public BoxingInfoHtyService(IBoxingInfoHtyRepository BaseDal, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+    }
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs
new file mode 100644
index 0000000..f81c063
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Boxing/BoxingInfoService.cs
@@ -0,0 +1,128 @@
+锘縰sing Mapster;
+using Masuit.Tools;
+using Masuit.Tools.Models;
+using SqlSugar;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_DTO.Basic;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StorageBasicService;
+
+public class BoxingInfoService : ServiceBase<DtBoxingInfo, IBoxingInfoRepository>, IBoxingInfoService
+{
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    private readonly IBoxingInfoDetailRepository _boxingInfoDetailRepository;
+    public BoxingInfoService(IBoxingInfoRepository BaseDal,IUnitOfWorkManage unitOfWorkManage, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,IBoxingInfoDetailRepository boxingInfoDetailRepository) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+        _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        _boxingInfoDetailRepository = boxingInfoDetailRepository;
+    }
+    public override PageGridData<DtBoxingInfo> GetPageData(PageDataOptions options)
+    {
+        string wheres = ValidatePageOptions(options);
+        //鑾峰彇鎺掑簭瀛楁
+        Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+        List<OrderByModel> orderByModels = new List<OrderByModel>();
+        foreach (var item in orderbyDic)
+        {
+            OrderByModel orderByModel = new()
+            {
+                FieldName = item.Key,
+                OrderByType = item.Value
+            };
+            orderByModels.Add(orderByModel);
+        }
+
+
+        int totalCount = 0;
+        List<SearchParameters> searchParametersList = new List<SearchParameters>();
+        if (!string.IsNullOrEmpty(options.Wheres))
+        {
+            try
+            {
+                searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                options.Filter = searchParametersList;
+            }
+            catch { }
+        }
+        var data = BaseDal.Db.Queryable<DtBoxingInfo>()
+            .Includes(x => x.BoxingInfoDetails)
+            .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+            .OrderBy(orderByModels)
+            .ToPageList(options.Page, options.Rows, ref totalCount);
+        new PageGridData<DtBoxingInfo>(totalCount, data);
+        return new PageGridData<DtBoxingInfo>(totalCount, data);
+    }
+
+    #region 缁勭洏
+
+    public async Task<WebResponseContent> AddGroupPlateAsync(GroupPlate groupPlate)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+
+            return content.OK("缁勭洏鎴愬姛");
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+
+
+    
+    #endregion
+
+    #region 瑙g洏
+    public async Task<WebResponseContent> DeleteGroupPlateAsync(GroupPlate groupPlate)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            if (groupPlate == null || groupPlate.palletCode.IsNullOrEmpty())
+            {
+                return content.Error("鍙傛暟閿欒");
+            }
+            var boxingInfo = await BaseDal.QueryFirstNavAsync(x => x.PalletCode == groupPlate.palletCode);
+            if (!boxingInfo.IsNullOrEmpty())
+            {
+                boxingInfo.StockStatus = (int)StockStateEmun.缁勭洏鎾ら攢;
+                DtBoxingInfo_Hty stockhty = boxingInfo.Adapt<DtBoxingInfo_Hty>();
+                stockhty.ModifyDate = DateTime.Now;
+                await _unitOfWorkManage.UseTranAsync(async () =>
+                {
+                    await BaseDal.Db.DeleteNav<DtBoxingInfo>(x => x.Id == boxingInfo.Id)
+                                            .Include(x => x.BoxingInfoDetails)
+                                            .ExecuteCommandAsync();
+                    await AddStockHtyAsync(stockhty);
+                });
+                content.OK("瑙g洏鎴愬姛");
+            }
+            else
+            {
+                content.Error("鏈壘鍒扮粍鐩樻暟鎹�");
+            }
+            return content;
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+    private async Task AddStockHtyAsync(DtBoxingInfo_Hty stockhty)
+    {
+        var isStockAdd = await SqlSugarHelper.DbWMS.InsertNav(stockhty).Include(x=>x.BoxingInfoDetails).ExecuteCommandAsync();
+        if (!isStockAdd)
+        {
+            throw new Exception("缁勭洏鍘嗗彶淇℃伅娣诲姞澶辫触");
+        }
+    }
+    #endregion
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/GlobalUsing.cs
new file mode 100644
index 0000000..79db57d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/GlobalUsing.cs
@@ -0,0 +1,15 @@
+锘縢lobal using AutoMapper;
+global using System.Threading.Tasks;
+global using WIDESEA_Core;
+global using WIDESEA_Core.Enums;
+global using WIDESEA_Core.BaseRepository;
+global using WIDESEA_Core.BaseServices;
+global using WIDESEA_Core.Helper;
+global using WIDESEA_IStorageBasicRepository;
+global using WIDESEA_IStorageBasicService;
+global using WIDESEA_Model.Models;
+global using WIDESEA_IStorageTaskRepository;
+global using WIDESEA_IStorageTaskServices;
+global using Newtonsoft.Json;
+global using WIDESEA_IBusinessesRepository;
+global using LogLibrary.Log;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
new file mode 100644
index 0000000..40a5626
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationInfoService.cs
@@ -0,0 +1,287 @@
+锘縰sing AngleSharp.Dom;
+using Mapster;
+using System.Threading.Tasks;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.Const;
+using WIDESEA_DTO;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_StorageBasicService;
+
+public class LocationInfoService : ServiceBase<DtLocationInfo, ILocationInfoRepository>, ILocationInfoService
+{
+    private readonly LogFactory LogFactory = new LogFactory();
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+    private readonly IStockInfoRepository _stockInfoRepository;
+    private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+    private readonly IDt_WareAreaInfoRepository _wareAreaInfoRepository;
+    private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+    private readonly IDt_AreaInfoRepository _AreaInfoRepository;
+    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    private readonly ISys_ConfigService _configService;
+    private readonly IMapper _mapper;
+
+    public LocationInfoService(ILocationInfoRepository BaseDal,
+                                    IUnitOfWorkManage unitOfWorkManage,
+                                    IStockInfoRepository stockInfoRepository,
+                                    IDt_WareAreaInfoRepository wareAreaInfoRepository,
+                                    ITaskExecuteDetailRepository taskExecuteDetailRepository,
+                                    ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
+                                    IStockInfoDetailRepository stockInfoDetailRepository,
+                                    IMapper mapper,
+                                    IDt_AreaInfoRepository AreaInfoRepository,
+                                    ISys_ConfigService configService) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+        _stockInfoRepository = stockInfoRepository;
+        _wareAreaInfoRepository = wareAreaInfoRepository;
+        _taskExecuteDetailRepository = taskExecuteDetailRepository;
+        _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        _stockInfoDetailRepository = stockInfoDetailRepository;
+        _mapper = mapper;
+        _AreaInfoRepository = AreaInfoRepository;
+        _configService= configService;
+    }
+
+    public override WebResponseContent UpdateData(SaveModel saveModel)
+    {
+        int id = saveModel.MainData["id"].ObjToInt();
+        int status = saveModel.MainData["locationStatus"].ObjToInt();
+        var location = BaseDal.QueryFirst(x => x.Id == id);
+
+        LocationChangeRecordDto changeRecordDto = new LocationChangeRecordDto()
+        {
+            AfterStatus = status,
+            BeforeStatus = location.LocationStatus,
+            TaskNum = 0,
+            LocationId = id,
+            LocationCode = location.LocationCode,
+            ChangeType = (int)StatusChangeTypeEnum.ManualOperation
+        };
+
+        _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
+
+        return base.UpdateData(saveModel);
+    }
+
+    #region 鍒濆鍖栧簱浣�
+    public async Task<WebResponseContent> initializeLocation(string locationCode)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            DtLocationInfo? location = BaseDal.QueryData(x => x.LocationCode == locationCode).FirstOrDefault();
+            int LastStatus = location.LocationStatus;
+            if (location == null)
+            {
+                return content.Error("鏈壘鍒拌揣浣嶄俊鎭�!");
+            }
+            DtStockInfo stock = _stockInfoRepository.QueryFirst(x => x.LocationCode == location.LocationCode);
+            if(stock == null)
+            {
+                location.LocationStatus= (int)LocationEnum.Free;
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, LastStatus, (int)StatusChangeTypeEnum.ManualOperation, 0);
+                BaseDal.UpdateData(location);
+            }
+            else
+            {
+                _unitOfWorkManage.BeginTran();
+                DtStockInfo_Hty stockInfo_Hty = stock.Adapt<DtStockInfo_Hty>();
+                stockInfo_Hty.ModifyDate = DateTime.Now;
+                await DeleteStockInfoAsync(stock.Id);
+                List<DtStockInfoDetail> detail = _stockInfoDetailRepository.QueryData(x => x.StockId == stock.Id).ToList();
+                if (detail != null && detail.Count() > 0)
+                {
+                    List<DtStockInfoDetail_Hty> details = detail.Adapt<List<DtStockInfoDetail_Hty>>();
+                    await DeleteStockInfoDetailsAsync(detail);
+                    AddStockInfoDetailHty(details);
+                }
+                await AddStockInfoHtyAsync(stockInfo_Hty);
+                
+
+                location.LocationStatus = (int)LocationEnum.Free;
+                BaseDal.UpdateData(location);
+
+                _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, LastStatus, (int)StatusChangeTypeEnum.ManualOperation, 0);
+                _unitOfWorkManage.CommitTran();
+            }
+            return content.OK();
+        }
+        catch (Exception ex)
+        {
+            _unitOfWorkManage.RollbackTran();
+            return content.Error(ex.Message);
+        }
+    }
+    #endregion
+
+    #region 鍒涘缓鍘熷璐т綅鏁版嵁
+
+    /// <summary>
+    /// 鍒涘缓鍘熷璐т綅鏁版嵁
+    /// </summary>
+    /// <param name="x">琛�</param>
+    /// <param name="y">鍒�</param>
+    /// <param name="z">灞�</param>
+    /// <param name="locType">璐т綅绫诲瀷锛�1銆佸崟娣�,2銆佸弻娣憋級</param>
+    /// <param name="areaId">搴撳尯缂栫爜</param>
+    /// <returns></returns>
+    public WebResponseContent CreateLocation(int x, int y, int z, int locType, int areaId)
+    {
+        string[] chineseNumbers = new string[] { "闆�", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�", "涓�", "鍏�", "涔�" };
+        var locationList = new List<DtLocationInfo>();
+        for (int line = 1; line <= x; line++)
+        {
+            for (int column = 1; column <= y; column++)
+            {
+                for (int layer = 1; layer <= z; layer++)
+                {
+                    locationList.Add(new DtLocationInfo()
+                    {
+                        Row = line,
+                        Column = column,
+                        Layer = layer,
+                        LocationCode = "HAI-"+line.ToString().PadLeft(3, '0') + '-' + column.ToString().PadLeft(3, '0') + '-' + layer.ToString().PadLeft(3, '0'),
+                        LocationName = ConvertToFormattedString(line, column, layer),
+                        LocationType = locType,
+                        Remark = "",
+                        Depth = locType > 1 ? (((line - 1) % 4) + 1) == 2 || (((line - 1) % 4) + 1) == 3 ? 1 : 2 : 1,
+                        RoadwayNo = locType > 1 ? $"CHSC{((line - 1) / 4) + 1}" : $"CHSC{((line - 1) / 2) + 1}",
+                        LocationStatus = LocationEnum.Free.ObjToInt(),
+                        AreaId = areaId,
+                        Creater = "System",
+                        EnalbeStatus = EnableEnum.Enable.ObjToInt(),
+                    });
+                }
+            }
+        }
+        var isResult = BaseDal.AddData(locationList) > 0;
+        if (isResult)
+            return new WebResponseContent().OK();
+        else
+            return new WebResponseContent().Error();
+    }
+
+    #endregion 鍒涘缓鍘熷璐т綅鏁版嵁
+
+    #region 鍚敤绂佺敤璐т綅
+
+    public WebResponseContent LocationEnable(SaveModel saveModel)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            List<DtLocationInfo> locations = new List<DtLocationInfo>();
+            int enable = Convert.ToBoolean(saveModel.Extra) ? 0 : 4;
+            for (int i = 0; i < saveModel.DelKeys.Count; i++)
+            {
+                DtLocationInfo? location = BaseDal.QueryData(x => x.Id == int.Parse(saveModel.DelKeys[i].ToString())).FirstOrDefault();
+                location.LocationStatus = enable;
+                locations.Add(location);
+            }
+            BaseDal.UpdateData(locations);
+            content = WebResponseContent.Instance.OK();
+        }
+        catch (Exception ex)
+        {
+            content = WebResponseContent.Instance.Error(ex.Message);
+        }
+        finally
+        {
+            //鏃ュ織璁板綍
+        }
+        return content;
+    }
+
+    #endregion 鍚敤绂佺敤璐т綅
+
+    #region 鍐呴儴鏂规硶
+
+    #region 鍒涘缓鍒濆璐т綅鏂规硶
+
+    public static string ConvertToFormattedString(int line, int column, int layer)
+    {
+        // 灏嗘瘡涓儴鍒嗚浆鎹负鐩爣鏍煎紡
+        string lineString = ConvertNumberToChineseString(line);
+        string columnString = ConvertNumberToChineseString(column);
+        string layerString = ConvertNumberToChineseString(layer);
+
+        // 鏍煎紡鍖栬緭鍑�
+        return $"{lineString}琛寋columnString}鍒梴layerString}灞�";
+    }
+
+    public static string ConvertNumberToChineseString(int number)
+    {
+        string[] chineseNumbers = { "闆�", "涓�", "浜�", "涓�", "鍥�", "浜�", "鍏�", "涓�", "鍏�", "涔�", "鍗�" };
+
+        if (number <= 10)
+        {
+            return chineseNumbers[number];
+        }
+
+        // 澶勭悊澶т簬10鐨勬暟瀛�
+        string result = string.Empty;
+        if (number / 10 > 1)
+        {
+            result += chineseNumbers[number / 10] + "鍗�";
+        }
+        else
+        {
+            result += "鍗�";
+        }
+
+        if (number % 10 > 0)
+        {
+            result += chineseNumbers[number % 10];
+        }
+
+        return result;
+    }
+
+    #endregion 鍒涘缓鍒濆璐т綅鏂规硶
+
+    #region 搴撳瓨绉诲叆鍘嗗彶
+    private async Task DeleteStockInfoAsync(int stockId)
+    {
+        var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(stockId);
+        if (!isStockUpdated)
+        {
+            throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+        }
+    }
+
+    private async Task AddStockInfoHtyAsync(DtStockInfo_Hty dtStock)
+    {
+        var isStockAdd = await SqlSugarHelper.DbWMS.InsertNav(dtStock).IncludesAllFirstLayer().ExecuteCommandAsync();
+        if (!isStockAdd)
+        {
+            throw new Exception("搴撳瓨鍘嗗彶淇℃伅娣诲姞澶辫触");
+        }
+    }
+
+    private async Task DeleteStockInfoDetailsAsync(IEnumerable<DtStockInfoDetail> details)
+    {
+        var ids = details.Select(x => (object)x.Id).ToArray();
+        var isStockDetailUpdated = await _stockInfoDetailRepository.DeleteDataByIdsAsync(ids);
+        if (!isStockDetailUpdated)
+        {
+            throw new Exception("搴撳瓨璇︽儏淇℃伅鏇存柊澶辫触");
+        }
+    }
+    private void AddStockInfoDetailHty(List<DtStockInfoDetail_Hty> details)
+    {
+
+        var isStockAdd = SqlSugarHelper.DbWMS.Insertable(details).ExecuteCommand();
+        if (isStockAdd==0)
+        {
+            throw new Exception("搴撳瓨鏄庣粏鍘嗗彶淇℃伅娣诲姞澶辫触");
+        }
+    }
+
+    #endregion
+
+    #endregion 鍐呴儴鏂规硶
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationStatusChangeRecordService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationStatusChangeRecordService.cs
new file mode 100644
index 0000000..ac1ab1e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Location/LocationStatusChangeRecordService.cs
@@ -0,0 +1,8 @@
+锘縩amespace WIDESEA_StorageBasicService;
+
+public class LocationStatusChangeRecordService : ServiceBase<DtLocationStatusChangeRecord, ILocationStatusChangeRecordRepository>, ILocationStatusChangeRecordService
+{
+    public LocationStatusChangeRecordService(ILocationStatusChangeRecordRepository BaseDal) : base(BaseDal)
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile1.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Properties/PublishProfiles/FolderProfile1.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoDetailService.cs
new file mode 100644
index 0000000..956dc28
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoDetailService.cs
@@ -0,0 +1,45 @@
+锘縰sing SqlSugar;
+
+namespace WIDESEA_StorageBasicService;
+
+public class StockInfoDetailService : ServiceBase<DtStockInfoDetail, IStockInfoDetailRepository>, IStockInfoDetailService
+{
+    public StockInfoDetailService(IStockInfoDetailRepository BaseDal) : base(BaseDal)
+    {
+    }
+    public override PageGridData<DtStockInfoDetail> GetPageData(PageDataOptions options)
+    {
+        string wheres = ValidatePageOptions(options);
+        //鑾峰彇鎺掑簭瀛楁
+        Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+        List<OrderByModel> orderByModels = new List<OrderByModel>();
+        foreach (var item in orderbyDic)
+        {
+            OrderByModel orderByModel = new()
+            {
+                FieldName = item.Key,
+                OrderByType = item.Value
+            };
+            orderByModels.Add(orderByModel);
+        }
+
+
+        int totalCount = 0;
+        List<SearchParameters> searchParametersList = new List<SearchParameters>();
+        if (!string.IsNullOrEmpty(options.Wheres))
+        {
+            try
+            {
+                searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                options.Filter = searchParametersList;
+            }
+            catch { }
+        }
+        var data = BaseDal.Db.Queryable<DtStockInfoDetail>()
+            .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+            .OrderBy(orderByModels)
+            .ToPageList(options.Page, options.Rows, ref totalCount);
+        var x = new PageGridData<DtStockInfoDetail>(totalCount, data);
+        return new PageGridData<DtStockInfoDetail>(totalCount, data);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoHtyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoHtyService.cs
new file mode 100644
index 0000000..cd49b05
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoHtyService.cs
@@ -0,0 +1,76 @@
+锘縰sing AngleSharp.Dom;
+using Mapster;
+using Masuit.Tools;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using SqlSugar;
+using System.Collections;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+using WIDESEA_Cache;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_StorageBasicService;
+
+public class StockInfoHtyService : ServiceBase<DtStockInfo_Hty, IStockInfoHtyRepository>, IStockInfoHtyService
+{
+    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    public StockInfoHtyService(IStockInfoHtyRepository BaseDal, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
+    {
+        _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+    }
+
+    /// <summary>
+    /// 鍒嗛〉
+    /// </summary>
+    /// <param name="options"></param>
+    /// <returns></returns>
+    public override PageGridData<DtStockInfo_Hty> GetPageData(PageDataOptions options)
+    {
+        string wheres = ValidatePageOptions(options);
+        //鑾峰彇鎺掑簭瀛楁
+        Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+        List<OrderByModel> orderByModels = new List<OrderByModel>();
+        foreach (var item in orderbyDic)
+        {
+            OrderByModel orderByModel = new()
+            {
+                FieldName = item.Key,
+                OrderByType = item.Value
+            };
+            orderByModels.Add(orderByModel);
+        }
+
+
+        int totalCount = 0;
+        List<SearchParameters> searchParametersList = new List<SearchParameters>();
+        if (!string.IsNullOrEmpty(options.Wheres))
+        {
+            try
+            {
+                searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                options.Filter = searchParametersList;
+            }
+            catch { }
+        }
+        Expression<Func<DtStockInfo_Hty, bool>> materielCode = null;
+        foreach (var item in searchParametersList)
+        {
+            if (item.Name.Contains("materielCode"))
+            {
+                materielCode = x => x.StockInfoDetails.Any(d => d.MaterielCode == item.Value);
+            }
+        }
+        var data = BaseDal.Db.Queryable<DtStockInfo_Hty>()
+            .Includes(x => x.StockInfoDetails)
+            .Where(x=>x.CreateDate>DateTime.Now.AddMonths(-1))
+            .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+             .WhereIF(materielCode != null, materielCode)
+            .OrderBy(orderByModels)
+            .ToPageList(options.Page, options.Rows, ref totalCount);
+        return new PageGridData<DtStockInfo_Hty>(totalCount, data);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
new file mode 100644
index 0000000..89f1c40
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
@@ -0,0 +1,202 @@
+锘縰sing AngleSharp.Dom;
+using Dm;
+using Mapster;
+using Masuit.Tools;
+using NewLife.Reflection;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
+using SqlSugar;
+using System.Collections;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using WIDESEA_Cache;
+using WIDESEA_Common;
+using WIDESEA_Core;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_Model.Models;
+using WIDESEA_StorageTaskRepository;
+using JsonSerializer = System.Text.Json.JsonSerializer;
+
+namespace WIDESEA_StorageBasicService;
+
+public class StockInfoService : ServiceBase<DtStockInfo, IStockInfoRepository>, IStockInfoService
+{
+    private readonly LogFactory LogFactory = new LogFactory();
+    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+    private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+    private readonly IDt_TaskService _taskService;
+    private readonly ILocationInfoRepository _locationRepository;
+    private readonly IDt_TaskRepository _taskRepository;
+    private readonly IDt_Task_HtyRepository _task_HtyRepository;
+
+    public StockInfoService(IStockInfoRepository BaseDal,
+                                ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
+                                IUnitOfWorkManage unitOfWorkManage,
+                                IStockInfoDetailRepository stockInfoDetailRepository,
+                                IDt_TaskService taskService,
+                                ILocationInfoRepository locationRepository,
+                                IDt_TaskRepository taskRepository,
+                                IDt_Task_HtyRepository task_HtyRepository) : base(BaseDal)
+    {
+        _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        _unitOfWorkManage = unitOfWorkManage;
+        _stockInfoDetailRepository = stockInfoDetailRepository;
+        _taskService = taskService;
+        _locationRepository = locationRepository;
+        _taskRepository = taskRepository;
+        _task_HtyRepository = task_HtyRepository;
+    }
+    #region 鏂规硶閲嶅啓
+    /// <summary>
+    /// 鍒嗛〉
+    /// </summary>
+    /// <param name="options"></param>
+    /// <returns></returns>
+    public override PageGridData<DtStockInfo> GetPageData(PageDataOptions options)
+    {
+        string wheres = ValidatePageOptions(options);
+        //鑾峰彇鎺掑簭瀛楁
+        Dictionary<string, OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+        List<OrderByModel> orderByModels = new List<OrderByModel>();
+        foreach (var item in orderbyDic)
+        {
+            OrderByModel orderByModel = new()
+            {
+                FieldName = item.Key,
+                OrderByType = item.Value
+            };
+            orderByModels.Add(orderByModel);
+        }
+
+
+        int totalCount = 0;
+        List<SearchParameters> searchParametersList = new List<SearchParameters>();
+        if (!string.IsNullOrEmpty(options.Wheres))
+        {
+            try
+            {
+                searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                options.Filter = searchParametersList;
+            }
+            catch { }
+        }
+
+        Expression<Func<DtStockInfo, bool>> locationStatus = null;
+        Expression<Func<DtStockInfo, bool>> floor = null;
+        Expression<Func<DtStockInfo, bool>> areaId = null;
+        Expression<Func<DtStockInfo, bool>> materielCode = null;
+        Expression<Func<DtStockInfo, bool>> materielName = null;
+        Expression<Func<DtStockInfo, bool>> demandClassification = null;
+        foreach (var item in searchParametersList)
+        {
+            if (item.Name.Contains("locationStatus"))
+            {
+                locationStatus = x => x.LocationInfo.LocationStatus == Convert.ToInt32(item.Value);
+            }
+            else if (item.Name.Contains("floor"))
+            {
+                floor = x => x.LocationInfo.Floor.Contains(item.Value);
+            }
+            else if (item.Name.Contains("areaId"))
+            {
+                areaId = x => x.LocationInfo.AreaId == Convert.ToInt32(item.Value);
+            }
+            else if (item.Name.Contains("materielCode"))
+            {
+                materielCode = x => x.StockInfoDetails.Any(d => d.MaterielCode.Contains(item.Value));
+            }
+            else if (item.Name.Contains("materielName"))
+            {
+                materielName = x => x.StockInfoDetails.Any(d => d.MaterielName.Contains(item.Value));
+            }
+            else if (item.Name.Contains("demandClassification"))
+            {
+                demandClassification = x => x.StockInfoDetails.Any(d => d.DemandClassification.Contains(item.Value));
+            }
+        }
+        //.IncludesAllFirstLayer()
+        var data = BaseDal.Db.Queryable<DtStockInfo>()
+            .Includes(x => x.StockInfoDetails)
+            .Includes(x => x.LocationInfo)
+            .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+            .WhereIF(locationStatus != null, locationStatus)
+            .WhereIF(floor != null, floor)
+            .WhereIF(areaId != null, areaId)
+            .WhereIF(materielCode != null, materielCode)
+            .WhereIF(materielName != null, materielName)
+            .WhereIF(demandClassification != null, demandClassification)
+            .OrderBy(orderByModels)
+            .ToPageList(options.Page, options.Rows, ref totalCount);
+        new PageGridData<DtStockInfo>(totalCount, data);
+        return new PageGridData<DtStockInfo>(totalCount, data);
+    }
+
+    
+    public List<T> DeserializeList<T>(List<Dictionary<string, object>> rawData)
+    {
+        if (rawData == null) return new List<T>();
+        var processedData = rawData.Select(dict =>
+        {
+            var newDict = new Dictionary<string, object>();
+            foreach (var kvp in dict)
+            {
+                var newKey = char.ToUpper(kvp.Key[0]) + kvp.Key.Substring(1);
+                newDict[newKey] = kvp.Value;
+            }
+            return newDict;
+        }).ToList();
+        var json = JsonSerializer.Serialize(processedData);
+        return JsonSerializer.Deserialize<List<T>>(json);
+    }
+
+    #endregion
+
+    #region 搴撳瓨瑙嗗浘
+    public List<StockSelectViewDTO> GetStockSelectViews(GetStockSelectViewDto viewDto)
+    {
+        var stocks = BaseDal.Db.Queryable<DtStockInfo>()
+        .Includes(x => x.StockInfoDetails)
+        .Includes(x => x.LocationInfo)
+        .Where(x => x.LocationInfo.LocationStatus == (int)LocationEnum.InStock && x.LocationInfo.EnalbeStatus == (int)EnableEnum.Enable)
+        .Where(x => x.StockInfoDetails.Any(d => d.MaterielCode == viewDto.materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)).ToList().OrderBy(x => x.CreateDate);
+
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        List<DtStockInfo> stockNew = new List<DtStockInfo>();
+        if (stocks != null || stocks.Count() > 0)
+        {
+            var locations = stocks.Select(s => s.LocationInfo).ToList();
+            stockNew = stocks.Where(s => s.LocationInfo != null && locationInfos.Contains(s.LocationInfo)).ToList();
+        }
+
+        var result = stockNew.Select(s => new StockSelectViewDTO
+        {
+            MaterielCode = s.StockInfoDetails
+            .FirstOrDefault(d => d.MaterielCode == viewDto.materielCode)?.MaterielCode ?? string.Empty,
+
+            MaterielName = s.StockInfoDetails
+            .FirstOrDefault(d => d.MaterielCode == viewDto.materielCode)?.MaterielName ?? string.Empty,
+
+            UseableQuantity = s.StockInfoDetails
+            .Where(d => d.MaterielCode == viewDto.materielCode && d.Quantity > 0 && d.Quantity > d.OutboundQuantity)
+            .Sum(d => (decimal?)d.Quantity - d.OutboundQuantity) ?? 0,  // 澶勭悊绌哄�兼儏鍐�
+
+            PalletCode = s.PalletCode ?? string.Empty,
+            LocationCode = s.LocationInfo?.LocationCode ?? string.Empty
+        }).ToList();
+
+        return result;
+    }
+
+    #endregion
+
+
+  }
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj
new file mode 100644
index 0000000..b3cbc09
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/WIDESEA_StorageBasicServices.csproj
@@ -0,0 +1,27 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_Cache\WIDESEA_Cache.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOrderServices\WIDESEA_IOrderServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+    <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/GlobalUsing.cs
new file mode 100644
index 0000000..564cbbf
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/GlobalUsing.cs
@@ -0,0 +1,3 @@
+锘縢lobal using WIDESEA_Core.BaseRepository;
+global using WIDESEA_IStorageTaskRepository;
+global using WIDESEA_Model.Models;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_TaskRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_TaskRepository.cs
new file mode 100644
index 0000000..d98402a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_TaskRepository.cs
@@ -0,0 +1,73 @@
+锘縩amespace WIDESEA_StorageTaskRepository;
+
+public class Dt_TaskRepository : RepositoryBase<Dt_Task>, IDt_TaskRepository
+{
+    public Dt_TaskRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+
+    public async Task<Dt_Task> Create(Dt_Task model)
+    {
+        return await Db.Insertable(model).ExecuteReturnEntityAsync();
+    }
+
+    public async Task<bool> Create(List<Dt_Task> models)
+    {
+        var num = Db.Insertable(models).ExecuteCommand();
+        if (num == models.Count)
+            return await Task.FromResult(true);
+        else
+            return await Task.FromResult(false);
+    }
+
+    public async Task<bool> Delete(int id)
+    {
+        return await Db.Deleteable<Dt_Task>().In(id).ExecuteCommandHasChangeAsync();
+    }
+
+    public async Task<bool> Delete(List<int> ids)
+    {
+        return await Db.Deleteable<Dt_Task>().In(ids.ToArray()).ExecuteCommandHasChangeAsync();
+    }
+
+    public async Task<Dt_Task> GetById(int id)
+    {
+        return await Db.Queryable<Dt_Task>().InSingleAsync(id);
+    }
+
+    public async Task<List<Dt_Task>> GetList()
+    {
+        return await Db.Queryable<Dt_Task>().ToListAsync();
+    }
+
+    public Task<List<Dt_Task>> GetListByOutOrder(int outOrderId)
+    {
+        throw new NotImplementedException();
+    }
+
+    public Task<List<Dt_Task>> GetListByOutOrderAndStatus(int outOrderId, int status)
+    {
+        throw new NotImplementedException();
+    }
+
+    public async Task<List<Dt_Task>> GetListByStatus(int status)
+    {
+        return await Db.Queryable<Dt_Task>().Where(x => x.TaskState == status).ToListAsync();
+    }
+
+    public Task<int> GetTaskNo()
+    {
+        string sql = "select next value for dbo.GetTaskNum";
+        return Db.Ado.SqlQuerySingleAsync<int>(sql);
+    }
+
+    public async Task<bool> Update(Dt_Task model)
+    {
+        return await Db.Updateable(model).ExecuteCommandHasChangeAsync();
+    }
+
+    public async Task<bool> Update(List<Dt_Task> models)
+    {
+        return await Db.Updateable(models).ExecuteCommandHasChangeAsync();
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_Task_HtyRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_Task_HtyRepository.cs
new file mode 100644
index 0000000..68c7402
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/Dt_Task_HtyRepository.cs
@@ -0,0 +1,13 @@
+锘縩amespace WIDESEA_StorageTaskRepository;
+
+public class Dt_Task_HtyRepository : RepositoryBase<Dt_Task_Hty>, IDt_Task_HtyRepository
+{
+    public Dt_Task_HtyRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+
+    public bool InsertTask(Dt_Task_Hty task)
+    {
+        return Db.Insertable(task).ExecuteCommand() > 0;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/TaskExecuteDetailRepository.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/TaskExecuteDetailRepository.cs
new file mode 100644
index 0000000..c5dc491
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/Task/TaskExecuteDetailRepository.cs
@@ -0,0 +1,29 @@
+锘縩amespace WIDESEA_StorageTaskRepository;
+
+public class TaskExecuteDetailRepository : RepositoryBase<Dt_TaskExecuteDetail>, ITaskExecuteDetailRepository
+{
+    public TaskExecuteDetailRepository(IUnitOfWorkManage unitOfWorkManage) : base(unitOfWorkManage)
+    {
+    }
+
+    /// <summary>
+    /// 娣诲姞浠诲姟鏄庣粏
+    /// </summary>
+    /// <param name="dt_Task">浠诲姟鏁版嵁</param>
+    /// <param name="isManual">鏄惁浜哄伐鎿嶄綔</param>
+    /// <param name="message">鎵ц淇℃伅</param>
+    /// <returns></returns>
+    public async Task<bool> AddDetailAsync(Dt_Task dt_Task,bool isManual,string message)
+    {
+        Dt_TaskExecuteDetail dt_TaskExecuteDetail = new Dt_TaskExecuteDetail()
+        {
+            Creater = "System",
+            IsManual = isManual,
+            TaskId = dt_Task.TaskId,
+            TaskNum = dt_Task.TaskNum,
+            TaskState = dt_Task.TaskState,
+            Remark = message
+        };
+        return await AddDataAsync(dt_TaskExecuteDetail) > 0;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj
new file mode 100644
index 0000000..20acbba
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskRepository/WIDESEA_StorageTaskRepository.csproj
@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\WIDESEA_IStorageTaskRepository\WIDESEA_IStorageTaskRepository.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
new file mode 100644
index 0000000..8d68567
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/AspNetCoreSchedule.cs
@@ -0,0 +1,79 @@
+锘縰sing AngleSharp.Dom;
+using Magicodes.ExporterAndImporter.Excel.Utility.TemplateExport;
+using MailKit.Search;
+using Masuit.Tools;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using SixLabors.Fonts;
+using SqlSugar;
+using System;
+using System.Data;
+using System.Net;
+using System.Net.Mail;
+using System.Text;
+using System.Xml.Linq;
+using WIDESEA_Cache;
+using WIDESEA_Core.Const;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IServices;
+using WIDESEAWCS_BasicInfoRepository;
+
+namespace WIDESEA_StorageTaskServices
+{
+    public class MyBackgroundService : IHostedService, IDisposable
+    {
+        private readonly ILogger<MyBackgroundService> _logger;
+        private readonly IStockInfoRepository _stockInfoRepository;
+        private readonly IDt_TaskRepository _taskRepository;
+        private readonly ISys_ConfigService _configService;
+        private readonly ILocationInfoRepository _locationRepository;
+        private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private Timer _timer;
+
+        public MyBackgroundService(ILogger<MyBackgroundService> logger, ILocationInfoRepository locationRepository, IStockInfoRepository stockInfoRepository,IDt_TaskRepository taskRepository,ISys_ConfigService configService,IUnitOfWorkManage unitOfWorkManage)
+        {
+            _logger = logger;
+            _locationRepository = locationRepository;
+            _stockInfoRepository = stockInfoRepository;
+            _taskRepository = taskRepository;
+            _configService = configService;
+            _unitOfWorkManage = unitOfWorkManage;
+        }
+
+        public MyBackgroundService()
+        {
+        }
+
+        public Task StartAsync(CancellationToken cancellationToken)
+        {
+            _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromMinutes(10));
+            return Task.CompletedTask;
+        }
+
+        private void DoWork(object state)
+        {
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+                ConsoleHelper.WriteErrorLine($"閿欒淇℃伅锛�" + ex.Message);
+            }
+        }
+
+        
+        
+        public Task StopAsync(CancellationToken cancellationToken)
+        {
+            _logger.LogInformation("MyBackgroundService is stopping.");
+            _timer?.Change(Timeout.Infinite, 0);
+            return Task.CompletedTask;
+        }
+
+        public void Dispose()
+        {
+            _timer?.Dispose();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/GlobalUsing.cs
new file mode 100644
index 0000000..0743ed0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/GlobalUsing.cs
@@ -0,0 +1,18 @@
+锘縢lobal using AutoMapper;
+global using WIDESEA_Core;
+global using WIDESEA_Core.Enums;
+global using WIDESEA_Core.BaseRepository;
+global using WIDESEA_Core.BaseServices;
+global using WIDESEA_Core.Helper;
+global using WIDESEA_IStorageTaskServices;
+global using WIDESEA_IStorageTaskRepository;
+global using WIDESEA_Model.Models;
+global using WIDESEA_IBusinessServices;
+global using WIDESEA_IBusinessesRepository;
+global using WIDESEA_Repository;
+global using WIDESEA_IStorageBasicRepository;
+global using WIDESEA_IStorageBasicService;
+global using LogLibrary.Log;
+global using Newtonsoft.Json;
+global using WIDESEA_Common;
+global using WIDESEA_DTO;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/PrintStatusContainer.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/PrintStatusContainer.cs
new file mode 100644
index 0000000..17875ad
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/PrintStatusContainer.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_StorageTaskServices
+{
+    public class PrintStatusContainer
+    {
+        // 绾跨▼瀹夊叏閿侊紙澶氱嚎绋嬭闂繀澶囷級
+        private readonly object _lockObj = new object();
+        private bool _automaticPrint;
+        private string _printIPAddress;
+
+        /// <summary>
+        /// 鑷姩鎵撳嵃鐘舵�侊紙绾跨▼瀹夊叏锛�
+        /// </summary>
+        public bool AutomaticPrint
+        {
+            get
+            {
+                lock (_lockObj) return _automaticPrint;
+            }
+            set
+            {
+                lock (_lockObj) _automaticPrint = value;
+            }
+        }
+
+        /// <summary>
+        /// 鑷姩鎵撳嵃鐨勬ゼ灞�
+        /// </summary>
+        public string PrintIPAddress
+        {
+            get
+            {
+                lock (_lockObj) return _printIPAddress;
+            }
+            set
+            {
+                lock (_lockObj) _printIPAddress = value;
+            }
+        }
+    }
+}
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Properties/PublishProfiles/FolderProfile.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_QuartzJob/Properties/PublishProfiles/FolderProfile.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Properties/PublishProfiles/FolderProfile.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
new file mode 100644
index 0000000..6512245
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_TaskService.cs
@@ -0,0 +1,1020 @@
+锘縰sing AngleSharp.Dom;
+using log4net.Core;
+using Magicodes.ExporterAndImporter.Excel.Utility.TemplateExport;
+using Mapster;
+using Masuit.Tools;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion.Internal;
+using NewLife;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using OfficeOpenXml.Table.PivotTable;
+using SixLabors.Fonts.Tables.AdvancedTypographic;
+using SqlSugar;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Reflection;
+using System.Reflection.Metadata;
+using System.Security.Policy;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using WIDESEA_Cache;
+using WIDESEA_Common;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Const;
+using WIDESEA_Core.Enums;
+using WIDESEA_DTO.Basic;
+using WIDESEA_DTO.Location;
+using WIDESEA_DTO.Stock;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEA_StorageTaskRepository;
+using WIDESEAWCS_BasicInfoRepository;
+using WIDESEAWCS_QuartzJob.Models;
+using static System.Collections.Specialized.BitVector32;
+
+namespace WIDESEA_StorageTaskServices;
+
+public partial class Dt_TaskService : ServiceBase<Dt_Task, IDt_TaskRepository>, IDt_TaskService
+{
+    private readonly LogFactory LogFactory = new LogFactory();
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+    private readonly IStockInfoRepository _stockInfoRepository;
+    private readonly IStockInfoDetailRepository _stockInfoDetailRepository;
+    private readonly IDt_Task_HtyRepository _task_HtyRepository;
+    private readonly IMapper _mapper;
+    private readonly ILocationInfoRepository _locationRepository;
+    private readonly ITaskExecuteDetailRepository _taskExecuteDetailRepository;
+    private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+    private readonly IBoxingInfoRepository _boxingInfoRepository; //缁勭洏
+    private readonly IDt_AreaInfoRepository _areaInfoRepository; //鍖哄煙
+    private readonly IDt_StationManagerRepository _stationManagerRepository;
+    private readonly ISys_ConfigService _configService;
+    private readonly IDt_WareAreaInfoRepository _wareAreaInfoRepository;
+    private readonly IDt_InventoryRecordRepository _inventoryRecordRepository;
+
+    public Dt_TaskService(IDt_TaskRepository BaseDal,
+                                IUnitOfWorkManage unitOfWorkManage,
+                                IStockInfoRepository stockInfoRepository,
+                                IDt_Task_HtyRepository task_HtyRepository,
+                                IMapper mapper,
+                                ILocationInfoRepository locationRepository,
+                                ITaskExecuteDetailRepository taskExecuteDetailRepository,
+                                ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository,
+                                IBoxingInfoRepository boxingInfoRepository,
+                                IDt_AreaInfoRepository areaInfoRepository,
+                                IStockInfoDetailRepository stockInfoDetailRepository,
+                                IDt_StationManagerRepository stationManagerRepository,
+                                ISys_ConfigService configService,
+                                IDt_WareAreaInfoRepository wareAreaInfoRepository,
+                                IDt_InventoryRecordRepository inventoryRecordRepository) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+        _stockInfoRepository = stockInfoRepository;
+        _task_HtyRepository = task_HtyRepository;
+        _mapper = mapper;
+        _locationRepository = locationRepository;
+        _taskExecuteDetailRepository = taskExecuteDetailRepository;
+        _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
+        _boxingInfoRepository = boxingInfoRepository;
+        _areaInfoRepository = areaInfoRepository;
+        _stockInfoDetailRepository = stockInfoDetailRepository;
+        _stationManagerRepository = stationManagerRepository;
+        _configService = configService;
+        _wareAreaInfoRepository = wareAreaInfoRepository;
+        _inventoryRecordRepository = inventoryRecordRepository;
+    }
+
+    #region 澶栭儴鎺ュ彛鏂规硶
+
+    #region 鍑哄簱浠诲姟瀹屾垚
+
+    public async Task<WebResponseContent> CompleteOutboundTaskAsync(Dt_Task task, DtStockInfo stock)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            
+
+        }
+        catch (Exception ex)
+        {
+            _unitOfWorkManage.RollbackTran();
+            task.ErrorMessage = ex.Message;
+            await BaseDal.UpdateDataAsync(task);
+            return content.Error(ex.Message);
+        }
+        return content;
+    }
+
+    #endregion 鍑哄簱浠诲姟瀹屾垚 
+
+    #region 鍏ュ簱浠诲姟瀹屾垚
+
+    /// <summary>
+    /// 瀹屾垚鍏ュ簱浠诲姟
+    /// </summary>
+    /// <param name="task">浠诲姟鏁版嵁鍚堥泦</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    public async Task<WebResponseContent> CompleteInboundTaskAsync(Dt_Task task)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            var boxinfo = await _boxingInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+
+            if (boxinfo == null)
+            {
+                return content.Error("鏈壘鍒扮粍鐩樻暟鎹�");
+            }
+
+            if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup)
+            {
+                var result1 = UpdateLocationStatus(task.SourceAddress, LocationEnum.Free, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticInbound);
+                await _locationStatusChangeRecordRepository.AddDataAsync(result1.Item1);
+                await _locationRepository.UpdateDataAsync(result1.Item2);
+            }
+
+
+
+            var stock = CreateStock(boxinfo, task);
+
+            task.TaskState = (int)TaskInStatusEnum.InFinish;
+            var taskHty = task.Adapt<Dt_Task_Hty>();
+            taskHty.FinishTime = DateTime.Now;
+            taskHty.OperateType = App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+
+            var result2 = UpdateLocationStatus(task.TargetAddress, LocationEnum.InStock, task.TaskNum.Value, StatusChangeTypeEnum.AutomaticInbound);
+
+            _unitOfWorkManage.BeginTran();
+            await _stockInfoRepository.AddDataNavAsync(stock);
+            await DeleteTaskAsync(task.TaskId);
+            await AddTaskHtyAsync(taskHty);
+            await _locationStatusChangeRecordRepository.AddDataAsync(result2.Item1);
+            await _locationRepository.UpdateDataAsync(result2.Item2);
+            _unitOfWorkManage.CommitTran();
+            content.OK("鍏ュ簱瀹屾垚");
+        }
+        catch (Exception ex)
+        {
+            _unitOfWorkManage.RollbackTran();
+            task.ErrorMessage = ex.Message;
+            await BaseDal.UpdateDataAsync(task);
+            return content.Error(ex.Message);
+        }
+        return content;
+    }
+
+    public DtStockInfo CreateStock(DtBoxingInfo boxingInfo,Dt_Task task)
+    {
+        var boxDetail = boxingInfo.BoxingInfoDetails.Adapt<List<DtStockInfoDetail>>();
+        boxDetail.ForEach(x =>
+        {
+            x.Status = (int)StockStateEmun.宸插叆搴�;
+        });
+        var mergedDetails = boxDetail
+                        .GroupBy(x => new { x.MaterielCode, x.MaterielName })
+                        .Select(g => new DtStockInfoDetail
+                        {
+                            MaterielCode = g.Key.MaterielCode,
+                            MaterielName = g.Key.MaterielName,
+                            DemandClassification = g.FirstOrDefault().DemandClassification,
+                            Warehouse = "鏅鸿兘绔嬪簱",
+                            WareHouseId = "107",
+                            OrderNo = g.FirstOrDefault().OrderNo,
+                            Unit = g.FirstOrDefault().Unit,
+                            Specs = g.FirstOrDefault().Specs,
+                            Weight = g.FirstOrDefault().Weight,
+                            OutboundQuantity = g.FirstOrDefault().OutboundQuantity,
+                            DrawingNumber = g.FirstOrDefault().DrawingNumber,
+                            Date = g.FirstOrDefault().Date,
+                            AllocateWarehouse = g.FirstOrDefault().AllocateWarehouse,
+                            Remark = g.FirstOrDefault().Remark,
+                            Quantity = g.Sum(item => item.Quantity),
+                        })
+                        .ToList();
+            return new DtStockInfo()
+            {
+                PalletCode = task.PalletCode,
+                LocationCode = task.TargetAddress,
+                CreateDate = DateTime.Now,
+                Creater = "system",
+                IsFullExit = boxingInfo.IsFullExit,
+                StockInfoDetails = mergedDetails,
+                StockStatus = (int)StockStateEmun.宸插叆搴�
+            };
+    }
+    #endregion 鍏ュ簱浠诲姟瀹屾垚
+
+    #region 浠诲姟瀹屾垚
+
+    /// <summary>
+    /// 瀹屾垚浠诲姟
+    /// </summary>
+    /// <param name="taskNum">浠诲姟缂栧彿</param>
+    /// <returns>杩斿洖缁撴灉闆�</returns>
+    public async Task<WebResponseContent> CompleteAsync(int taskNum)
+    {
+        // 鍒濆鍖栧搷搴斿唴瀹�
+        WebResponseContent content = new WebResponseContent();
+
+        // 鎻愬彇浠诲姟鏁版嵁
+        LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "鎻愬彇浠诲姟鏁版嵁", $"浠诲姟鍙凤細{taskNum}");
+
+        // 楠岃瘉浠诲姟鏄惁瀛樺湪0
+        var task = await GetByTaskNum(taskNum);
+        if (task == null)
+        {
+            return content.Error("浠诲姟涓嶅瓨鍦�");
+        }
+        LogFactory.GetLog("浠诲姟瀹屾垚").InfoFormat(true, "楠岃瘉浠诲姟鏄惁瀛樺湪", JsonConvert.SerializeObject(task));
+
+
+        // 楠岃瘉搴撳瓨鏄惁瀛樺湪
+        var stock = await _stockInfoRepository.QueryFirstNavAsync(x => x.PalletCode == task.PalletCode);
+
+        if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup)
+        {
+            return await CompleteOutboundTaskAsync(task, stock);
+        }
+        else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup)
+        {
+            return await CompleteInboundTaskAsync(task);
+        }
+        else
+        {
+            return content.Error("鏈壘鍒颁换鍔$被鍨�");
+        }
+    }
+    #endregion 浠诲姟瀹屾垚
+
+    #region 鍙栨秷浠诲姟
+    public WebResponseContent TaskCancel(int taskNum)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+            if (task == null)
+            {
+                return content = WebResponseContent.Instance.Error("鏈壘鍒颁换鍔′俊鎭�");
+            }
+            _unitOfWorkManage.BeginTran();
+            MethodInfo? methodInfo = GetType().GetMethod(((TaskTypeEnum)task.TaskType) + "TaskCancel");
+            if (methodInfo != null)
+            {
+                WebResponseContent? responseContent = (WebResponseContent?)methodInfo.Invoke(this, new object[] { task });
+                if (responseContent != null)
+                {
+                    if (responseContent != null)
+                    {
+                        
+                    }
+                }
+            }
+            return content = WebResponseContent.Instance.Error("鏈壘鍒颁换鍔$被鍨嬪搴斾笟鍔″鐞嗛�昏緫");
+        }
+        catch (Exception ex)
+        {
+            _unitOfWorkManage.RollbackTran();
+            return content = WebResponseContent.Instance.Error(ex.Message);
+        }
+    }
+
+    #endregion
+
+    #region 璇锋眰浠诲姟鍏ュ簱
+
+    public async Task<WebResponseContent> RequestInboundTaskAsync(RequestTaskDto taskDto)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            
+            return content;
+        }
+        catch (Exception err)
+        {
+            return content.Error(err.Message);
+        }
+    }
+
+    #endregion 璇锋眰浠诲姟鍏ュ簱
+
+    #region 鏇存柊浠诲姟鐘舵��
+
+
+    /// <summary>
+    /// 鏇存柊浠诲姟璐т綅
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> UpdateTaskStatus(int taskNum, int taskState)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            var task = await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
+            if (task == null)
+                return content.Error("鏈壘鍒颁换鍔�");
+
+            task.TaskState = taskState;
+            var asb = await BaseDal.UpdateDataAsync(task);
+            if (asb)
+                content.OK();
+            else
+                content.Error();
+        }
+        catch (Exception ex)
+        {
+            content.Error(ex.Message);
+        }
+        return content;
+    }
+
+    #endregion
+
+    #region 璇锋眰鍑哄簱
+    /// <summary>
+    /// 鎵嬪姩鍑哄簱鑷崇紦瀛樺尯鍩�
+    /// </summary>
+    /// <param name="palletCode"></param>
+    /// <returns></returns>
+    public async Task<WebResponseContent> RequestOutboundTaskAsync(RequestTaskDto taskDto)
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            
+            return content;
+        }
+        catch (Exception ex)
+        {
+            return content.Error(ex.Message);
+        }
+    }
+
+    public (List<DtLocationStatusChangeRecord>,List<DtLocationInfo>) GetlcoationState(Dt_Task task, StatusChangeTypeEnum StatusChangeTypeEnum, DtLocationInfo location)
+    {
+        List<DtLocationStatusChangeRecord> locationStatusChangeRecords = new List<DtLocationStatusChangeRecord>();
+        List<DtLocationInfo> locations = new List<DtLocationInfo>();
+        var result = UpdateLocationStatus(task.SourceAddress, LocationEnum.InStockDisable, task.TaskNum.Value, (int)StatusChangeTypeEnum);
+        locationStatusChangeRecords.AddRange(result.Item1);
+        locations.AddRange(result.Item2);
+
+        if(location.AreaId ==3|| location.AreaId == 7)
+        {
+            var result2 = UpdateLocationStatus(task.TargetAddress, LocationEnum.Lock, task.TaskNum.Value, (int)StatusChangeTypeEnum);
+            locationStatusChangeRecords.AddRange(result2.Item1);
+            locations.AddRange(result2.Item2);
+        }
+
+        return (locationStatusChangeRecords,locations);
+    }
+
+    #endregion 璇锋眰鍑哄簱锛堝疄鐩�&绌虹洏锛�
+
+    #region 鑾峰彇AGV浠诲姟鍙�
+
+    private static readonly Random _random = new Random();
+
+    public static string GenerateUniqueId()
+    {
+        // 鑾峰彇褰撳墠姣绾ф椂闂存埑
+        long timestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
+
+        // 鐢熸垚4浣嶉殢鏈烘暟锛�0000-9999锛�
+        int randomNumber = _random.Next(0, 10000);
+        string randomPart = randomNumber.ToString("D4"); // 琛ラ浂鍒�4浣�
+
+        return $"{timestamp}{randomPart}";
+    }
+    #endregion
+
+    #region 鑾峰彇浠诲姟淇℃伅
+    public WebResponseContent GetTaskInfo()
+    {
+        WebResponseContent content = new WebResponseContent();
+        try
+        {
+            Expression<Func<Dt_Task, bool>> expression = x => true;
+            if (!App.User.IsSuperAdmin)
+            {
+                expression = x => x.Creater == App.User.UserName;
+            }
+            var task = BaseDal.Db.Queryable<Dt_Task>().OrderByDescending(x => x.CreateDate).Take(100).Select(x => new Dt_Task { TaskNum = x.TaskNum, PalletCode = x.PalletCode, TaskType = x.TaskType, SourceAddress = x.SourceAddress, TargetAddress = x.TargetAddress }).ToList();
+            content = WebResponseContent.Instance.OK(data: task);
+        }
+        catch (Exception ex)
+        {
+            content = WebResponseContent.Instance.Error(ex.Message);
+        }
+        return content;
+    }
+    #endregion
+
+    #endregion 澶栭儴鎺ュ彛鏂规硶
+
+    #region 璋冪敤WCS鎺ュ彛
+    private string GetWCSIPAddress(string baseIp, string name)
+    {
+        var configz = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
+        var wcsBasez = configz.Where(x => x.ConfigKey == baseIp).FirstOrDefault()?.ConfigValue;
+        var address = configz.Where(x => x.ConfigKey == name).FirstOrDefault()?.ConfigValue;
+        if (wcsBasez == null || address == null)
+        {
+            throw new InvalidOperationException("WMS IP 鏈厤缃�");
+        }
+        return wcsBasez + address;
+    }
+
+    public async Task<WebResponseContent> SendWCSTask(List<WMSTaskDTO> taskDTO)
+    {
+        WebResponseContent content = new WebResponseContent();
+        var AgvSendTaskAddrss = GetWCSIPAddress(SysConfigConst.WCSIPAddress, SysConfigConst.ReceiveTask);
+        // 鍙戦�佽姹傚苟绛夊緟鍝嶅簲
+        var result = await HttpHelper.PostAsync(AgvSendTaskAddrss, taskDTO.ToJsonString());
+
+        content = JsonConvert.DeserializeObject<WebResponseContent>(result.ToString());
+
+        return content;
+    }
+    #endregion
+
+    #region 鍐呴儴璋冪敤鏂规硶
+
+    public (List<DtLocationStatusChangeRecord>,List<DtLocationInfo>) UpdateLocationStatus(DtLocationInfo location, LocationEnum locationStatus, int taskNum, int StatusChangeType)
+    {
+        List<DtLocationInfo> locations = GetGroupLocations(location);
+
+        List<DtLocationInfo> Beforelocation = locations.Select(x => new DtLocationInfo
+        {
+            Id = x.Id,
+            LocationCode = x.LocationCode,
+            LocationStatus = x.LocationStatus
+        }).ToList();
+
+        foreach (var item in locations)
+        {
+            if (locationStatus == LocationEnum.Lock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.Lock;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.Free)
+                {
+                    item.LocationStatus = (int)LocationEnum.FreeDisable;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStock;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.FreeDisable)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStockDisable)
+            {
+                if (item.LocationStatus == (int)LocationEnum.InStock)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStockDisable;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.Free)
+                {
+                    item.LocationStatus = (int)LocationEnum.FreeDisable;
+                }
+            }
+            else if (locationStatus == LocationEnum.Free)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+                else if (item.LocationStatus == (int)LocationEnum.FreeDisable || item.LocationStatus == (int)LocationEnum.InStockDisable)
+                {
+                    item.LocationStatus = (int)LocationEnum.Free;
+                }
+            }
+        }
+        List<DtLocationStatusChangeRecord> changeRecordDto = new List<DtLocationStatusChangeRecord>();
+        foreach (var item in Beforelocation)
+        {
+            var loc = locations.Where(x => x.LocationCode == item.LocationCode).FirstOrDefault();
+            if (loc != null)
+            {
+                DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+                {
+                    ChangeType = StatusChangeType,
+                    LocationCode = item.LocationCode,
+                    LocationId = loc.Id,
+                    Creater = "System",
+                    TaskNum = taskNum,
+                    AfterStatus = loc.LocationStatus,
+                    BeforeStatus = item.LocationStatus,
+                };
+
+                changeRecordDto.Add(dtLocationStatusChangeRecord);
+            }
+        }
+        return (changeRecordDto,locations);
+    }
+
+    public (List<DtLocationStatusChangeRecord>, List<DtLocationInfo>) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, int StatusChangeType)
+    {
+        var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
+
+        List<DtLocationInfo> locations = GetGroupLocations(location);
+
+        List<DtLocationInfo> Beforelocation = locations.Select(x => new DtLocationInfo
+        {
+            Id = x.Id,
+            LocationCode = x.LocationCode,
+            LocationStatus = x.LocationStatus
+        }).ToList();
+
+        foreach (var item in locations)
+        {
+            if (locationStatus == LocationEnum.Lock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.Lock;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStock)
+            {
+                if (item.LocationCode == location.LocationCode)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStock;
+                }
+            }
+            else if (locationStatus == LocationEnum.InStockDisable)
+            {
+                if (item.LocationStatus == (int)LocationEnum.InStock)
+                {
+                    item.LocationStatus = (int)LocationEnum.InStockDisable;
+                }
+            }
+            else if (locationStatus == LocationEnum.Free)
+            {
+                item.LocationStatus = (int)LocationEnum.Free;
+            }
+        }
+        List<DtLocationStatusChangeRecord> changeRecordDto = new List<DtLocationStatusChangeRecord>();
+        foreach (var item in Beforelocation)
+        {
+            var loc = locations.Where(x => x.LocationCode == item.LocationCode).FirstOrDefault();
+            if (loc != null)
+            {
+                DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+                {
+                    ChangeType = StatusChangeType,
+                    LocationCode = item.LocationCode,
+                    LocationId = loc.Id,
+                    Creater = "System",
+                    TaskNum = taskNum,
+                    AfterStatus = loc.LocationStatus,
+                    BeforeStatus = item.LocationStatus,
+                };
+
+                changeRecordDto.Add(dtLocationStatusChangeRecord);
+            }
+        }
+        return (changeRecordDto, locations);
+    }
+
+    public (DtLocationStatusChangeRecord, DtLocationInfo) UpdateEndLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType)
+    {
+        var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
+
+        if (location != null && (location.AreaId == 3 || location.AreaId == 7))
+        {
+            int Beforelocation = location.LocationStatus;
+
+            location.LocationStatus = (int)locationStatus;
+
+            DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+            {
+                ChangeType = (int)StatusChangeType,
+                LocationCode = locationCode,
+                LocationId = location.Id,
+                Creater = "System",
+                TaskNum = taskNum,
+                AfterStatus = location.LocationStatus,
+                BeforeStatus = Beforelocation,
+            };
+
+            return (dtLocationStatusChangeRecord, location);
+        }
+        return (null, null);
+    }
+
+    public (DtLocationStatusChangeRecord, DtLocationInfo) UpdateLocationStatus(string locationCode, LocationEnum locationStatus, int taskNum, StatusChangeTypeEnum StatusChangeType)
+    {
+        var location = _locationRepository.QueryFirst(x => x.LocationCode == locationCode);
+        int Beforelocation = location.LocationStatus;
+
+        location.LocationStatus = (int)locationStatus;
+
+        DtLocationStatusChangeRecord dtLocationStatusChangeRecord = new DtLocationStatusChangeRecord()
+        {
+            ChangeType = (int)StatusChangeType,
+            LocationCode = locationCode,
+            LocationId = location.Id,
+            Creater = "System",
+            TaskNum = taskNum,
+            AfterStatus = location.LocationStatus,
+            BeforeStatus = Beforelocation,
+        };
+
+        return (dtLocationStatusChangeRecord, location);
+    }
+
+    public List<DtLocationInfo> GetGroupLocations(DtLocationInfo location)
+    {
+        List<DtLocationInfo> locationInfos = _locationRepository.QueryData(x => x.AreaId == location.AreaId);
+        List<DtLocationInfo> locations = new List<DtLocationInfo>() { location };
+        if (location.AreaId == 1)
+        {
+            if (location.Depth == 2)
+            {
+                DtLocationInfo? locationInfo = locationInfos.FirstOrDefault(x => x.Depth == 1 && x.Column == location.Column && x.Layer == location.Layer && x.Row == 1);
+                if (locationInfo != null)
+                {
+                    locations.Add(locationInfo);
+                }
+            }
+        }
+        else if (location.AreaId == 2 || location.AreaId == 7)
+        {
+            var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column > location.Column && x.Remark == location.Remark);
+            if (locationLateral.Count > 0)
+            {
+                locations.AddRange(locationLateral);
+            }
+        }
+        else if (location.AreaId == 5 || location.AreaId == 6)
+        {
+            var locationLateral = _locationRepository.QueryData(x => x.Row == location.Row && x.Column < location.Column && x.Remark == location.Remark);
+            if (locationLateral.Count > 0)
+            {
+                locations.AddRange(locationLateral);
+            }
+        }
+        return locations;
+
+    }
+
+    /// <summary>
+    /// 鍒涘缓浠诲姟DTO
+    /// </summary>
+    private List<WMSTaskDTO> CreateListTaskDTO(Dt_Task task)
+    {
+        return new List<WMSTaskDTO> { new WMSTaskDTO
+        {
+            TaskNum = task.TaskNum.Value,
+            Grade = task.Grade.Value,
+            PalletCode = task.PalletCode,
+            RoadWay = task.Roadway,
+            SourceAddress = task.SourceAddress,
+            TargetAddress = task.TargetAddress,
+            TaskState = task.TaskState,
+            Id = 0,
+            TaskType = task.TaskType,
+        } };
+    }
+
+    private WMSTaskDTO CreateTaskDTO(Dt_Task task)
+    {
+        return new WMSTaskDTO
+        {
+            TaskNum = task.TaskNum.Value,
+            Grade = task.Grade.Value,
+            PalletCode = task.PalletCode,
+            RoadWay = task.Roadway,
+            SourceAddress = task.SourceAddress,
+            TargetAddress = task.TargetAddress,
+            TaskState = task.TaskState,
+            Id = 0,
+            TaskType = task.TaskType,
+        };
+    }
+    private List<WMSTaskDTO> CreateTaskDTO(List<Dt_Task> task)
+    {
+        List<WMSTaskDTO> taskNews = new List<WMSTaskDTO>();
+        foreach (var item in task)
+        {
+            taskNews.Add(new WMSTaskDTO
+            {
+                TaskNum = item.TaskNum.Value,
+                Grade = item.Grade.Value,
+                PalletCode = item.PalletCode,
+                RoadWay = item.Roadway,
+                SourceAddress = item.SourceAddress,
+                TargetAddress = item.TargetAddress,
+                TaskState = item.TaskState,
+                Id = 0,
+                TaskType = item.TaskType,
+            });
+        }
+
+        return taskNews;
+    }
+
+    private async Task DeleteStockInfoAsync(int stockId)
+    {
+        var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(stockId);
+        if (!isStockUpdated)
+        {
+            throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+        }
+    }
+
+    private async Task AddStockInfoHtyAsync(DtStockInfo_Hty dtStock)
+    {
+        var isStockAdd = await SqlSugarHelper.DbWMS.InsertNav(dtStock).IncludesAllFirstLayer().ExecuteCommandAsync();
+        if (!isStockAdd)
+        {
+            throw new Exception("搴撳瓨鍘嗗彶淇℃伅娣诲姞澶辫触");
+        }
+    }
+
+    private async Task DeleteBoxingInfoAsync(int boxingId)
+    {
+        var isStockUpdated = await _stockInfoRepository.DeleteDataByIdAsync(boxingId);
+        if (!isStockUpdated)
+        {
+            throw new Exception("搴撳瓨淇℃伅鏇存柊澶辫触");
+        }
+    }
+
+    private async Task AddBoxingHtyAsync(DtBoxingInfo_Hty boxingInfo)
+    {
+        var isStockAdd = await SqlSugarHelper.DbWMS.InsertNav(boxingInfo).IncludesAllFirstLayer().ExecuteCommandAsync();
+        if (!isStockAdd)
+        {
+            throw new Exception("缁勭洏鍘嗗彶淇℃伅娣诲姞澶辫触");
+        }
+    }
+
+
+    private async Task DeleteStockInfoDetailsAsync(IEnumerable<DtStockInfoDetail> details)
+    {
+        var ids = details.Select(x => (object)x.Id).ToArray();
+        var isStockDetailUpdated = await _stockInfoDetailRepository.DeleteDataByIdsAsync(ids);
+        if (!isStockDetailUpdated)
+        {
+            throw new Exception("搴撳瓨璇︽儏淇℃伅鏇存柊澶辫触");
+        }
+    }
+
+    private async Task DeleteTaskAsync(int taskId)
+    {
+        var isTaskUpdated = await BaseDal.DeleteDataByIdAsync(taskId);
+        if (!isTaskUpdated)
+        {
+            throw new Exception("浠诲姟淇℃伅鏇存柊澶辫触");
+        }
+    }
+
+    private async Task AddTaskHtyAsync(Dt_Task_Hty taskHty)
+    {
+        var isTaskAdd = await _task_HtyRepository.AddDataAsync(taskHty) > 0;
+        if (!isTaskAdd)
+        {
+            throw new Exception("鍘嗗彶浠诲姟淇℃伅娣诲姞澶辫触");
+        }
+    }
+
+    public override WebResponseContent DeleteData(object[] key)
+    {
+        WebResponseContent content = new WebResponseContent();
+        // 鍒涘缓鍘嗗彶浠诲姟瀹炰緥妯″瀷
+        try
+        {
+            foreach (var item in key)
+            {
+                Dt_Task task = BaseDal.QueryFirst(x => x.TaskId == Convert.ToInt32(key));
+                if (task == null)
+                {
+                    return content.Error("鏈壘鍒颁换鍔′俊鎭�!");
+                }
+                var taskHtyNG = CreateHistoricalTask(task, true);
+                // 娣诲姞鍘嗗彶浠诲姟
+                var isTaskHtyAdd = _task_HtyRepository.AddData(taskHtyNG) > 0;
+
+                // 鍒犻櫎浠诲姟鏁版嵁
+                var isTaskDelete = BaseDal.Delete(task.TaskId);
+            }
+            return content.OK("鍒犻櫎鎴愬姛!");
+        }
+        catch (Exception ex)
+        {
+            return content.Error("鍒犻櫎浠诲姟寮傚父锛�" + ex.Message);
+        }
+    }
+    /// <summary>
+    /// 鏍规嵁浠诲姟鍙疯幏鍙栦换鍔�
+    /// </summary>
+    /// <param name="taskNum"></param>
+    /// <returns></returns>
+    public async Task<Dt_Task> GetByTaskNum(int taskNum)
+    {
+        return await BaseDal.QueryFirstAsync(x => x.TaskNum == taskNum);
+    }
+    public async Task<Dt_Task> GetByTaskAddress(string SourceAddress, string TargetAddress)
+    {
+        return await BaseDal.QueryFirstAsync(x => x.SourceAddress == SourceAddress|| x.TargetAddress== TargetAddress);
+    }
+    #endregion 鍐呴儴璋冪敤鏂规硶
+
+    #region private 鍐呴儴鏂规硶
+
+    /// <summary>
+    /// 鍒涘缓鍘嗗彶浠诲姟璁板綍
+    /// </summary>
+    /// <param name="task"></param>
+    /// <returns></returns>
+    private Dt_Task_Hty CreateHistoricalTask(Dt_Task task, bool isHand = false)
+    {
+        // 鏇存柊浠诲姟鐘舵��
+        task.TaskState = task.TaskType > 199 ? (int)TaskInStatusEnum.InFinish : (int)TaskOutStatusEnum.OutFinish;
+        task.CurrentAddress = task.NextAddress;
+
+        // 鍒涘缓鍘嗗彶浠诲姟
+        var taskHty = _mapper.Map<Dt_Task_Hty>(task);
+        taskHty.FinishTime = DateTime.Now;
+        taskHty.TaskId = 0;
+        taskHty.OperateType = isHand ? (int)OperateTypeEnum.浜哄伐鍒犻櫎 : App.User.UserName != null ? (int)OperateTypeEnum.浜哄伐瀹屾垚 : (int)OperateTypeEnum.鑷姩瀹屾垚;
+        taskHty.SourceId = task.TaskId;
+        if (isHand)
+        {
+            taskHty.Creater = App.User.UserName != null ? App.User.UserName : "System";
+        }
+        return taskHty;
+    }
+
+
+    #region 浠诲姟璇锋眰鏂规硶
+
+    private static readonly SemaphoreSlim _semaphoreUpdate = new SemaphoreSlim(1, 1);
+    // 鏇存柊浠诲姟璐т綅
+
+    // 淇敼浠诲姟
+    private async Task<bool> UpdateTaskAsync(Dt_Task task, DtLocationInfo location, int beforeStatus)
+    {
+        bool isResult = await BaseDal.UpdateDataAsync(task);
+        LocationChangeRecordDto changeRecordDto = new LocationChangeRecordDto()
+        {
+            AfterStatus = location.LocationStatus,
+            BeforeStatus = beforeStatus,
+            TaskNum = task.TaskNum.Value,
+            LocationId = location.Id,
+            LocationCode = location.LocationCode,
+            ChangeType = (int)StatusChangeTypeEnum.AutomaticInbound,
+        };
+
+        bool isUpdateChange = _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
+        bool isUpdateLo = await _locationRepository.UpdateDataAsync(location);
+
+        return isResult && isUpdateLo;
+    }
+
+    private async Task<bool> AddTaskAsync(Dt_Task task, DtLocationInfo StartAddress, DtLocationInfo EndAddress)
+    {
+        bool isResult = await BaseDal.AddDataAsync(task) > 0;
+        int SourcebeforeStatus = StartAddress.LocationStatus;
+
+        int TargetbeforeStatus = EndAddress.LocationStatus;
+
+        StartAddress.LocationStatus = (int)LocationEnum.InStockDisable;
+
+        EndAddress.LocationStatus = (int)LocationEnum.Lock;
+
+        List<LocationChangeRecordDto> changeRecordDto = new List<LocationChangeRecordDto>()
+        {
+            new LocationChangeRecordDto()
+            {
+                AfterStatus = StartAddress.LocationStatus,
+                BeforeStatus = SourcebeforeStatus,
+                TaskNum = task.TaskNum.Value,
+                LocationId = StartAddress.Id,
+                LocationCode = StartAddress.LocationCode,
+                ChangeType = (int)StatusChangeTypeEnum.AutomaticRelocation,
+            },
+            new LocationChangeRecordDto()
+            {
+                AfterStatus = EndAddress.LocationStatus,
+                BeforeStatus = TargetbeforeStatus,
+                TaskNum = task.TaskNum.Value,
+                LocationId = EndAddress.Id,
+                LocationCode = EndAddress.LocationCode,
+                ChangeType = (int)StatusChangeTypeEnum.AutomaticRelocation,
+            },
+        };
+
+        bool isUpdateChange = _locationStatusChangeRecordRepository.AddStatusChangeRecord(changeRecordDto);
+        bool Source = await _locationRepository.UpdateDataAsync(StartAddress);
+        bool Target = await _locationRepository.UpdateDataAsync(EndAddress);
+
+        return isResult && Source && Target;
+    }
+
+    private (List<DtLocationInfo>,List<DtLocationStatusChangeRecord>) AddTaskAsync(List<Dt_Task> task)
+    {
+        List<DtLocationStatusChangeRecord> changeRecordDto = new List<DtLocationStatusChangeRecord>();
+        List<DtLocationInfo> locationos = new List<DtLocationInfo>();
+        foreach (var item in task)
+        {
+            var SourceAddress = _locationRepository.QueryFirst(x => x.LocationCode == item.SourceAddress);
+            var TargetAddress = _locationRepository.QueryFirst(x => x.LocationCode == item.TargetAddress);
+            int SourcebeforeStatus = SourceAddress.LocationStatus;
+
+            int TargetbeforeStatus = TargetAddress.LocationStatus;
+
+            SourceAddress.LocationStatus = (int)LocationEnum.InStockDisable;
+            TargetAddress.LocationStatus = (int)LocationEnum.Lock;
+            changeRecordDto.Add(new DtLocationStatusChangeRecord()
+            {
+                ChangeType = (int)StatusChangeTypeEnum.AutomaticRelocation,
+                LocationCode = TargetAddress.LocationCode,
+                LocationId = TargetAddress.Id,
+                Creater = "System",
+                TaskNum = item.TaskNum,
+                AfterStatus = TargetAddress.LocationStatus,
+                BeforeStatus = TargetbeforeStatus,
+            });
+            changeRecordDto.Add(new DtLocationStatusChangeRecord
+            {
+                AfterStatus = TargetAddress.LocationStatus,
+                BeforeStatus = TargetbeforeStatus,
+                TaskNum = item.TaskNum.Value,
+                Creater = "System",
+                LocationId = TargetAddress.Id,
+                LocationCode = TargetAddress.LocationCode,
+                ChangeType = (int)StatusChangeTypeEnum.AutomaticRelocation,
+            });
+            locationos.Add(TargetAddress);
+            locationos.Add(SourceAddress);
+        }
+        return (locationos, changeRecordDto);
+    }
+
+    /// <summary>
+    /// 鑾峰彇璐т綅鍙�
+    /// </summary>
+    /// <returns></returns>
+    public async Task<DtLocationInfo> GetEmptyLocation(string roadWay)
+    {
+        List<DtLocationInfo> locations = await _locationRepository.QueryDataAsync(x => x.RoadwayNo == "SC1" && x.LocationStatus == (int)LocationEnum.Free && x.EnalbeStatus == 1);
+        if (locations.Count < 2)
+        {
+            return null;
+        }
+
+        List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+        var locationInside = locations.Where(x => x.Row == 3).ToList();
+
+        if (locations.Where(x => x.Row == 2).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
+        {
+            return locations.Where(x => x.Row == 2).ToList().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else if (locationInside.Count > 0)
+        {
+            foreach (var item in locationInside)
+            {
+                var locationLateral = _locationRepository.QueryFirst(x => x.Row == 1 && x.Layer == item.Layer && x.Column == item.Column);
+                if (locationLateral.LocationStatus == (int)LocationEnum.Free && locationLateral.EnalbeStatus == 1)
+                {
+                    locationInfos.Add(item);
+                }
+            }
+
+            return locationInfos.Distinct().OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else if (locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault() != null)
+        {
+            return locations.Where(x => x.Row == 1).OrderBy(x => x.Layer).ThenBy(x => x.Column).FirstOrDefault();
+        }
+        else
+        {
+            return null;
+        }
+    }
+
+
+    #endregion 浠诲姟璇锋眰鏂规硶
+
+    #endregion private 鍐呴儴鏂规硶
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_Task_HtyService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_Task_HtyService.cs
new file mode 100644
index 0000000..bed7420
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/Dt_Task_HtyService.cs
@@ -0,0 +1,22 @@
+锘縩amespace WIDESEA_StorageTaskServices;
+
+public class Dt_Task_HtyService : ServiceBase<Dt_Task_Hty, IDt_Task_HtyRepository>, IDt_Task_HtyService
+{
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+    public Dt_Task_HtyService(IDt_Task_HtyRepository BaseDal,
+                                    IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+    }
+
+    /// <summary>
+    /// 娣诲姞鍘嗗彶浠诲姟
+    /// </summary>
+    /// <param name="task">鍘嗗彶浠诲姟Model</param>
+    /// <returns>鎴愬姛/澶辫触</returns>
+    public bool InsertTask(Dt_Task_Hty task)
+    {
+        return BaseDal.InsertTask(task);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/TaskExecuteDetailService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/TaskExecuteDetailService.cs
new file mode 100644
index 0000000..57ea664
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/Task/TaskExecuteDetailService.cs
@@ -0,0 +1,13 @@
+锘縩amespace WIDESEA_StorageOutTaskServices;
+
+public class TaskExecuteDetailService : ServiceBase<Dt_TaskExecuteDetail, ITaskExecuteDetailRepository>, ITaskExecuteDetailService
+{
+    private readonly LogFactory LogFactory = new LogFactory();
+    private readonly IUnitOfWorkManage _unitOfWorkManage;
+
+    public TaskExecuteDetailService(ITaskExecuteDetailRepository BaseDal,
+                                IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+    {
+        _unitOfWorkManage = unitOfWorkManage;
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj
new file mode 100644
index 0000000..693c178
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageTaskServices/WIDESEA_StorageTaskServices.csproj
@@ -0,0 +1,28 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;8602;8629;8603;8604;8601;</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+    <ProjectReference Include="..\WIDESEA_Cache\WIDESEA_Cache.csproj" />
+    <ProjectReference Include="..\WIDESEA_Common\WIDESEA_Common.csproj" />
+    <ProjectReference Include="..\WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IOrderServices\WIDESEA_IOrderServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj" />
+    <ProjectReference Include="..\WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj
new file mode 100644
index 0000000..132c02c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_Tasks/WIDESEA_Tasks.csproj
@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <Nullable>enable</Nullable>
+  </PropertyGroup>
+
+</Project>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln
new file mode 100644
index 0000000..fb3e462
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer.sln
@@ -0,0 +1,458 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.9.34701.34
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_WMSServer", "WIDESEA_WMSServer\WIDESEA_WMSServer.csproj", "{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Core", "WIDESEA_Core\WIDESEA_Core.csproj", "{111BD7AA-9749-4506-9772-79F9EF14754C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Common", "WIDESEA_Common\WIDESEA_Common.csproj", "{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Model", "WIDESEA_Model\WIDESEA_Model.csproj", "{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IRepository", "WIDESEA_IRepository\WIDESEA_IRepository.csproj", "{B5C7DC02-077C-4255-A369-600D033A4C23}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Repository", "WIDESEA_Repository\WIDESEA_Repository.csproj", "{41C50E65-7C73-4BD0-9773-2A74F1587EE2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IServices", "WIDESEA_IServices\WIDESEA_IServices.csproj", "{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Services", "WIDESEA_Services\WIDESEA_Services.csproj", "{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_Tasks", "WIDESEA_Tasks\WIDESEA_Tasks.csproj", "{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{60DE2920-37C6-4C2B-A053-6B1B2DAF047A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repository", "Repository", "{56D014A3-EB8D-4EF5-A751-3BAA084519D0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_DTO", "WIDESEA_DTO\WIDESEA_DTO.csproj", "{929DF936-042C-4EEC-8722-A831FC2F0AEA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LogLibrary", "LogLibrary\LogLibrary.csproj", "{992DA9CB-143C-426B-B27D-E4DA3B863A99}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IBusinessesRepository", "WIDESEA_IBusinessesRepository\WIDESEA_IBusinessesRepository.csproj", "{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_BusinessesRepository", "WIDESEA_BusinessesRepository\WIDESEA_BusinessesRepository.csproj", "{3DF4C096-7431-4484-BE38-28FAD8CA1540}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IBusinessServices", "WIDESEA_IBusinessServices\WIDESEA_IBusinessServices.csproj", "{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_BusinessServices", "WIDESEA_BusinessServices\WIDESEA_BusinessServices.csproj", "{BA78CC65-6D17-4C76-8285-DC6B6165DA17}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IService", "IService", "{A73C1AFF-FF92-4825-B607-2E908077EBA4}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Service", "Service", "{8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "IRepository", "IRepository", "{B131DEBD-A555-490B-B448-46425298E427}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Repository", "Repository", "{798C4C07-A3B2-47AD-A69C-922D5217B5CA}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageBasicRepository", "WIDESEA_IStorageBasicRepository\WIDESEA_IStorageBasicRepository.csproj", "{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageTaskRepository", "WIDESEA_IStorageTaskRepository\WIDESEA_IStorageTaskRepository.csproj", "{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageBasicRepository", "WIDESEA_StorageBasicRepository\WIDESEA_StorageBasicRepository.csproj", "{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageTaskRepository", "WIDESEA_StorageTaskRepository\WIDESEA_StorageTaskRepository.csproj", "{1614316C-827D-4C2C-B9D3-A62E25AF1827}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageBasicServices", "WIDESEA_IStorageBasicService\WIDESEA_IStorageBasicServices.csproj", "{B8B1C352-0398-4A54-B202-D774D48367EB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_IStorageTaskServices", "WIDESEA_IStorageTaskService\WIDESEA_IStorageTaskServices.csproj", "{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageBasicServices", "WIDESEA_StorageBasicServices\WIDESEA_StorageBasicServices.csproj", "{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WIDESEA_StorageTaskServices", "WIDESEA_StorageTaskServices\WIDESEA_StorageTaskServices.csproj", "{9912BD12-4CF7-4A91-8203-47C9C125004C}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9BA96018-EF8A-4D84-8E72-DA697FA5EAF8}"
+	ProjectSection(SolutionItems) = preProject
+		.editorconfig = .editorconfig
+	EndProjectSection
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_Cache", "WIDESEA_Cache\WIDESEA_Cache.csproj", "{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_OrderServices", "WIDESEA_OrderServices\WIDESEA_OrderServices.csproj", "{20D16B32-8186-420C-B3B7-58B183FC09CF}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IOrderServices", "WIDESEA_IOrderServices\WIDESEA_IOrderServices.csproj", "{10CE047F-43CC-4609-8955-9A336E467924}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_OrderRepository", "WIDESEA_OrderRepository\WIDESEA_OrderRepository.csproj", "{48DB293D-CCA1-47C8-A3B6-664035F20303}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IOrderRepository", "WIDESEA_IOrderRepository\WIDESEA_IOrderRepository.csproj", "{2A09BCA3-09B0-417A-8453-72663D9A78B9}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|x86 = Debug|x86
+		Dev|Any CPU = Dev|Any CPU
+		Dev|x86 = Dev|x86
+		Release|Any CPU = Release|Any CPU
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Debug|x86.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Dev|x86.Build.0 = Debug|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.ActiveCfg = Release|Any CPU
+		{D81A65B5-47D1-40C1-8FDE-7D24FF003F51}.Release|x86.Build.0 = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Debug|x86.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Dev|x86.Build.0 = Debug|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.ActiveCfg = Release|Any CPU
+		{111BD7AA-9749-4506-9772-79F9EF14754C}.Release|x86.Build.0 = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Debug|x86.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Dev|x86.Build.0 = Debug|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.ActiveCfg = Release|Any CPU
+		{AF8F3D65-1D75-4B8F-AFD9-4150E591C44D}.Release|x86.Build.0 = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Debug|x86.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Dev|x86.Build.0 = Debug|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|Any CPU.Build.0 = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.ActiveCfg = Release|Any CPU
+		{00CE9885-9F24-4B6C-A7E8-0DE8C9ED7128}.Release|x86.Build.0 = Release|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Debug|x86.Build.0 = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Dev|x86.Build.0 = Debug|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Release|x86.ActiveCfg = Release|Any CPU
+		{B5C7DC02-077C-4255-A369-600D033A4C23}.Release|x86.Build.0 = Release|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Debug|x86.Build.0 = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Dev|x86.Build.0 = Debug|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|Any CPU.Build.0 = Release|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|x86.ActiveCfg = Release|Any CPU
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2}.Release|x86.Build.0 = Release|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Debug|x86.Build.0 = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Dev|x86.Build.0 = Debug|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|x86.ActiveCfg = Release|Any CPU
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C}.Release|x86.Build.0 = Release|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Debug|x86.Build.0 = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Dev|x86.Build.0 = Debug|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|x86.ActiveCfg = Release|Any CPU
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583}.Release|x86.Build.0 = Release|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Debug|x86.Build.0 = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Dev|x86.Build.0 = Debug|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|x86.ActiveCfg = Release|Any CPU
+		{3BDEBC2A-BDE6-439B-B0E4-DB8AC7709FF1}.Release|x86.Build.0 = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Debug|x86.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Dev|x86.Build.0 = Debug|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.ActiveCfg = Release|Any CPU
+		{929DF936-042C-4EEC-8722-A831FC2F0AEA}.Release|x86.Build.0 = Release|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|x86.ActiveCfg = Debug|x86
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Debug|x86.Build.0 = Debug|x86
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|Any CPU.ActiveCfg = Dev|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|Any CPU.Build.0 = Dev|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|x86.ActiveCfg = Dev|x86
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Dev|x86.Build.0 = Dev|x86
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|Any CPU.Build.0 = Release|Any CPU
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|x86.ActiveCfg = Release|x86
+		{992DA9CB-143C-426B-B27D-E4DA3B863A99}.Release|x86.Build.0 = Release|x86
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Debug|x86.Build.0 = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Dev|x86.Build.0 = Debug|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|x86.ActiveCfg = Release|Any CPU
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1}.Release|x86.Build.0 = Release|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Debug|x86.Build.0 = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Dev|x86.Build.0 = Debug|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|x86.ActiveCfg = Release|Any CPU
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540}.Release|x86.Build.0 = Release|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Debug|x86.Build.0 = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Dev|x86.Build.0 = Debug|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|x86.ActiveCfg = Release|Any CPU
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5}.Release|x86.Build.0 = Release|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Debug|x86.Build.0 = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Dev|x86.Build.0 = Debug|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|Any CPU.Build.0 = Release|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|x86.ActiveCfg = Release|Any CPU
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17}.Release|x86.Build.0 = Release|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Debug|x86.Build.0 = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Dev|x86.Build.0 = Debug|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|x86.ActiveCfg = Release|Any CPU
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D}.Release|x86.Build.0 = Release|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Debug|x86.Build.0 = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Dev|x86.Build.0 = Debug|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|x86.ActiveCfg = Release|Any CPU
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E}.Release|x86.Build.0 = Release|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Debug|x86.Build.0 = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Dev|x86.Build.0 = Debug|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|Any CPU.Build.0 = Release|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|x86.ActiveCfg = Release|Any CPU
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30}.Release|x86.Build.0 = Release|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Debug|x86.Build.0 = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Dev|x86.Build.0 = Debug|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|x86.ActiveCfg = Release|Any CPU
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827}.Release|x86.Build.0 = Release|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Debug|x86.Build.0 = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Dev|x86.Build.0 = Debug|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Release|x86.ActiveCfg = Release|Any CPU
+		{B8B1C352-0398-4A54-B202-D774D48367EB}.Release|x86.Build.0 = Release|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Debug|x86.Build.0 = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Dev|x86.Build.0 = Debug|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|Any CPU.Build.0 = Release|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|x86.ActiveCfg = Release|Any CPU
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1}.Release|x86.Build.0 = Release|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Debug|x86.Build.0 = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Dev|x86.Build.0 = Debug|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|x86.ActiveCfg = Release|Any CPU
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C}.Release|x86.Build.0 = Release|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Debug|x86.Build.0 = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|Any CPU.ActiveCfg = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|Any CPU.Build.0 = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|x86.ActiveCfg = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Dev|x86.Build.0 = Debug|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|x86.ActiveCfg = Release|Any CPU
+		{9912BD12-4CF7-4A91-8203-47C9C125004C}.Release|x86.Build.0 = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Debug|x86.Build.0 = Debug|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Dev|Any CPU.ActiveCfg = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Dev|Any CPU.Build.0 = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Dev|x86.ActiveCfg = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Dev|x86.Build.0 = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Release|x86.ActiveCfg = Release|Any CPU
+		{461A73BF-9FC7-4BFE-9BEB-2AE686CBFEEC}.Release|x86.Build.0 = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Debug|x86.Build.0 = Debug|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Dev|Any CPU.ActiveCfg = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Dev|Any CPU.Build.0 = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Dev|x86.ActiveCfg = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Dev|x86.Build.0 = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Release|Any CPU.Build.0 = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Release|x86.ActiveCfg = Release|Any CPU
+		{20D16B32-8186-420C-B3B7-58B183FC09CF}.Release|x86.Build.0 = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Debug|x86.Build.0 = Debug|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Dev|Any CPU.ActiveCfg = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Dev|Any CPU.Build.0 = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Dev|x86.ActiveCfg = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Dev|x86.Build.0 = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Release|Any CPU.Build.0 = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Release|x86.ActiveCfg = Release|Any CPU
+		{10CE047F-43CC-4609-8955-9A336E467924}.Release|x86.Build.0 = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Debug|x86.Build.0 = Debug|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Dev|Any CPU.ActiveCfg = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Dev|Any CPU.Build.0 = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Dev|x86.ActiveCfg = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Dev|x86.Build.0 = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Release|Any CPU.Build.0 = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Release|x86.ActiveCfg = Release|Any CPU
+		{48DB293D-CCA1-47C8-A3B6-664035F20303}.Release|x86.Build.0 = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Debug|x86.Build.0 = Debug|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Dev|Any CPU.ActiveCfg = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Dev|Any CPU.Build.0 = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Dev|x86.ActiveCfg = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Dev|x86.Build.0 = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Release|x86.ActiveCfg = Release|Any CPU
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9}.Release|x86.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+	GlobalSection(NestedProjects) = preSolution
+		{B5C7DC02-077C-4255-A369-600D033A4C23} = {B131DEBD-A555-490B-B448-46425298E427}
+		{41C50E65-7C73-4BD0-9773-2A74F1587EE2} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+		{1C8F84A9-7812-4435-B833-FF26A9A3DD4C} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+		{F512AFDB-D45D-4979-BC8C-0BA7FBE8F583} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+		{FBC88231-BC8E-4AA8-BD60-0A13FE463EF1} = {B131DEBD-A555-490B-B448-46425298E427}
+		{3DF4C096-7431-4484-BE38-28FAD8CA1540} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+		{1E26EB6C-4AD1-4140-83FE-777218EE9DF5} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+		{BA78CC65-6D17-4C76-8285-DC6B6165DA17} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+		{A73C1AFF-FF92-4825-B607-2E908077EBA4} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED} = {60DE2920-37C6-4C2B-A053-6B1B2DAF047A}
+		{B131DEBD-A555-490B-B448-46425298E427} = {56D014A3-EB8D-4EF5-A751-3BAA084519D0}
+		{798C4C07-A3B2-47AD-A69C-922D5217B5CA} = {56D014A3-EB8D-4EF5-A751-3BAA084519D0}
+		{6EED8D59-8AF2-4B2E-81E9-92E2547F1B2D} = {B131DEBD-A555-490B-B448-46425298E427}
+		{CCF1C1DE-C80D-4476-B35F-1BF068E4185E} = {B131DEBD-A555-490B-B448-46425298E427}
+		{40B47F57-BBC7-42D5-ABE4-11F0E469DF30} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+		{1614316C-827D-4C2C-B9D3-A62E25AF1827} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+		{B8B1C352-0398-4A54-B202-D774D48367EB} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+		{986CA639-B3B4-4D4F-B12B-3D8FBA48B2B1} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+		{4BDE58B2-5B2E-480B-932F-D63C2A7D557C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+		{9912BD12-4CF7-4A91-8203-47C9C125004C} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+		{20D16B32-8186-420C-B3B7-58B183FC09CF} = {8498AA9D-CDC4-4FD2-81AE-DE6AD78F75ED}
+		{10CE047F-43CC-4609-8955-9A336E467924} = {A73C1AFF-FF92-4825-B607-2E908077EBA4}
+		{48DB293D-CCA1-47C8-A3B6-664035F20303} = {798C4C07-A3B2-47AD-A69C-922D5217B5CA}
+		{2A09BCA3-09B0-417A-8453-72663D9A78B9} = {B131DEBD-A555-490B-B448-46425298E427}
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+		SolutionGuid = {599A7267-7402-4143-84AE-9B407FC2BB69}
+	EndGlobalSection
+EndGlobal
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json
new file mode 100644
index 0000000..b99844e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/.config/dotnet-tools.json
@@ -0,0 +1,12 @@
+{
+  "version": 1,
+  "isRoot": true,
+  "tools": {
+    "dotnet-ef": {
+      "version": "8.0.6",
+      "commands": [
+        "dotnet-ef"
+      ]
+    }
+  }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoController.cs
new file mode 100644
index 0000000..5b2e681
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoController.cs
@@ -0,0 +1,32 @@
+锘縰sing WIDESEA_DTO.Basic;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/[controller]")]
+[ApiController]
+public class BoxingInfoController : ApiBaseController<IBoxingInfoService, DtBoxingInfo>
+{
+    public BoxingInfoController(IBoxingInfoService service) : base(service)
+    {
+    }
+    /// <summary>
+    /// 缁勭洏
+    /// </summary>
+    /// <param name="groupPlate"></param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("AddGroupPlateAsync"), AllowAnonymous]
+    public Task<WebResponseContent> AddGroupPlateAsync([FromBody] GroupPlate groupPlate)
+    {
+        return Service.AddGroupPlateAsync(groupPlate);
+    }
+    /// <summary>
+    /// 瑙g洏
+    /// </summary>
+    /// <param name="groupPlate"></param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("DeleteGroupPlateAsync"), AllowAnonymous]
+    public async Task<WebResponseContent> DeleteGroupPlateAsync([FromBody] GroupPlate groupPlate)
+    {
+        return await Service.DeleteGroupPlateAsync(groupPlate);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoHtyController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoHtyController.cs
new file mode 100644
index 0000000..2b38792
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/BoxingInfoHtyController.cs
@@ -0,0 +1,13 @@
+锘縰sing WIDESEA_DTO.Basic;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/BoxingInfoHty")]
+[ApiController]
+public class BoxingInfoHtyController : ApiBaseController<IBoxingInfoHtyService, DtBoxingInfo>
+{
+    public BoxingInfoHtyController(IBoxingInfoHtyService service) : base(service)
+    {
+    }
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_AreaInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_AreaInfoController.cs
new file mode 100644
index 0000000..674bd87
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_AreaInfoController.cs
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/Dt_AreaInfo")]
+    [ApiController]
+    public class Dt_AreaInfoController : ApiBaseController<IDt_AreaInfoService, Dt_AreaInfo>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Dt_AreaInfoController(IDt_AreaInfoService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_MaterielInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_MaterielInfoController.cs
new file mode 100644
index 0000000..d88784c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_MaterielInfoController.cs
@@ -0,0 +1,19 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    [Route("api/Dt_MaterielInfo")]
+    [ApiController]
+    public class Dt_MaterielInfoController : ApiBaseController<IDt_MaterielInfoService, Dt_MaterielInfo>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Dt_MaterielInfoController(IDt_MaterielInfoService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_WareAreaInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_WareAreaInfoController.cs
new file mode 100644
index 0000000..7a06387
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/Dt_WareAreaInfoController.cs
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Basic
+{
+    [Route("api/Dt_WareAreaInfo")]
+    [ApiController]
+    public class Dt_WareAreaInfoController : ApiBaseController<IDt_WareAreaInfoService, Dt_WareAreaInfo>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Dt_WareAreaInfoController(IDt_WareAreaInfoService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
new file mode 100644
index 0000000..8e8a67e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationInfoController.cs
@@ -0,0 +1,34 @@
+锘縰sing Masuit.Tools.Models;
+using WIDESEA_DTO;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/LocationInfo")]
+[ApiController]
+public class LocationInfoController : ApiBaseController<ILocationInfoService, DtLocationInfo>
+{
+    public LocationInfoController(ILocationInfoService service) : base(service)
+    {
+    }
+
+    /// <summary>
+    /// 鍒涘缓鍘熷璐т綅
+    /// </summary>
+    /// <param name="x">琛�</param>
+    /// <param name="y">鍒�</param>
+    /// <param name="z">灞�</param>
+    /// <param name="locType">璐т綅绫诲瀷锛�1銆佸崟娣憋紝2銆佸弻娣憋級</param>
+    /// <param name="areaId">鍖哄煙涓婚敭</param>
+    /// <returns></returns>
+    [HttpPost, AllowAnonymous, Route("CreateLocation")]
+    public WebResponseContent CreateLocation(int x, int y, int z, int locType, int areaId)
+    {
+        return Service.CreateLocation(x, y, z, locType, areaId);
+    }
+
+    [HttpPost, AllowAnonymous, Route("initializeLocation")]
+    public async Task<WebResponseContent> initializeLocation(string locationCode)
+    {
+        return await Service.initializeLocation(locationCode);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationStatusChangeRecordController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationStatusChangeRecordController.cs
new file mode 100644
index 0000000..3a2b840
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/LocationStatusChangeRecordController.cs
@@ -0,0 +1,10 @@
+锘縩amespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/LocationStatusChangeRecord")]
+[ApiController]
+public class LocationStatusChangeRecordController : ApiBaseController<ILocationStatusChangeRecordService, DtLocationStatusChangeRecord>
+{
+    public LocationStatusChangeRecordController(ILocationStatusChangeRecordService service) : base(service)
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs
new file mode 100644
index 0000000..9ccb493
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoController.cs
@@ -0,0 +1,26 @@
+锘縰sing WIDESEA_DTO.Basic;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStorageBasicService;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/StockInfo")]
+[ApiController]
+public class StockInfoController : ApiBaseController<IStockInfoService, DtStockInfo>
+{
+    public StockInfoController(IStockInfoService service) : base(service)
+    {
+
+    }
+
+    /// <summary>
+    /// 鏍规嵁鐗╂枡缂栫爜鑾峰彇搴撳瓨鍙敤閲忚鍥�
+    /// </summary>
+    /// <param name="materielCode"></param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("GetStockSelectViews"), AllowAnonymous]
+    public List<StockSelectViewDTO> GetStockSelectViews([FromBody] GetStockSelectViewDto viewDto)
+    {
+        return Service.GetStockSelectViews(viewDto);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoDetailController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoDetailController.cs
new file mode 100644
index 0000000..f6be0c0
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoDetailController.cs
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_IStorageBasicService;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/StockInfoDetail")]
+[ApiController]
+public class StockInfoDetailController : ApiBaseController<IStockInfoDetailService, DtStockInfoDetail>
+{
+    public StockInfoDetailController(IStockInfoDetailService service) : base(service)
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoHtyController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoHtyController.cs
new file mode 100644
index 0000000..3696c9c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Basic/StockInfoHtyController.cs
@@ -0,0 +1,12 @@
+锘縰sing WIDESEA_IStorageBasicService;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/StockInfoHty")]
+[ApiController]
+public class StockInfoHtyController : ApiBaseController<IStockInfoHtyService, DtStockInfo_Hty>
+{
+    public StockInfoHtyController(IStockInfoHtyService service) : base(service)
+    {
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StationManagerController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StationManagerController.cs
new file mode 100644
index 0000000..9b793ed
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/BasicInfo/Dt_StationManagerController.cs
@@ -0,0 +1,22 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
+using WIDESEAWCS_BasicInfoService;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/Dt_StationManager")]
+    [ApiController]
+    public class Dt_StationManagerController : ApiBaseController<IDt_StationManagerService, Dt_StationManager>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Dt_StationManagerController(IDt_StationManagerService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDA/PDAController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDA/PDAController.cs
new file mode 100644
index 0000000..c5ce0b8
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/PDA/PDAController.cs
@@ -0,0 +1,84 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.Helper;
+using System.IO;
+using WIDESEA_Model.Models;
+using System;
+using WIDESEAWCS_BasicInfoRepository;
+using WIDESEAWCS_BasicInfoService;
+using WIDESEA_DTO.WMS;
+using WIDESEA_IBusinessServices;
+
+namespace WIDESEA_WMSServer.Controllers
+{
+    [Route("api/PDA")]
+    [Authorize, ApiController]
+    [Consumes("application/json")]
+    public class PDAController : Controller
+    {
+
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        public PDAController(IHttpContextAccessor httpContextAccessor)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+        [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous]
+        public async Task<WebResponseContent> UploadApk(IEnumerable<IFormFile> fileInput)
+         {
+            // 妫�鏌ユ槸鍚︽湁鏂囦欢涓婁紶
+            if (fileInput == null || !fileInput.Any())
+            {
+                return WebResponseContent.Instance.Error("鏂囦欢鏈笂浼�");
+            }
+
+            var formFile = fileInput.First();
+            var uploadFolder = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "Upload");
+            Directory.CreateDirectory(uploadFolder); 
+
+            var fileName = $"WMS-PDA.apk";
+            var filePath = Path.Combine(uploadFolder, fileName);
+
+            using (var stream = new FileStream(filePath, FileMode.Create))
+            {
+                await formFile.CopyToAsync(stream);
+            }
+            return WebResponseContent.Instance.OK("鏂囦欢涓婁紶鎴愬姛"); ;
+        }
+
+        [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
+        public WebResponseContent GetPDAVersion(string version)
+        {
+            try
+            {
+                string versionPDA = AppSettings.Configuration["PDAVersion"];
+                if (Convert.ToInt32(versionPDA) > Convert.ToInt32(version))
+                    return WebResponseContent.Instance.OK(data: true);
+                else return WebResponseContent.Instance.OK(data: false);
+            }
+            catch (Exception ex)
+            {
+                return WebResponseContent.Instance.Error(ex.Message);
+            }
+
+        }
+        [HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous]
+        public virtual ActionResult DownLoadApp()
+        {
+            var filename = "WMS-PDA.apk";
+            var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/Upload", filename);
+
+            var memory = new MemoryStream();
+            using (var stream = new FileStream(filePath, FileMode.Open))
+            {
+                stream.CopyTo(memory);
+            }
+            memory.Position = 0;
+            var ext = Path.GetExtension(filePath).ToLowerInvariant();
+            return File(memory, new Dictionary<string, string>{{ ".apk", "application/vnd.android.package-archive" }}[ext], Path.GetFileName(filePath));
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_ConfigController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_ConfigController.cs
new file mode 100644
index 0000000..46a1dbf
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_ConfigController.cs
@@ -0,0 +1,18 @@
+锘縰sing Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/[controller]")]
+[ApiController]
+public class Sys_ConfigController : ApiBaseController<ISys_ConfigService, Sys_Config>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_ConfigController(ISys_ConfigService menuService, IHttpContextAccessor httpContextAccessor) : base(menuService)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs
new file mode 100644
index 0000000..c081b4c
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_DictionaryController.cs
@@ -0,0 +1,631 @@
+锘縰sing Newtonsoft.Json;
+using System.ComponentModel;
+using System.Reflection;
+using WIDESEA_Common;
+using WIDESEA_Core.Caches;
+using WIDESEA_Core.Enums;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/Sys_Dictionary")]
+[ApiController]
+public class Sys_DictionaryController : ApiBaseController<ISys_DictionaryService, Sys_Dictionary>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly ICacheService _cacheService;
+
+    public Sys_DictionaryController(ISys_DictionaryService service, IHttpContextAccessor httpContextAccessor, ICacheService cacheService) : base(service)
+    {
+        _httpContextAccessor = httpContextAccessor;
+        _cacheService = cacheService;
+    }
+
+    [HttpPost, Route("GetVueDictionary"), AllowAnonymous]
+    public IActionResult GetVueDictionary([FromBody] string[] dicNos)
+    {
+        List<VueDictionaryDTO> vueDictionaryDTOs = Service.GetVueDictionary(dicNos);
+        try
+        {
+            // 浣跨敤 HashSet 鏉ヨ窡韪凡娣诲姞鐨勬暟鎹紝閬垮厤閲嶅
+            HashSet<string> addedDicNos = new HashSet<string>();
+            List<string> cacheDicNos = new List<string>();
+
+            // 鍏堜粠缂撳瓨涓幏鍙栨暟鎹�
+            foreach (string n in dicNos)
+            {
+                string str = _cacheService.Get(n);
+                if (!string.IsNullOrEmpty(str))
+                {
+                    VueDictionaryDTO? vueDictionary = JsonConvert.DeserializeObject<VueDictionaryDTO>(str);
+
+                    if (vueDictionary != null && !addedDicNos.Contains(vueDictionary.DicNo))
+                    {
+                        vueDictionaryDTOs.Add(vueDictionary);
+                        cacheDicNos.Add(n);
+                        addedDicNos.Add(vueDictionary.DicNo);
+                    }
+                }
+            }
+
+            // 澶勭悊鏈粠缂撳瓨鑾峰彇鍒扮殑鏁版嵁
+            List<string> dicList = dicNos.ToList();
+            if (dicNos.Where(x => !cacheDicNos.Contains(x)).Count() > 0)
+            {
+                string str = AppSettings.Configuration["dics"];
+                if (!string.IsNullOrEmpty(str))
+                {
+                    List<string> cusDics = new List<string>();
+                    List<string> dics = str.Split(",").ToList();
+
+                    foreach (var item in dics)
+                    {
+                        dicList.Remove(item);
+                        cusDics.Add(item);
+                    }
+
+                    foreach (var item in cusDics)
+                    {
+                        // 妫�鏌ユ槸鍚﹀凡缁忔坊鍔犺繃
+                        if (!addedDicNos.Contains(item.Trim()))
+                        {
+                            VueDictionaryDTO vueDictionaryDTO = GetVueDictionary(item.Trim());
+                            if (vueDictionaryDTO != null && !addedDicNos.Contains(vueDictionaryDTO.DicNo))
+                            {
+                                vueDictionaryDTOs.Add(vueDictionaryDTO);
+                                addedDicNos.Add(vueDictionaryDTO.DicNo);
+
+                                if (!_cacheService.Exists(item) && vueDictionaryDTO.SaveCache)
+                                {
+                                    _cacheService.Add(item, vueDictionaryDTO.Serialize());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        catch (Exception ex)
+        {
+            // 寤鸿璁板綍鏃ュ織锛岃�屼笉鏄┖catch
+            // _logger.LogError(ex, "鑾峰彇VueDictionary澶辫触");
+        }
+        return Json(vueDictionaryDTOs.GroupBy(x => x.DicNo).Select(g => g.First()).ToList());
+    }
+    private VueDictionaryDTO GetVueDictionary(string key)
+    {
+        VueDictionaryDTO result = null;
+        try
+        {
+            switch (key)
+            {
+                case "taskType":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region TaskInboundTypeEnum
+                        {
+                            Type type = typeof(TaskInboundTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskInboundTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskInboundTypeEnum).GetField(((TaskInboundTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskOutboundTypeEnum
+                        {
+                            Type type = typeof(TaskOutboundTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskOutboundTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskOutboundTypeEnum).GetField(((TaskOutboundTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskRelocationTypeEnum
+                        {
+                            Type type = typeof(TaskRelocationTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskRelocationTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskRelocationTypeEnum).GetField(((TaskRelocationTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskOtherTypeEnum
+                        {
+                            Type type = typeof(TaskOtherTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskOtherTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskOtherTypeEnum).GetField(((TaskOtherTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskAGVCarryTypeEnum
+                        {
+                            Type type = typeof(TaskAGVCarryTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskAGVCarryTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskAGVCarryTypeEnum).GetField(((TaskAGVCarryTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskAcrossFloorTypeEnum
+                        {
+                            Type type = typeof(TaskAcrossFloorTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskAcrossFloorTypeEnum).GetField(((TaskAcrossFloorTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "taskState":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region TaskInStatusEnum
+                        {
+                            Type type = typeof(TaskInStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskInStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskInStatusEnum).GetField(((TaskInStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskOutStatusEnum
+                        {
+                            Type type = typeof(TaskOutStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskOutStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskOutStatusEnum).GetField(((TaskOutStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskRelocationStatusEnum
+                        {
+                            Type type = typeof(TaskRelocationStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskRelocationStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskRelocationStatusEnum).GetField(((TaskRelocationStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskAGVCarryStatusEnum
+                        {
+                            Type type = typeof(TaskAGVCarryStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskAGVCarryStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskAGVCarryStatusEnum).GetField(((TaskAGVCarryStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        #region TaskAcrossFloorStatusEnum
+                        {
+                            Type type = typeof(TaskAcrossFloorStatusEnum);
+                            List<int> enums = Enum.GetValues(typeof(TaskAcrossFloorStatusEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(TaskAcrossFloorStatusEnum).GetField(((TaskAcrossFloorStatusEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "StatusChangeType":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region StatusChangeTypeEnum
+                        {
+                            Type type = typeof(StatusChangeTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(StatusChangeTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(StatusChangeTypeEnum).GetField(((StatusChangeTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "operateTypeEnum":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region operateTypeEnum
+                        {
+                            Type type = typeof(OperateTypeEnum);
+                            List<int> enums = Enum.GetValues(typeof(OperateTypeEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(OperateTypeEnum).GetField(((OperateTypeEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "LocationState":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region LocationEnum
+                        {
+                            Type type = typeof(LocationEnum);
+                            List<int> enums = Enum.GetValues(typeof(LocationEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(LocationEnum).GetField(((LocationEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "StockStateEmun":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region StockStateEmun
+                        {
+                            Type type = typeof(StockStateEmun);
+                            List<int> enums = Enum.GetValues(typeof(StockStateEmun)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(StockStateEmun).GetField(((StockStateEmun)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+                case "EnableEnum":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region EnableEnum
+                        {
+                            Type type = typeof(EnableEnum);
+                            List<int> enums = Enum.GetValues(typeof(EnableEnum)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(EnableEnum).GetField(((EnableEnum)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+
+                case "OrderStateEmun":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region OrderStateEmun
+                        {
+                            Type type = typeof(OrderStateEmun);
+                            List<int> enums = Enum.GetValues(typeof(OrderStateEmun)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(OrderStateEmun).GetField(((OrderStateEmun)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+
+                case "OrderTypeEmun":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region OrderTypeEmun
+                        {
+                            Type type = typeof(OrderTypeEmun);
+                            List<int> enums = Enum.GetValues(typeof(OrderTypeEmun)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(OrderTypeEmun).GetField(((OrderTypeEmun)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+
+                case "OrderCreateTypeEmun":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region OrderCreateTypeEmun
+                        {
+                            Type type = typeof(OrderCreateTypeEmun);
+                            List<int> enums = Enum.GetValues(typeof(OrderCreateTypeEmun)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(OrderCreateTypeEmun).GetField(((OrderCreateTypeEmun)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+
+                case "InventoryStatus":
+                    {
+                        List<object> data = new List<object>();
+
+                        #region InventoryStatus
+                        {
+                            Type type = typeof(InventoryStatus);
+                            List<int> enums = Enum.GetValues(typeof(InventoryStatus)).Cast<int>().ToList();
+                            int index = 0;
+                            foreach (var item in enums)
+                            {
+                                FieldInfo? fieldInfo = typeof(InventoryStatus).GetField(((InventoryStatus)item).ToString());
+                                DescriptionAttribute? description = fieldInfo.GetCustomAttribute<DescriptionAttribute>();
+                                if (description != null)
+                                {
+                                    data.Add(new { key = item.ToString(), value = description.Description });
+                                }
+                                else
+                                {
+                                    data.Add(new { key = item.ToString(), value = item.ToString() });
+                                }
+                                index++;
+                            }
+                        }
+                        #endregion
+
+                        result = new VueDictionaryDTO { DicNo = key, Config = "", Data = data };
+                    }
+                    break;
+
+            }
+            return result;
+        }
+        catch (Exception ex)
+        {
+            return null;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs
new file mode 100644
index 0000000..0e24549
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_LogController.cs
@@ -0,0 +1,35 @@
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEAWCS_Core;
+using WIDESEAWCS_ISystemServices;
+using WIDESEAWCS_Model.Models;
+
+namespace WIDESEAWCS_Server.Controllers.System
+{
+    [Route("api/Sys_Log")]
+    [ApiController]
+    public class Sys_LogController : ApiBaseController<ISys_LogService, Sys_Log>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        public Sys_LogController(ISys_LogService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+
+
+
+        [HttpPost, Route("GetLogList"), AllowAnonymous]
+        public WebResponseContent GetLogList()
+        {
+            return Service.GetLogList();
+        }
+
+        [HttpPost, Route("GetLogData"), AllowAnonymous]
+        public WebResponseContent GetLogData([FromBody] GetLogParm parm)
+        {
+            return Service.GetLogData(parm);
+        }
+    }
+   
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs
new file mode 100644
index 0000000..ccc625e
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_MenuController.cs
@@ -0,0 +1,50 @@
+锘縩amespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/Sys_Menu")]
+[ApiController]
+public class Sys_MenuController : ApiBaseController<ISys_MenuService, Sys_Menu>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_MenuController(ISys_MenuService menuService, IHttpContextAccessor httpContextAccessor) : base(menuService)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    [HttpGet, HttpPost, Route("getTreeMenu")]
+    public IActionResult GetTreeMenu()
+    {
+        return Json(Service.GetCurrentMenuActionList());
+    }
+
+    [HttpGet, HttpPost, Route("getTreePhoneMenu")]
+    public IActionResult GetTreePhoneMenu()
+    {
+        return Json(Service.GetCurrentMenuPhoneActionList());
+    }
+
+    [HttpPost, Route("getMenu")]
+    public IActionResult GetMenu()
+    {
+        return Json(Service.GetMenu());
+    }
+
+    [HttpPost, Route("getTreeItem")]
+    public async Task<IActionResult> GetTreeItem(int menuId)
+    {
+        return Json(Service.GetTreeItem(menuId));
+    }
+
+    [HttpPost, Route("save")]
+    public ActionResult Save([FromBody] Sys_Menu menu)
+    {
+        if (App.User.IsSuperAdmin)
+        {
+            return Json(Service.Save(menu));
+        }
+        else
+        {
+            return Json(WebResponseContent.Instance.Error("浠呴檺瓒呯骇绠$悊鍛樹慨鏀规暟鎹�"));
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs
new file mode 100644
index 0000000..28ca857
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_RoleController.cs
@@ -0,0 +1,64 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Routing;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseController;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_DTO.System;
+using WIDESEA_IServices;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.System;
+namespace WIDESEA_WMSServer.Controllers{
+
+[Route("api/Sys_Role")]
+[ApiController]
+public class Sys_RoleController : ApiBaseController<ISys_RoleService, Sys_Role>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_RoleController(ISys_RoleService service, IHttpContextAccessor httpContextAccessor) : base(service)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    [HttpPost, Route("getUserChildRoles")]
+    public IActionResult GetUserChildRoles()
+    {
+        int roleId = App.User.RoleId;
+        var data = Service.GetAllChildren(roleId);
+
+        if (App.User.IsSuperAdmin)
+        {
+            return Json(WebResponseContent.Instance.OK(null, data));
+        }
+        //涓嶆槸瓒呯骇绠$悊锛屽皢鑷繁鐨勮鑹叉煡鍑烘潵锛屽湪鏍戝舰鑿滃崟涓婁綔涓烘牴鑺傜偣
+        var self = data.Where(x => x.Id == roleId)
+             .Select(s => new RoleNodes()
+             {
+                 Id = s.Id,
+                 ParentId = 0,//灏嗚嚜宸辩殑瑙掕壊浣滀负root鑺傜偣
+                 RoleName = s.RoleName
+             }).ToList();
+        data.AddRange(self);
+        return Json(WebResponseContent.Instance.OK(null, data));
+    }
+
+    [HttpPost, Route("getCurrentTreePermission")]
+    public IActionResult GetCurrentTreePermission()
+    {
+        return Json(Service.GetCurrentTreePermission());
+    }
+
+    [HttpPost, Route("getUserTreePermission")]
+    public IActionResult GetUserTreePermission(int roleId)
+    {
+        return Json(Service.GetUserTreePermission(roleId));
+    }
+
+    [HttpPost, Route("savePermission")]
+    public IActionResult SavePermission([FromBody] List<UserPermissionDTO> userPermissions, int roleId)
+    {
+        return Json(Service.SavePermission(userPermissions, roleId));
+    }
+}
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs
new file mode 100644
index 0000000..ed0a678
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TenantController.cs
@@ -0,0 +1,19 @@
+锘縩amespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/tenant")]
+[ApiController]
+public class Sys_TenantController : ApiBaseController<ISys_TenantService, Sys_Tenant>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_TenantController(ISys_TenantService tenantService, IHttpContextAccessor httpContextAccessor) : base(tenantService)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    [HttpGet, Route("initTenantInfo"), AllowAnonymous]
+    public WebResponseContent InitTenantInfo(string tenantName, int tenantType)
+    {
+        return Service.InitTenantInfo(tenantName, tenantType);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TestController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TestController.cs
new file mode 100644
index 0000000..7af7e7a
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_TestController.cs
@@ -0,0 +1,19 @@
+锘縩amespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/test")]
+[ApiController]
+public class Sys_TestController : ApiBaseController<ISys_TestService, Sys_Test>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_TestController(ISys_TestService service, IHttpContextAccessor httpContextAccessor) : base(service)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    [HttpGet, Route("TranTest"), AllowAnonymous]
+    public WebResponseContent TranTest()
+    {
+        return Service.TranTest();
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs
new file mode 100644
index 0000000..a91e2d9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/System/Sys_UserController.cs
@@ -0,0 +1,68 @@
+锘縰sing WIDESEA_Core.Helper;
+using WIDESEA_IRepository;
+using WIDESEA_Repository;
+
+namespace WIDESEA_WMSServer.Controllers;
+
+[Route("api/Sys_User")]
+[ApiController]
+public class Sys_UserController : ApiBaseController<ISys_UserService, Sys_User>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+
+    public Sys_UserController(ISys_UserService userService, IHttpContextAccessor httpContextAccessor) : base(userService)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    [HttpPost, Route("login"), AllowAnonymous]
+    public IActionResult Login([FromBody] LoginInfo loginInfo)
+    {
+        return Json(Service.Login(loginInfo));
+    }
+
+    [HttpPost, Route("getCurrentUserInfo")]
+    public WebResponseContent GetCurrentUser()
+    {
+        return Service.GetCurrentUserInfo();
+    }
+
+    [HttpPost, Route("modifyPwd")]
+    public IActionResult ModifyPwd(string oldPwd, string newPwd)
+    {
+        return Json(Service.ModifyPwd(oldPwd, newPwd));
+    }
+
+    //鍙兘瓒呯骇绠$悊鍛樻墠鑳戒慨鏀瑰瘑鐮�
+    //2020.08.01澧炲姞淇敼瀵嗙爜鍔熻兘
+    [HttpPost, Route("modifyUserPwd")]
+    public IActionResult ModifyUserPwd(string password, string userName)
+    {
+        return Json(Service.ModifyUserPwd(password, userName));
+    }
+    [HttpPost, Route("UpdateInfo")]
+    public IActionResult UpdateInfo(int user_Id, string roleName, string userName, string userTrueName, string address, int gender, string remark)
+    {
+        return Json(Service.UpdateInfo(user_Id, roleName, userName, userTrueName, address, gender, remark));
+    }
+
+    [HttpGet, Route("getVierificationCode"), AllowAnonymous]
+    public IActionResult GetVierificationCode()
+    {
+        //var html = MiniProfiler.Current.RenderIncludes(_httpContextAccessor.HttpContext);
+        string code = "1234" /*VierificationCode.RandomText()*/;
+        var data = new
+        {
+            img = VierificationCode.CreateBase64Imgage(code),
+            uuid = Guid.NewGuid()
+        };
+
+        return Json(data);
+    }
+
+    [HttpGet, Route("SerializeJwt"), AllowAnonymous]
+    public WebResponseContent SerializeJwt(string code)
+    {
+        return WebResponseContent.Instance.OK(data: JwtHelper.SerializeJwt(code));
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs
new file mode 100644
index 0000000..04a3925
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskController.cs
@@ -0,0 +1,88 @@
+锘縰sing Org.BouncyCastle.Asn1.Mozilla;
+using WIDESEA_DTO;
+using WIDESEA_StorageTaskServices;
+
+namespace WIDESEA_WMSServer.Controllers.Task;
+
+/// <summary>
+/// 浠诲姟鎿嶄綔鎺ュ彛
+/// </summary>
+[Route("api/Task")]
+[ApiController]
+public class TaskController : ApiBaseController<IDt_TaskService, Dt_Task>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly IDt_TaskService _taskService;
+
+    public TaskController(IDt_TaskService service,
+        IHttpContextAccessor httpContextAccessor) : base(service)
+    {
+        _httpContextAccessor = httpContextAccessor;
+    }
+
+    /// <summary>
+    /// 浠诲姟瀹屾垚
+    /// </summary>
+    /// <param name="saveModel">浠诲姟鍙�</param>
+    /// <returns>鎴愬姛鎴栧け璐�</returns>
+    [HttpGet, HttpPost, Route("CompleteTaskAsync"), AllowAnonymous]
+    public async Task<WebResponseContent> CompleteTaskAsync(int taskNum)
+    {
+        return await Service.CompleteAsync(taskNum);
+    }
+
+    /// <summary>
+    /// 浠诲姟鍙栨秷
+    /// </summary>
+    /// <param name="taskNum"></param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("TaskCancel"), AllowAnonymous]
+    public WebResponseContent TaskCancel(int taskNum)
+    {
+        return Service.TaskCancel(taskNum);
+    }
+
+    /// <summary>
+    /// 鑾峰彇浠诲姟淇℃伅
+    /// </summary>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("GetTaskInfo")]
+    public WebResponseContent GetTaskInfo()
+    {
+        return Service.GetTaskInfo();
+    }
+
+    /// <summary>
+    /// 璇锋眰鍏ュ簱浠诲姟
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, AllowAnonymous, Route("RequestInboundTaskAsync")]
+    [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })]
+    public async Task<WebResponseContent> RequestInboundTaskAsync([FromBody] RequestTaskDto input)
+    {
+        return await Service.RequestInboundTaskAsync(input);
+    }
+
+
+    /// <summary>
+    /// 浠诲姟鐘舵�佷慨鏀�
+    /// </summary>
+    /// <param name="input">璇锋眰鏁版嵁</param>
+    /// <returns></returns>
+    [HttpPost, HttpGet, Route("UpdateTaskStatus"), AllowAnonymous]
+    [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })]
+    public async Task<WebResponseContent> UpdateTaskStatus([FromBody] UpdateStatusDto input)
+    {
+        return await Service.UpdateTaskStatus(input.TaskNum, input.TaskState);
+    }
+
+
+    [HttpPost, AllowAnonymous, Route("GetEmptyLocation")]
+    [TypeFilter(typeof(ThrottleFilter), Arguments = new object[] { 5 })]
+    public async Task<DtLocationInfo> GetEmptyLocation(string roadWay)
+    {
+        return await Service.GetEmptyLocation(roadWay);
+    }
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskExecuteDetailController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskExecuteDetailController.cs
new file mode 100644
index 0000000..747b8e9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/TaskExecuteDetailController.cs
@@ -0,0 +1,20 @@
+锘縰sing Microsoft.AspNetCore.Mvc;
+using WIDESEA_BusinessServices;
+using WIDESEA_Core.BaseController;
+using WIDESEA_IBusinessServices;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Controllers.Task
+{
+    [Route("api/[controller]")]
+    [ApiController]
+    public class TaskExecuteDetailController : ApiBaseController<IDt_TaskExecuteDetailService, Dt_TaskExecuteDetail>
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        public TaskExecuteDetailController(IDt_TaskExecuteDetailService service, IHttpContextAccessor httpContextAccessor) : base(service)
+        {
+            _httpContextAccessor = httpContextAccessor;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/Task_HtyController.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/Task_HtyController.cs
new file mode 100644
index 0000000..e35458d
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Task/Task_HtyController.cs
@@ -0,0 +1,25 @@
+锘縰sing WIDESEA_DTO;
+
+namespace WIDESEA_WMSServer.Controllers.Task;
+
+/// <summary>
+/// 浠诲姟鎿嶄綔鎺ュ彛
+/// </summary>
+[Route("api/Task_Hty")]
+[ApiController]
+public class Task_HtyController : ApiBaseController<IDt_Task_HtyService, Dt_Task_Hty>
+{
+    private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly IDt_Task_HtyService _task_HtyService;
+    private readonly ILocationInfoService _locationService;
+
+    public Task_HtyController(IDt_Task_HtyService task_HtyService,
+        IHttpContextAccessor httpContextAccessor,
+        ILocationInfoService locationService) : base(task_HtyService)
+    {
+        _httpContextAccessor = httpContextAccessor;
+        _task_HtyService = task_HtyService;
+        _locationService = locationService;
+    }
+
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs
new file mode 100644
index 0000000..2892fb3
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperConfig.cs
@@ -0,0 +1,18 @@
+锘縰sing AutoMapper;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    /// <summary>
+    /// 闈欐�佸叏灞� AutoMapper 閰嶇疆鏂囦欢
+    /// </summary>
+    public class AutoMapperConfig
+    {
+        public static MapperConfiguration RegisterMappings()
+        {
+            return new MapperConfiguration(cfg =>
+            {
+                cfg.AddProfile(new CustomProfile());
+            });
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs
new file mode 100644
index 0000000..0e51421
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutoMapperSetup.cs
@@ -0,0 +1,16 @@
+锘縩amespace WIDESEA_WMSServer.Filter
+{
+    /// <summary>
+    /// Automapper 鍚姩鏈嶅姟
+    /// </summary>
+    public static class AutoMapperSetup
+    {
+        public static void AddAutoMapperSetup(this IServiceCollection services)
+        {
+            if (services == null) throw new ArgumentNullException(nameof(services));
+
+            services.AddAutoMapper(typeof(AutoMapperConfig));
+            AutoMapperConfig.RegisterMappings();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs
new file mode 100644
index 0000000..f10530b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/AutofacPropertityModuleReg.cs
@@ -0,0 +1,17 @@
+锘縰sing Autofac;
+using Microsoft.AspNetCore.Mvc;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    public class AutofacPropertityModuleReg : Autofac.Module
+    {
+        protected override void Load(ContainerBuilder builder)
+        {
+            var controllerBaseType = typeof(ControllerBase);
+            builder.RegisterAssemblyTypes(typeof(Program).Assembly)
+                .Where(t => controllerBaseType.IsAssignableFrom(t) && t != controllerBaseType)
+                .PropertiesAutowired();
+
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
new file mode 100644
index 0000000..59754ba
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/CustomProfile.cs
@@ -0,0 +1,26 @@
+锘縰sing Autofac.Builder;
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_DTO.System;
+using WIDESEA_DTO.WMS;
+using WIDESEA_Model.Models;
+
+namespace WIDESEA_WMSServer.Filter
+{
+    public class CustomProfile : Profile
+    {
+        /// <summary>
+        /// 閰嶇疆鏋勯�犲嚱鏁帮紝鐢ㄦ潵鍒涘缓鍏崇郴鏄犲皠
+        /// </summary>
+        public CustomProfile() 
+        {
+            CreateMap<Sys_Menu, MenuDTO>();
+            CreateMap<Dt_Task, Dt_Task_Hty>();
+            CreateMap<Dt_Task, WMSTaskDTO>();
+        }
+    }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs
new file mode 100644
index 0000000..9d1ab3b
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Filter/ThrottleFilter.cs
@@ -0,0 +1,74 @@
+锘縰sing Microsoft.AspNetCore.Mvc.Filters;
+using System.Collections.Concurrent;
+using System.Text.Json;
+
+public class ThrottleFilter : IAsyncActionFilter
+{
+    private static readonly ConcurrentDictionary<string, DateTime> _lastExecutionTimes = new ConcurrentDictionary<string, DateTime>();
+    private readonly int _intervalInSeconds;
+
+    public ThrottleFilter(int intervalInSeconds)
+    {
+        _intervalInSeconds = intervalInSeconds;
+    }
+
+    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
+    {
+        var actionName = context.ActionDescriptor.DisplayName;
+
+        var parameterString = GenerateParameterString(context.ActionArguments);
+        var key = $"{actionName}_{parameterString}";
+
+        if (_lastExecutionTimes.TryGetValue(key, out var lastExecutionTime))
+        {
+            var elapsedTime = DateTime.Now - lastExecutionTime;
+            if (elapsedTime.TotalSeconds < _intervalInSeconds)
+            {
+                context.Result = new OkObjectResult(new WebResponseContent().Error("璇锋眰杩囦簬棰戠箒锛岃绋嶅悗鍐嶈瘯"));
+                return;
+            }
+        }
+
+        _lastExecutionTimes[key] = DateTime.Now;
+        await next();
+    }
+
+    private string GenerateParameterString(IDictionary<string, object> arguments)
+    {
+        if (arguments == null || arguments.Count == 0)
+        {
+            return "";
+        }
+
+        var paramStrings = new List<string>();
+        foreach (var argument in arguments)
+        {
+            var key = argument.Key;
+            var value = argument.Value;
+            string valueString;
+
+            if (value == null)
+            {
+                valueString = "null";
+            }
+            else if (IsSimpleType(value.GetType()))
+            {
+                valueString = value.ToString();
+            }
+            else
+            {
+                valueString = JsonSerializer.Serialize(value);
+            }
+
+            paramStrings.Add($"{key}={valueString}");
+        }
+
+        return string.Join("&", paramStrings);
+    }
+
+    // 鍒ゆ柇绫诲瀷鏄惁涓虹畝鍗曠被鍨�
+    private bool IsSimpleType(Type type)
+    {
+        return type.IsPrimitive || type == typeof(string) || type == typeof(decimal);
+    }
+}
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs
new file mode 100644
index 0000000..3965c89
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/GlobalUsing.cs
@@ -0,0 +1,14 @@
+锘縢lobal using WIDESEA_Core.BaseController;
+global using WIDESEA_Model.Models;
+global using Microsoft.AspNetCore.Mvc;
+global using Microsoft.AspNetCore.Authorization;
+global using WIDESEA_Core;
+global using WIDESEA_IStorageBasicService;
+global using WIDESEA_IStorageTaskServices;
+global using WIDESEA_Core.Helper;
+global using WIDESEA_IServices;
+global using WIDESEA_DTO.System;
+global using WIDESEA_Model.Models.System;
+global using WIDESEA_Core.Authorization;
+global using WIDESEA_Core.Utilities;
+global using WIDESEA_Model;
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
new file mode 100644
index 0000000..0a76ff2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs
@@ -0,0 +1,140 @@
+using Autofac;
+using Autofac.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Mvc.Controllers;
+using Microsoft.Extensions.DependencyInjection.Extensions;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+using System.Reflection;
+using System.Text;
+using WIDESEA_Core.Core;
+using WIDESEA_Core.Extensions;
+using WIDESEA_Core.Filter;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Middlewares;
+using WIDESEA_StorageTaskServices;
+using WIDESEA_WMSServer.Filter;
+using WIDESEAWCS_Server.HostedService;
+
+var builder = WebApplication.CreateBuilder(args);
+if (!HslCommunication.Authorization.SetAuthorizationCode("95f1611d-633c-46ea-b03a-38ede1629f74"))
+{
+    ConsoleHelper.WriteErrorLine("授权失败!当前程序只能使用24小时!");
+}
+else
+    ConsoleHelper.WriteSuccessLine("授权成功!");
+builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureContainer<ContainerBuilder>(builder =>
+{
+    builder.RegisterModule(new AutofacModuleRegister());//带有接口层的服务注入
+    builder.RegisterModule<AutofacPropertityModuleReg>();//
+}).ConfigureAppConfiguration((hostingContext, config) =>
+{
+    hostingContext.Configuration.ConfigureApplication();
+    config.Sources.Clear();
+    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
+}); ;
+builder.ConfigureApplication();
+
+// 2、配置服务
+builder.Services.AddSingleton(new AppSettings(builder.Configuration));//注册
+builder.Services.AddAllOptionRegister();//读取配置文件
+builder.Services.AddMemoryCacheSetup();//缓存
+builder.Services.AddSqlsugarSetup();//SqlSugar 启动服务
+builder.Services.AddInitializationHostServiceSetup();//应用初始化服务注入
+builder.Services.AddDbSetup();//Db 启动服务
+
+
+builder.Services.AddAutoMapperSetup();
+
+builder.Services.AddCorsSetup();
+builder.Services.AddMiniProfilerSetup();
+
+builder.Services.AddSwaggerSetup();
+
+builder.Services.AddJobSetup();//任务调度 启动服务
+
+builder.Services.AddHttpContextSetup();
+
+ConsoleHelper.WriteSuccessLine("注册WebSocket");
+builder.Services.AddWebSocketSetup();
+
+builder.Services.AddMvc(options =>
+{
+    options.Filters.Add(typeof(ApiAuthorizeFilter));
+    
+});
+
+builder.Services.AddAuthorizationSetup();
+
+builder.Services.AddIpPolicyRateLimitSetup(builder.Configuration);//IPLimit限流 启动服务
+
+builder.Services.AddScoped<UseServiceDIAttribute>();
+
+builder.Services.AddSession();
+
+builder.Services.AddHttpClient();
+
+builder.Services.AddControllers(o =>
+{
+    o.Filters.Add(typeof(GlobalExceptionsFilter));//全局异常
+    
+})
+.AddNewtonsoftJson(options =>
+{
+    options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;
+    //options.SerializerSettings.ContractResolver = new DefaultContractResolver();
+    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
+    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
+    options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
+    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
+    options.SerializerSettings.Converters.Add(new StringEnumConverter());
+});
+builder.Services.AddEndpointsApiExplorer();
+
+builder.Services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
+Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
+
+builder.Services.AddSwaggerGen(c =>
+{
+    // 启用XML注解
+    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
+    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
+    if (File.Exists(xmlPath))
+    {
+        c.IncludeXmlComments(xmlPath);
+    }
+});
+
+builder.Services.AddHostedService<MyBackgroundService>();
+
+builder.Services.AddSingleton<PrintStatusContainer>();
+
+var app = builder.Build();
+
+// 3、配置中间件
+app.UseMiniProfiler();//性能分析器
+app.ConfigureApplication();//配置文件
+app.UseApplicationSetup();//启动配置
+app.UseSession();
+
+app.UseSwaggerMiddle(() => Assembly.GetExecutingAssembly().GetManifestResourceStream("WIDESEA_WMSServer.index.html"));
+
+
+app.UseIpLimitMiddle();
+app.UseApiLogMiddleware();
+
+
+app.UseCors(AppSettings.app(new string[] { "Cors", "PolicyName" }));
+
+app.UseStaticFiles();
+app.UseCookiePolicy();
+app.UseStatusCodePages();
+
+app.UseRouting();
+
+app.UseAuthentication();
+app.UseAuthorization();
+
+app.MapControllers();
+
+app.Run();
+
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..1a8c396
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,19 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!-- https://go.microsoft.com/fwlink/?LinkID=208121. -->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>bin\Debug\net6.0\publish\</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+    <SiteUrlToLaunchAfterPublish />
+    <TargetFramework>net6.0</TargetFramework>
+    <ProjectGuid>d81a65b5-47d1-40c1-8fde-7d24ff003f51</ProjectGuid>
+    <SelfContained>false</SelfContained>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml
new file mode 100644
index 0000000..588f952
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile1.pubxml
@@ -0,0 +1,17 @@
+锘�<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <DeleteExistingFiles>false</DeleteExistingFiles>
+    <ExcludeApp_Data>false</ExcludeApp_Data>
+    <LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
+    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
+    <LastUsedPlatform>Any CPU</LastUsedPlatform>
+    <PublishProvider>FileSystem</PublishProvider>
+    <PublishUrl>D:\2025骞�7鏈�4鏃�</PublishUrl>
+    <WebPublishMethod>FileSystem</WebPublishMethod>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile2.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile2.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile3.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile3.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile3.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile4.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile4.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile4.pubxml
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile5.pubxml
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/Properties/PublishProfiles/FolderProfile5.pubxml
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/PublishProfiles/FolderProfile5.pubxml
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json
new file mode 100644
index 0000000..16b63a2
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Properties/launchSettings.json
@@ -0,0 +1,31 @@
+锘縶
+  "$schema": "https://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:39740",
+      "sslPort": 0
+    }
+  },
+  "profiles": {
+    "WIDESEA_WMSServer": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      //"launchUrl": "swagger",
+      "applicationUrl": "http://localhost:5230",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      //"launchUrl": "swagger",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj
new file mode 100644
index 0000000..a339753
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/WIDESEA_WMSServer.csproj
@@ -0,0 +1,44 @@
+锘�<Project Sdk="Microsoft.NET.Sdk.Web">
+
+  <PropertyGroup>
+    <TargetFramework>net6.0</TargetFramework>
+    <Nullable>enable</Nullable>
+    <ImplicitUsings>enable</ImplicitUsings>
+    <GenerateDocumentationFile>True</GenerateDocumentationFile>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+    <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+  </PropertyGroup>
+
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+    <NoWarn>1701;1702;1591;1573;1570</NoWarn>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <Content Remove="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
+  </ItemGroup>
+
+	<ItemGroup>
+		<None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_Tenant.tsv" />
+		<None Include="wwwroot\WIDESEA_DB.DBSeed.Json\Sys_User.tsv" />
+	</ItemGroup>
+
+	<ItemGroup>
+		<None Remove="index.html" />
+	</ItemGroup>
+	
+	<ItemGroup>
+		<EmbeddedResource Include="index.html" />
+	</ItemGroup>
+	
+	<ItemGroup>
+	  <ProjectReference Include="..\WIDESEA_BusinessServices\WIDESEA_BusinessServices.csproj" />
+	  <ProjectReference Include="..\WIDESEA_Cache\WIDESEA_Cache.csproj" />
+	  <ProjectReference Include="..\WIDESEA_OrderServices\WIDESEA_OrderServices.csproj" />
+	  <ProjectReference Include="..\WIDESEA_Services\WIDESEA_Services.csproj" />
+	  <ProjectReference Include="..\WIDESEA_IServices\WIDESEA_IServices.csproj" />
+	  <ProjectReference Include="..\WIDESEA_StorageBasicServices\WIDESEA_StorageBasicServices.csproj" />
+	  <ProjectReference Include="..\WIDESEA_StorageTaskServices\WIDESEA_StorageTaskServices.csproj" />
+	</ItemGroup>
+</Project>
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/appsettings.Development.json
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.Development.json
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
new file mode 100644
index 0000000..1a73470
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -0,0 +1,30 @@
+{
+  "Logging": {
+    "LogLevel": {
+      "Default": "Information",
+      "Microsoft.AspNetCore": "Warning"
+    }
+  },
+  "dics": "taskType,taskState,operateTypeEnum,StatusChangeType,LocationState,StockStateEmun,EnableEnum,OrderStateEmun,OrderTypeEmun,OrderCreateTypeEmun,InventoryStatus",
+  "AllowedHosts": "*",
+  "urls": "http://*:5000",
+  "MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
+  //杩炴帴瀛楃涓�
+  //"DBType": "MySql",
+  //"DBType": "SqlServer",
+  //"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
+  "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_FG;User ID=sa;Password=P@ssw0rd;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultipleActiveResultSets=True",
+  //璺ㄥ煙
+  "Cors": {
+    "PolicyName": "CorsIpAccess", //绛栫暐鍚嶇О
+    "EnableAllIPs": true, //褰撲负true鏃讹紝寮�鏀炬墍鏈塈P鍧囧彲璁块棶銆�
+    // 鏀寔澶氫釜鍩熷悕绔彛锛屾敞鎰忕鍙e彿鍚庝笉瑕佸甫/鏂滄潌锛氭瘮濡俵ocalhost:8000/锛屾槸閿欑殑
+    // 娉ㄦ剰锛宧ttp://127.0.0.1:1818 鍜� http://localhost:1818 鏄笉涓�鏍风殑
+    "IPs": "http://127.0.0.1:8080,http://localhost:8080,http://127.0.0.1:8081,http://localhost:8081"
+  },
+  "ApiLogIgnore": "get,query,download,upload,template",
+  "ApiName": "WIDESEA",
+  "ExpMinutes": 120,
+  "WebSocketEnable": true,
+  "WebSocketPort": 9004
+}
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html
new file mode 100644
index 0000000..4a30502
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/index.html
@@ -0,0 +1,124 @@
+锘�
+<!--1銆佺増鏈彿瑕佷笌nuget鍖呬竴鑷达紱2銆乮d涓嶈兘涓虹┖-->
+<script async="async" id="mini-profiler" src="/profiler/includes.min.js?v=4.3.8+1120572909" data-version="4.3.8+1120572909" data-path="/profiler/" data-current-id="0d7e468e-0bb5-4c81-90fc-91fd1543640a" data-ids="0d7e468e-0bb5-4c81-90fc-91fd1543640a" data-position="Left" data-scheme="Light" data-authorized="true" data-children="true" data-max-traces="15" data-toggle-shortcut="Alt+P" data-trivial-milliseconds="2.0" data-ignored-duplicate-execute-types="Open,OpenAsync,Close,CloseAsync"></script>
+
+<!-- HTML for static distribution bundle build -->
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <!--鏋侀�熸ā寮�-->
+    <meta name="renderer" content="webkit" /> 
+    <meta name="force-rendering" content="webkit" />
+    <title>%(DocumentTitle)</title>
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <link rel="stylesheet" type="text/css" href="./swagger-ui.css">
+    <link rel="icon" type="image/png" href="./logo/favicon-32x32.png" sizes="32x32" />
+    <script src="js/jquery-3.3.1.min.js"></script>
+    <style>
+
+        html {
+            box-sizing: border-box;
+            overflow-y: scroll;
+        }
+
+        *,
+        *:before,
+        *:after {
+            box-sizing: inherit;
+        }
+
+        body {
+            margin: 0;
+            background: #fafafa;
+        }
+
+        .qqgroup {
+            position: absolute;
+            top: 67px;
+            right: 10px;
+        }
+
+        .info {
+            float: left;
+        }
+
+        .download-contents {
+            display: none;
+        }
+    </style>
+    %(HeadContent)
+</head>
+<body>
+    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;width:0;height:0">
+        <defs>
+            <symbol viewBox="0 0 20 20" id="unlocked">
+                <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="locked">
+                <path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="close">
+                <path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="large-arrow">
+                <path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z" />
+            </symbol>
+            <symbol viewBox="0 0 20 20" id="large-arrow-down">
+                <path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z" />
+            </symbol>
+
+            <symbol viewBox="0 0 24 24" id="jump-to">
+                <path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7z" />
+            </symbol>
+            <symbol viewBox="0 0 24 24" id="expand">
+                <path d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z" />
+            </symbol>
+        </defs>
+    </svg>
+    <div id="swagger-ui"></div>
+    <div id="footer" style="text-align: center;margin-bottom: 10px;">
+        Copyright 漏 2024-2030 WIDESEA.Core
+
+        <br><span id="poweredby">Powered by .NET 6.0.28</span>
+    </div>
+    <!-- Workaround for https://github.com/swagger-api/swagger-editor/issues/1371 -->
+    <script>
+        if (window.navigator.userAgent.indexOf("Edge") > -1) {
+            console.log("Removing native Edge fetch in favor of swagger-ui's polyfill")
+            window.fetch = undefined;
+        }
+    </script>
+    <script src="./swagger-ui-bundle.js"></script>
+    <script src="./swagger-ui-standalone-preset.js"></script>
+    <script>
+        var int = null;
+        window.onload = function () {
+            var configObject = JSON.parse('%(ConfigObject)');
+            var oauthConfigObject = JSON.parse('%(OAuthConfigObject)');
+
+            // Apply mandatory parameters
+            configObject.dom_id = "#swagger-ui";
+            configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset];
+            configObject.layout = "StandaloneLayout";
+
+            // If oauth2RedirectUrl isn't specified, use the built-in default
+            if (!configObject.hasOwnProperty("oauth2RedirectUrl"))
+                configObject.oauth2RedirectUrl = window.location.href.replace("index.html", "oauth2-redirect.html");
+
+            // Build a system
+            const ui = SwaggerUIBundle(configObject);
+
+            // Apply OAuth config
+            ui.initOAuth(oauthConfigObject);
+
+            $(".link img").attr("src", "./logo/favicon-32x32.png");
+
+            $('#swagger-ui').after("<div class='qqgroup'><img src='https://img.neters.club/doc/wechatgongzhonghao.png' alt='QQ浜岀淮鐮�' style='width: 150px;'><div style=\"color: #4990e2;\"><a href=\"../allservices\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"link\">1銆佹煡鐪嬫墍鏈変緷璧栨敞鍐岀殑鏈嶅姟</a><br><a href=\"../ui\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"link\">2銆佹煡鐪嬪墠绔厤濂楅〉闈�</a></div></div><div style='clear: both;'></div>");
+
+        }
+
+
+    </script>
+</body>
+</html>
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv
new file mode 100644
index 0000000..2efa8fb
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Menu.tsv
@@ -0,0 +1,146 @@
+[
+  {
+    "MenuName": "鐢ㄦ埛绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-user",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": null,
+    "OrderNo": 4000,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "鐢ㄦ埛绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_User",
+    "ParentId": 1,
+    "Url": "/Sys_User",
+    "OrderNo": 2000,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "鏉冮檺绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"}]",
+    "Icon": "ivu-icon ivu-icon-ios-boat",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 1,
+    "Url": "/permission",
+    "OrderNo": 1000,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "瑙掕壊绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Role",
+    "ParentId": 1,
+    "Url": "/Sys_Role",
+    "OrderNo": 900,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "绯荤粺璁剧疆",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-setting",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 0,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "鑿滃崟璁剧疆",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Menu",
+    "ParentId": 5,
+    "Url": "/sysmenu",
+    "OrderNo": 10,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "涓嬫媺妗嗙粦瀹氳缃�",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鏂板缓\",\"value\":\"Add\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"缂栬緫\",\"value\":\"Update\"},{\"text\":\"瀵煎叆\",\"value\":\"Import\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Dictionary",
+    "ParentId": 5,
+    "Url": "/Sys_Dictionary",
+    "OrderNo": 10,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "鏃ュ織绠$悊",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"}]",
+    "Icon": "el-icon-date",
+    "Description": null,
+    "Enable": 1,
+    "TableName": "/",
+    "ParentId": 0,
+    "Url": "/",
+    "OrderNo": 500,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  },
+  {
+    "MenuName": "鎺ュ彛鏃ュ織",
+    "Auth": "[{\"text\":\"鏌ヨ\",\"value\":\"Search\"},{\"text\":\"鍒犻櫎\",\"value\":\"Delete\"},{\"text\":\"瀵煎嚭\",\"value\":\"Export\"}]",
+    "Icon": null,
+    "Description": null,
+    "Enable": 1,
+    "TableName": "Sys_Log",
+    "ParentId": 8,
+    "Url": "/Sys_Log/Manager",
+    "OrderNo": 0,
+    "MenuType": 99,
+    "Creater": "admin",
+    "CreateDate": null,
+    "Modifier": null,
+    "ModifyDate": null
+  }
+]
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Tenant.tsv b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Tenant.tsv
new file mode 100644
index 0000000..84c3e59
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_Tenant.tsv
@@ -0,0 +1,3 @@
+[
+	
+]
\ No newline at end of file
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv
new file mode 100644
index 0000000..1fda989
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/WIDESEA_DB.DBSeed.Json/Sys_User.tsv
@@ -0,0 +1,26 @@
+[
+	{
+		"UserName": "admin",
+		"Role_Id": "1",
+		"RoleName": "瓒呯骇绠$悊鍛�",
+		"PhoneNo": "",
+		"Remark": "",
+		"UserPwd": "j79rYYvCz4vdhcboB1Ausg==",
+		"UserTrueName": "瓒呯骇绠$悊鍛�",
+		"DeptName": "",
+		"Dept_Id": "0",
+		"Email": "",
+		"Enable": "1",
+		"Gender": "1",
+		"HeadImageUrl": "",
+		"LastModifyPwdDate": "2024-04-16 19:58:55",
+		"Address": "绯荤粺鏈嶅姟鍣�",
+		"AuditDate": "2024-04-16 00:54:06",
+		"AuditStatus": "1",
+		"Auditor": "瓒呯骇绠$悊鍛�",
+		"Token": "",
+		"SystemType": "1",
+		"Creater": "绯荤粺",
+		"TenantId": 0
+	}
+]
\ No newline at end of file
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/css/style.css
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/css/style.css
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/anime.min.js
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/anime.min.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/jquery-3.3.1.min.js
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/jquery-3.3.1.min.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/site.js
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/site.js
diff --git a/Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js
similarity index 100%
copy from Code Management/WIDESEA_WCSServer/WIDESEAWCS_Server/wwwroot/js/swaggerdoc.js
copy to Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/js/swaggerdoc.js
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html
new file mode 100644
index 0000000..f1340e9
--- /dev/null
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/wwwroot/swg-login.html
@@ -0,0 +1,130 @@
+锘�<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8" />
+    <title>鐧诲綍 - 鎺ュ彛鏂囨。</title>
+    <!--<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>-->
+    <script src="js/jquery-1.8.3.min.js"></script>
+    <link type="text/css" href="css/style.css" rel="stylesheet" />
+    <script src="js/anime.min.js"></script>
+
+</head>
+<body>
+    <div class="page">
+        <div class="container">
+            <div class="left">
+                <div></div>
+
+                <div class="login"><img src="/logo.jpg.jpg" height="30" alt="Alternate Text" /> 鎺ュ彛鏂囨。</div>
+                <div class="eula">娆㈣繋浣跨敤锛�</div>
+                <!--<div class="eula">鐢ㄦ埛鍚嶏細admin锛屽瘑鐮侊細admin</div>-->
+            </div>
+            <div class="right">
+                <svg viewBox="0 0 320 300">
+                    <defs>
+                        <linearGradient inkscape:collect="always"
+                                        id="linearGradient"
+                                        x1="13"
+                                        y1="193.49992"
+                                        x2="307"
+                                        y2="193.49992"
+                                        gradientUnits="userSpaceOnUse">
+                            <stop style="stop-color:#ff00ff;"
+                                  offset="0"
+                                  id="stop876" />
+                            <stop style="stop-color:#ff0000;"
+                                  offset="1"
+                                  id="stop878" />
+                        </linearGradient>
+                    </defs>
+                    <path d="m 40,120.00016 239.99984,-3.2e-4 c 0,0 24.99263,0.79932 25.00016,35.00016 0.008,34.20084 -25.00016,35 -25.00016,35 h -239.99984 c 0,-0.0205 -25,4.01348 -25,38.5 0,34.48652 25,38.5 25,38.5 h 215 c 0,0 20,-0.99604 20,-25 0,-24.00396 -20,-25 -20,-25 h -190 c 0,0 -20,1.71033 -20,25 0,24.00396 20,25 20,25 h 168.57143" />
+                </svg>
+                <div class="form">
+                    <label for="email">鐢ㄦ埛鍚�</label>
+                    <input type="email" id="email">
+                    <label for="password">瀵嗙爜</label>
+                    <input type="password" id="password">
+                    <input type="submit" id="submit" onclick="submit()" value="鐧� 褰�">
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+        var current = null;
+        document.querySelector('#email').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: 0,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '240 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+        document.querySelector('#password').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: -336,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '240 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+        document.querySelector('#submit').addEventListener('focus', function (e) {
+            if (current) current.pause();
+            current = anime({
+                targets: 'path',
+                strokeDashoffset: {
+                    value: -730,
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                },
+                strokeDasharray: {
+                    value: '530 1386',
+                    duration: 700,
+                    easing: 'easeOutQuart'
+                }
+            });
+        });
+        function submit() {
+            let postdata = {
+                "name": $("#email").val(),
+                "pwd": $("#password").val(),
+            };
+            if (!(postdata.name && postdata.pwd)) {
+                alert('鍙傛暟涓嶆纭�');
+                return
+            }
+            $.ajax({
+                url: "/api/User/swgLogin",
+                type: "POST",
+                contentType: "application/json; charset=utf-8",
+                data: JSON.stringify(postdata),
+                dataType: 'json',
+                success: function (data) {
+                    if (data?.result) {
+                        window.location.href = "/index.html";
+                    } else {
+                        alert('鍙傛暟涓嶆纭�');
+                    }
+                }
+            });
+        }
+    </script>
+
+</body>
+</html>
\ No newline at end of file

--
Gitblit v1.9.3